Make sure listeners are immutable 84/109184/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 7 Dec 2023 02:38:45 +0000 (03:38 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 7 Dec 2023 11:26:46 +0000 (12:26 +0100)
We guarantee DOMNotificationRouter.listeners to be immutable. Make sure
the field has the correct type to prevent confusion.

Change-Id: Ia4b86c00bdd0517182d4ec0ad63b7f903d3c4ee7
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMNotificationRouter.java
dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMNotificationRouterTest.java

index 86b652475310a6a5e1ffb37782fc782dfa7634cc..0f0633c7be04d86e2360fe21a01def563f285534 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.mdsal.dom.broker;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMultimap;
-import com.google.common.collect.Multimap;
 import com.google.common.collect.Multimaps;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -114,7 +113,7 @@ public class DOMNotificationRouter implements AutoCloseable, DOMNotificationPubl
     private final ScheduledThreadPoolExecutor observer;
     private final ExecutorService executor;
 
-    private volatile Multimap<Absolute, Reg<?>> listeners = ImmutableMultimap.of();
+    private volatile ImmutableMultimap<Absolute, Reg<?>> listeners = ImmutableMultimap.of();
 
     @Inject
     public DOMNotificationRouter(final int maxQueueCapacity) {
@@ -190,7 +189,7 @@ public class DOMNotificationRouter implements AutoCloseable, DOMNotificationPubl
      *
      * @param newListeners is used to notify listenerTypes changed
      */
-    private void replaceListeners(final Multimap<Absolute, Reg<?>> newListeners) {
+    private void replaceListeners(final ImmutableMultimap<Absolute, Reg<?>> newListeners) {
         listeners = newListeners;
         notifyListenerTypesChanged(newListeners.keySet());
     }
@@ -289,7 +288,7 @@ public class DOMNotificationRouter implements AutoCloseable, DOMNotificationPubl
     }
 
     @VisibleForTesting
-    Multimap<Absolute, ?> listeners() {
+    ImmutableMultimap<Absolute, ?> listeners() {
         return listeners;
     }
 
index 5e27f8c1110fb40404bdb4313a701fa692d75696..0069f192e2b0a0023f800b4045943f73b31a3517 100644 (file)
@@ -19,7 +19,6 @@ import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.opendaylight.mdsal.dom.broker.TestUtils.TEST_CHILD;
 
-import com.google.common.collect.Multimap;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -78,7 +77,7 @@ public class DOMNotificationRouterTest {
         final DOMNotificationListener domNotificationListener = new TestListener(latch);
         final DOMNotificationRouter domNotificationRouter = new DOMNotificationRouter(1024);
 
-        Multimap<Absolute, ?> listeners = domNotificationRouter.listeners();
+        var listeners = domNotificationRouter.listeners();
 
         assertTrue(listeners.isEmpty());
         assertNotNull(domNotificationRouter.registerNotificationListener(domNotificationListener,