Make recoverableListenerMap maintain a queue of recoverableListeners.
authorFaseela K <faseela.k@ericsson.com>
Wed, 14 Mar 2018 16:42:35 +0000 (22:12 +0530)
committerMichael Vorburger <vorburger@redhat.com>
Wed, 14 Mar 2018 18:57:33 +0000 (18:57 +0000)
This was a review comment from Michael which was not addressed on the
original patch

Change-Id: I14b7d9f4a92a4439cae40b4c4b23b7972f5468b4
Signed-off-by: Faseela K <faseela.k@ericsson.com>
api/src/main/java/org/opendaylight/genius/srm/ServiceRecoveryRegistry.java
impl/src/main/java/org/opendaylight/genius/srm/impl/ServiceRecoveryRegistryImpl.java

index ea1bab22af0b870052c7736e04649ea81c99e19a..a045a85814890ab9917de74611e5e01708c94641 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.genius.srm;
 
-import java.util.List;
+import java.util.Queue;
 
 public interface ServiceRecoveryRegistry {
 
@@ -18,5 +18,5 @@ public interface ServiceRecoveryRegistry {
 
     void removeRecoverableListener(String serviceName, RecoverableListener recoverableListener);
 
-    List<RecoverableListener> getRecoverableListeners(String serviceName);
+    Queue<RecoverableListener> getRecoverableListeners(String serviceName);
 }
\ No newline at end of file
index 0cc256f93b9dfc6d82140ba4e4f3ee3b927b4e67..55cdfdf93e1d0050c2dc5fc4614598da21177f93 100644 (file)
@@ -7,11 +7,10 @@
  */
 package org.opendaylight.genius.srm.impl;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
 import java.util.Map;
+import java.util.Queue;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentLinkedQueue;
 import javax.inject.Singleton;
 
 import org.opendaylight.genius.srm.RecoverableListener;
@@ -29,8 +28,8 @@ public class ServiceRecoveryRegistryImpl implements ServiceRecoveryRegistry {
 
     private final Map<String, ServiceRecoveryInterface> serviceRecoveryRegistry = new ConcurrentHashMap<>();
 
-    private final Map<String, List<RecoverableListener>> recoverableListenersMap =
-            new ConcurrentHashMap<String, List<RecoverableListener>>();
+    private final Map<String, Queue<RecoverableListener>> recoverableListenersMap =
+            new ConcurrentHashMap<>();
 
     @Override
     public void registerServiceRecoveryRegistry(String entityName,
@@ -41,13 +40,9 @@ public class ServiceRecoveryRegistryImpl implements ServiceRecoveryRegistry {
 
     @Override
     public synchronized void addRecoverableListener(String serviceName, final RecoverableListener recoverableListener) {
-        List<RecoverableListener> recoverableListeners = recoverableListenersMap.get(serviceName);
-        if (recoverableListeners == null) {
-            recoverableListeners = Collections.synchronizedList(new ArrayList<>());
-            recoverableListenersMap.put(serviceName, recoverableListeners);
-        }
-
-        recoverableListeners.add(recoverableListener);
+        recoverableListenersMap
+                .computeIfAbsent(serviceName, k -> new ConcurrentLinkedQueue<>())
+                .add(recoverableListener);
     }
 
     @Override
@@ -58,7 +53,7 @@ public class ServiceRecoveryRegistryImpl implements ServiceRecoveryRegistry {
     }
 
     @Override
-    public List<RecoverableListener> getRecoverableListeners(String serviceName) {
+    public Queue<RecoverableListener> getRecoverableListeners(String serviceName) {
         return recoverableListenersMap.get(serviceName);
     }