This is an automated email from the ASF dual-hosted git repository.

amichai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/aries-rsa.git

commit 291b2c04c6811417d0813154f1c9998d74ebb6b8
Author: Amichai Rothman <[email protected]>
AuthorDate: Tue Mar 17 16:23:02 2026 +0200

    Add MultiMap.replace method
---
 .../apache/aries/rsa/topologymanager/importer/MultiMap.java   | 11 +++++++++--
 .../rsa/topologymanager/importer/TopologyManagerImport.java   |  4 ++--
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git 
a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/MultiMap.java
 
b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/MultiMap.java
index e6b47f8d..69d28428 100644
--- 
a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/MultiMap.java
+++ 
b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/MultiMap.java
@@ -34,18 +34,25 @@ import java.util.stream.Collectors;
  */
 public class MultiMap<K, V> {
 
-    private Map<K, Set<V>> map;
+    private final Map<K, Set<V>> map;
 
     public MultiMap() {
         map = new ConcurrentHashMap<>();
     }
 
     public void put(K key, V value) {
+        replace(key, null, value);
+    }
+
+    public void replace(K key, V oldValue, V newValue) {
         map.compute(key, (k, v) -> {
             if (v == null) {
                 v = new CopyOnWriteArraySet<>();
             }
-            v.add(value);
+            if (oldValue != null) {
+                v.remove(oldValue);
+            }
+            v.add(newValue);
             return v;
         });
     }
diff --git 
a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
 
b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
index 247d334c..3f5de4a4 100644
--- 
a/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
+++ 
b/topology-manager/src/main/java/org/apache/aries/rsa/topologymanager/importer/TopologyManagerImport.java
@@ -200,8 +200,8 @@ public class TopologyManagerImport implements 
EndpointEventListener, RemoteServi
                 importPossibilities.remove(filter, endpoint);
                 break;
             case EndpointEvent.MODIFIED:
-                importPossibilities.remove(filter, endpoint);
-                importPossibilities.put(filter, endpoint);
+                // new endpoint has same endpoint.id and equals old endpoint, 
but has updated properties
+                importPossibilities.replace(filter, endpoint, endpoint);
                 break;
         }
         synchronizeImportsAsync(filter);

Reply via email to