@@ -323,22 +323,31 @@ def getChannelLinks(self) -> list[Java_ItemChannelLink]:
323323 @_Tracing .javacall
324324 def linkChannel (self , channel_uid : str , link_config : dict [str , str ] = {}) -> Java_ItemChannelLink :
325325 uid = Java_ChannelUID (channel_uid )
326- link = Java_ItemChannelLink (self .getName (), uid , Configuration (link_config ))
326+ config = Configuration (link_config )
327+
327328 links = ITEM_CHANNEL_LINK_REGISTRY .getLinks (uid )
328- if len (links ) > 0 :
329- if not links [0 ].getConfiguration ().equals (link .getConfiguration ()):
330- ITEM_CHANNEL_LINK_REGISTRY .update (link )
331- else :
332- ITEM_CHANNEL_LINK_REGISTRY .add (link )
329+ if links .size () > 0 :
330+ for link in links :
331+ if link .getItemName () == self .getName ():
332+ if not link .getConfiguration ().equals (config ):
333+ ITEM_CHANNEL_LINK_REGISTRY .update (link )
334+ return link
335+
336+ link = Java_ItemChannelLink (self .getName (), uid , config )
337+ ITEM_CHANNEL_LINK_REGISTRY .add (link )
333338 return link
334339
335340 @_Tracing .javacall
336341 def unlinkChannel (self , channel_uid : str ) -> Java_ItemChannelLink :
337342 uid = Java_ChannelUID (channel_uid )
343+
338344 links = ITEM_CHANNEL_LINK_REGISTRY .getLinks (uid )
339- if len (links ) > 0 :
340- ITEM_CHANNEL_LINK_REGISTRY .remove (uid )
341- return links [0 ]
345+ if links .size () > 0 :
346+ for link in links :
347+ if link .getItemName () == self .getName ():
348+ ITEM_CHANNEL_LINK_REGISTRY .remove (link .getUID ())
349+ return link
350+
342351 raise NotFoundException ("Link {} not found" .format (channel_uid ))
343352
344353 def getPersistence (self , service_id : str = None ) -> 'ItemPersistence' :
0 commit comments