Make sure listeners are immutable 04/109204/1
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 14:22:59 +0000 (15:22 +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>
(cherry picked from commit 6278245ab37ad9764d4a88c337e8a87631d2c5c9)

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 e1575816b8954c5c78874e30f6af1c13a08779d0..41b1a4a26ca943afc9245f9aeca941ad5ebbba33 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;
@@ -115,7 +114,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) {
@@ -196,7 +195,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());
     }
@@ -305,7 +304,7 @@ public class DOMNotificationRouter implements AutoCloseable, DOMNotificationPubl
     }
 
     @VisibleForTesting
-    Multimap<Absolute, ?> listeners() {
+    ImmutableMultimap<Absolute, ?> listeners() {
         return listeners;
     }
 
index beca7c54e029756411cd845fbff7cb1eee62d2b9..a6269b944f9b5a7b602ca7653344a829409dfebc 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;
@@ -82,7 +81,7 @@ public class DOMNotificationRouterTest {
         final DOMNotificationListener domNotificationListener = new TestListener(latch);
         final DOMNotificationRouter domNotificationRouter = DOMNotificationRouter.create(1024);
 
-        Multimap<Absolute, ?> listeners = domNotificationRouter.listeners();
+        var listeners = domNotificationRouter.listeners();
 
         assertTrue(listeners.isEmpty());
         assertNotNull(domNotificationRouter.registerNotificationListener(domNotificationListener,