Fixup AbstractDOMStoreTreeChangePublisher 03/99503/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 27 Jan 2022 18:01:43 +0000 (19:01 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 27 Jan 2022 19:31:18 +0000 (20:31 +0100)
With DOMDataTreeChangeListener reporting lists, we need to adjust our
SPI to floow suite.

Change-Id: Ib3f5b98519e33ed28a3bfa276903c26e399ab9bd
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreTreeChangePublisher.java
dom/mdsal-dom-spi/src/main/java/module-info.java
dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisher.java
dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisherTest.java

index ff2c81db48bc5bf9d64959c997a9407875f407fa..4b1ace022cb7ca7dc9011bb02bb0a092b6ef6555 100644 (file)
@@ -9,7 +9,7 @@ package org.opendaylight.mdsal.dom.store.inmemory;
 
 import static com.google.common.base.Preconditions.checkState;
 
-import java.util.Collection;
+import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.ExecutorService;
 import org.eclipse.jdt.annotation.NonNull;
@@ -56,7 +56,7 @@ final class InMemoryDOMStoreTreeChangePublisher extends AbstractDOMStoreTreeChan
 
     @Override
     protected void notifyListener(final AbstractDOMDataTreeChangeListenerRegistration<?> registration,
-            final Collection<DataTreeCandidate> changes) {
+            final List<DataTreeCandidate> changes) {
         LOG.debug("Enqueueing candidates {} for registration {}", changes, registration);
         notificationManager.submitNotifications(registration, changes);
     }
@@ -85,7 +85,7 @@ final class InMemoryDOMStoreTreeChangePublisher extends AbstractDOMStoreTreeChan
                 // If we are listening on root of data tree we still get empty normalized node, root is always present,
                 // we should filter this out separately and notify it by 'onInitialData()' once.
                 // Otherwise, it is just a valid data node with empty value which also should be notified by
-                // "onDataTreeChanged(Collection<DataTreeCandidate>)".
+                // "onDataTreeChanged(List<DataTreeCandidate>)".
                 listener.onInitialData();
                 return reg;
             }
index 8de8b6f852813f2a7da4b44cf9dd14d8960eb213..2154c148ae67d9f709386be6ab039f9b670cb4b4 100644 (file)
@@ -14,6 +14,7 @@ module org.opendaylight.mdsal.dom.spi {
     requires transitive org.opendaylight.yangtools.yang.model.api;
     requires transitive org.opendaylight.yangtools.yang.repo.api;
     requires transitive org.opendaylight.yangtools.yang.repo.spi;
+    requires com.google.common;
     requires org.opendaylight.yangtools.odlext.model.api;
     requires org.opendaylight.yangtools.util;
     requires org.opendaylight.yangtools.yang.data.api;
index d486237d54efd3d7e3ff27f8af504dbaaf44e525..a8f4b011a3c03e8630e90f6827360c1f52e75a2b 100644 (file)
@@ -8,19 +8,18 @@
 package org.opendaylight.mdsal.dom.spi.store;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Multimap;
 import com.google.common.collect.Multimaps;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.IdentityHashMap;
 import java.util.List;
-import java.util.Map;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener;
 import org.opendaylight.mdsal.dom.spi.AbstractDOMDataTreeChangeListenerRegistration;
 import org.opendaylight.mdsal.dom.spi.AbstractRegistrationTree;
 import org.opendaylight.mdsal.dom.spi.RegistrationTreeNode;
-import org.opendaylight.mdsal.dom.spi.RegistrationTreeSnapshot;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
@@ -45,7 +44,7 @@ public abstract class AbstractDOMStoreTreeChangePublisher
      * @param changes the list of DataTreeCandidate changes
      */
     protected abstract void notifyListener(@NonNull AbstractDOMDataTreeChangeListenerRegistration<?> registration,
-            @NonNull Collection<DataTreeCandidate> changes);
+            @NonNull List<DataTreeCandidate> changes);
 
     /**
      * Callback notifying the subclass that the specified registration is being
@@ -74,15 +73,13 @@ public abstract class AbstractDOMStoreTreeChangePublisher
             return false;
         }
 
-        try (RegistrationTreeSnapshot<AbstractDOMDataTreeChangeListenerRegistration<?>> snapshot
-                = takeSnapshot()) {
+        try (var snapshot = takeSnapshot()) {
             final List<PathArgument> toLookup = ImmutableList.copyOf(candidate.getRootPath().getPathArguments());
-            final Multimap<AbstractDOMDataTreeChangeListenerRegistration<?>, DataTreeCandidate> listenerChanges =
+            final ListMultimap<AbstractDOMDataTreeChangeListenerRegistration<?>, DataTreeCandidate> listenerChanges =
                     Multimaps.newListMultimap(new IdentityHashMap<>(), ArrayList::new);
             lookupAndNotify(toLookup, 0, snapshot.getRootNode(), candidate, listenerChanges);
 
-            for (Map.Entry<AbstractDOMDataTreeChangeListenerRegistration<?>, Collection<DataTreeCandidate>> entry:
-                    listenerChanges.asMap().entrySet()) {
+            for (var entry : Multimaps.asMap(listenerChanges).entrySet()) {
                 notifyListener(entry.getKey(), entry.getValue());
             }
 
index e101fd626894acea00da4f870219be1a57682ae1..f3b87f45bfa1977a0dae090c4940a7f9c8b42ed3 100644 (file)
@@ -13,7 +13,7 @@ import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Collection;
+import java.util.List;
 import org.junit.Test;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener;
 import org.opendaylight.mdsal.dom.spi.AbstractDOMDataTreeChangeListenerRegistration;
@@ -63,7 +63,7 @@ public class AbstractDOMStoreTreeChangePublisherTest extends AbstractDOMStoreTre
 
     @Override
     protected void notifyListener(final AbstractDOMDataTreeChangeListenerRegistration<?> registration,
-            final Collection<DataTreeCandidate> changes) {
+            final List<DataTreeCandidate> changes) {
         notifyInvoked = true;
     }