From: Robert Varga Date: Thu, 27 Jan 2022 18:01:43 +0000 (+0100) Subject: Fixup AbstractDOMStoreTreeChangePublisher X-Git-Tag: v9.0.0~59 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F03%2F99503%2F2;p=mdsal.git Fixup AbstractDOMStoreTreeChangePublisher With DOMDataTreeChangeListener reporting lists, we need to adjust our SPI to floow suite. Change-Id: Ib3f5b98519e33ed28a3bfa276903c26e399ab9bd Signed-off-by: Robert Varga --- diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreTreeChangePublisher.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreTreeChangePublisher.java index ff2c81db48..4b1ace022c 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreTreeChangePublisher.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreTreeChangePublisher.java @@ -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 changes) { + final List 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)". + // "onDataTreeChanged(List)". listener.onInitialData(); return reg; } diff --git a/dom/mdsal-dom-spi/src/main/java/module-info.java b/dom/mdsal-dom-spi/src/main/java/module-info.java index 8de8b6f852..2154c148ae 100644 --- a/dom/mdsal-dom-spi/src/main/java/module-info.java +++ b/dom/mdsal-dom-spi/src/main/java/module-info.java @@ -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; diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisher.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisher.java index d486237d54..a8f4b011a3 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisher.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisher.java @@ -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 changes); + @NonNull List changes); /** * Callback notifying the subclass that the specified registration is being @@ -74,15 +73,13 @@ public abstract class AbstractDOMStoreTreeChangePublisher return false; } - try (RegistrationTreeSnapshot> snapshot - = takeSnapshot()) { + try (var snapshot = takeSnapshot()) { final List toLookup = ImmutableList.copyOf(candidate.getRootPath().getPathArguments()); - final Multimap, DataTreeCandidate> listenerChanges = + final ListMultimap, DataTreeCandidate> listenerChanges = Multimaps.newListMultimap(new IdentityHashMap<>(), ArrayList::new); lookupAndNotify(toLookup, 0, snapshot.getRootNode(), candidate, listenerChanges); - for (Map.Entry, Collection> entry: - listenerChanges.asMap().entrySet()) { + for (var entry : Multimaps.asMap(listenerChanges).entrySet()) { notifyListener(entry.getKey(), entry.getValue()); } diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisherTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisherTest.java index e101fd6268..f3b87f45bf 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisherTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisherTest.java @@ -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 changes) { + final List changes) { notifyInvoked = true; }