Hide BindingReflections.getModuleInfo()
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / test / java / org / opendaylight / mdsal / binding / dom / adapter / ListInsertionDataChangeListenerTest.java
index 8a251b3ba6a2c9c537a0aef578c285ca2660a41c..c02d18407dbfd85321805c5221538d67ed74e4d9 100644 (file)
@@ -13,20 +13,16 @@ import static org.opendaylight.mdsal.binding.test.model.util.ListsBindingUtils.t
 import static org.opendaylight.mdsal.binding.test.model.util.ListsBindingUtils.topLevelList;
 import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION;
 
-import com.google.common.collect.ImmutableSet;
 import java.util.HashSet;
 import java.util.Objects;
 import java.util.Set;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType;
-import org.opendaylight.mdsal.binding.api.DataTreeModification;
-import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataTreeChangeListenerTest;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
+import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.two.level.list.TopLevelList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.two.level.list.TopLevelListBuilder;
@@ -45,7 +41,7 @@ public class ListInsertionDataChangeListenerTest extends AbstractDataTreeChangeL
 
     @Override
     protected Set<YangModuleInfo> getModuleInfos() throws Exception {
-        return ImmutableSet.of(BindingReflections.getModuleInfo(Top.class));
+        return Set.of(BindingRuntimeHelpers.getYangModuleInfo(Top.class));
     }
 
     @Before
@@ -62,110 +58,110 @@ public class ListInsertionDataChangeListenerTest extends AbstractDataTreeChangeL
         final TopLevelList topFoo = topLevelList(TOP_FOO_KEY);
 
         // Listener for TOP element
-        final TestListener<Top> topListener = createListener(CONFIGURATION, TOP,
-                added(TOP, top(topLevelList(TOP_FOO_KEY))), replaced(TOP, top(topFoo), top));
-
-        // Listener for all list items. This one should see Foo item deleted and Bar item added.
-        final TestListener<TopLevelList> allListener = createListener(CONFIGURATION, WILDCARDED,
-                added(TOP_FOO, topFoo), added(TOP_BAR, topBar), deleted(TOP_FOO, topFoo));
-
-        // Listener for all Foo item. This one should see only Foo item deleted.
-        final TestListener<TopLevelList> fooListener = createListener(CONFIGURATION, TOP_FOO,
-                added(TOP_FOO, topFoo), deleted(TOP_FOO, topFoo));
-
-        // Listener for bar list items.
-        final TestListener<TopLevelList> barListener = createListener(CONFIGURATION, TOP_BAR,
-                added(TOP_BAR, topBar));
-
-        ReadWriteTransaction writeTx = getDataBroker().newReadWriteTransaction();
-        writeTx.put(CONFIGURATION, TOP, top);
-        assertCommit(writeTx.commit());
-
-        topListener.verify();
-        allListener.verify();
-        fooListener.verify();
-        barListener.verify();
+        try (var topListener = createCollector(CONFIGURATION, TOP)) {
+            // Listener for all list items. This one should see Foo item deleted and Bar item added.
+            try (var allListener = createCollector(CONFIGURATION, WILDCARDED)) {
+                // Listener for all Foo item. This one should see only Foo item deleted.
+                try (var fooListener = createCollector(CONFIGURATION, TOP_FOO)) {
+                    // Listener for bar list items.
+                    try (var barListener = createCollector(CONFIGURATION, TOP_BAR)) {
+                        final var writeTx = getDataBroker().newWriteOnlyTransaction();
+                        writeTx.put(CONFIGURATION, TOP, top);
+                        assertCommit(writeTx.commit());
+
+                        barListener.verifyModifications(added(TOP_BAR, topBar));
+                    }
+                    fooListener.verifyModifications(added(TOP_FOO, topFoo), deleted(TOP_FOO, topFoo));
+                }
+                allListener.verifyModifications(
+                    added(TOP_FOO, topFoo),
+                    added(TOP_BAR, topBar),
+                    deleted(TOP_FOO, topFoo));
+            }
+            topListener.verifyModifications(
+                added(TOP, top(topLevelList(TOP_FOO_KEY))),
+                replaced(TOP, top(topFoo), top));
+        }
     }
 
     @Test
     public void mergeTopNodeSubtreeListeners() {
-        final TopLevelList topBar = topLevelList(TOP_BAR_KEY);
-        final TopLevelList topFoo = topLevelList(TOP_FOO_KEY);
-
-        final TestListener<Top> topListener = createListener(CONFIGURATION, TOP,
+        final var topBar = topLevelList(TOP_BAR_KEY);
+        final var topFoo = topLevelList(TOP_FOO_KEY);
+
+        try (var topListener = createCollector(CONFIGURATION, TOP)) {
+            try (var allListener = createCollector(CONFIGURATION, WILDCARDED)) {
+                try (var fooListener = createCollector(CONFIGURATION, TOP_FOO)) {
+                    try (var barListener = createCollector(CONFIGURATION, TOP_BAR)) {
+                        final var writeTx = getDataBroker().newWriteOnlyTransaction();
+                        writeTx.merge(CONFIGURATION, TOP, top(topLevelList(TOP_BAR_KEY)));
+                        assertCommit(writeTx.commit());
+
+                        barListener.verifyModifications(added(TOP_BAR, topBar));
+                    }
+                    fooListener.verifyModifications(added(TOP_FOO, topFoo));
+                }
+                allListener.verifyModifications(added(TOP_FOO, topFoo), added(TOP_BAR, topBar));
+            }
+            topListener.verifyModifications(
                 added(TOP, top(topLevelList(TOP_FOO_KEY))), topSubtreeModified(topFoo, topBar));
-        final TestListener<TopLevelList> allListener = createListener(CONFIGURATION, WILDCARDED,
-                added(TOP_FOO, topFoo), added(TOP_BAR, topBar));
-        final TestListener<TopLevelList> fooListener = createListener(CONFIGURATION, TOP_FOO,
-                added(TOP_FOO, topFoo));
-        final TestListener<TopLevelList> barListener = createListener(CONFIGURATION, TOP_BAR,
-                added(TOP_BAR, topBar));
-
-        ReadWriteTransaction writeTx = getDataBroker().newReadWriteTransaction();
-        writeTx.merge(CONFIGURATION, TOP, top(topLevelList(TOP_BAR_KEY)));
-        assertCommit(writeTx.commit());
-
-        topListener.verify();
-        allListener.verify();
-        fooListener.verify();
-        barListener.verify();
+        }
     }
 
     @Test
     public void putTopBarNodeSubtreeListeners() {
-        final TopLevelList topBar = topLevelList(TOP_BAR_KEY);
-        final TopLevelList topFoo = topLevelList(TOP_FOO_KEY);
-
-        final TestListener<Top> topListener = createListener(CONFIGURATION, TOP,
+        final var topBar = topLevelList(TOP_BAR_KEY);
+        final var topFoo = topLevelList(TOP_FOO_KEY);
+
+        try (var topListener = createCollector(CONFIGURATION, TOP)) {
+            try (var allListener = createCollector(CONFIGURATION, WILDCARDED)) {
+                try (var fooListener = createCollector(CONFIGURATION, TOP_FOO)) {
+                    try (var barListener = createCollector(CONFIGURATION, TOP_BAR)) {
+                        var writeTx = getDataBroker().newWriteOnlyTransaction();
+                        writeTx.put(CONFIGURATION, TOP_BAR, topLevelList(TOP_BAR_KEY));
+                        assertCommit(writeTx.commit());
+
+                        barListener.verifyModifications(added(TOP_BAR, topBar));
+                    }
+                    fooListener.verifyModifications(added(TOP_FOO, topFoo));
+                }
+                allListener.verifyModifications(added(TOP_FOO, topFoo), added(TOP_BAR, topBar));
+            }
+            topListener.verifyModifications(
                 added(TOP, top(topLevelList(TOP_FOO_KEY))), topSubtreeModified(topFoo, topBar));
-        final TestListener<TopLevelList> allListener = createListener(CONFIGURATION, WILDCARDED,
-                added(TOP_FOO, topFoo), added(TOP_BAR, topBar));
-        final TestListener<TopLevelList> fooListener = createListener(CONFIGURATION, TOP_FOO,
-                added(TOP_FOO, topFoo));
-        final TestListener<TopLevelList> barListener = createListener(CONFIGURATION, TOP_BAR,
-                added(TOP_BAR, topBar));
-
-        ReadWriteTransaction writeTx = getDataBroker().newReadWriteTransaction();
-        writeTx.put(CONFIGURATION, TOP_BAR, topLevelList(TOP_BAR_KEY));
-        assertCommit(writeTx.commit());
-
-        topListener.verify();
-        allListener.verify();
-        fooListener.verify();
-        barListener.verify();
+        }
     }
 
     @Test
     public void mergeTopBarNodeSubtreeListeners() {
-        final TopLevelList topBar = topLevelList(TOP_BAR_KEY);
-        final TopLevelList topFoo = topLevelList(TOP_FOO_KEY);
-
-        final TestListener<Top> topListener = createListener(CONFIGURATION, TOP,
+        final var topBar = topLevelList(TOP_BAR_KEY);
+        final var topFoo = topLevelList(TOP_FOO_KEY);
+
+        try (var topListener = createCollector(CONFIGURATION, TOP)) {
+            try (var allListener = createCollector(CONFIGURATION, WILDCARDED)) {
+                try (var fooListener = createCollector(CONFIGURATION, TOP_FOO)) {
+                    try (var barListener = createCollector(CONFIGURATION, TOP_BAR)) {
+                        final var writeTx = getDataBroker().newWriteOnlyTransaction();
+                        writeTx.merge(CONFIGURATION, TOP_BAR, topLevelList(TOP_BAR_KEY));
+                        assertCommit(writeTx.commit());
+
+                        barListener.verifyModifications(added(TOP_BAR, topBar));
+                    }
+                    fooListener.verifyModifications(added(TOP_FOO, topFoo));
+                }
+                allListener.verifyModifications(added(TOP_FOO, topFoo), added(TOP_BAR, topBar));
+            }
+            topListener.verifyModifications(
                 added(TOP, top(topLevelList(TOP_FOO_KEY))), topSubtreeModified(topFoo, topBar));
-        final TestListener<TopLevelList> allListener = createListener(CONFIGURATION, WILDCARDED,
-                added(TOP_FOO, topFoo), added(TOP_BAR, topBar));
-        final TestListener<TopLevelList> fooListener = createListener(CONFIGURATION, TOP_FOO,
-                added(TOP_FOO, topFoo));
-        final TestListener<TopLevelList> barListener = createListener(CONFIGURATION, TOP_BAR,
-                added(TOP_BAR, topBar));
-
-        ReadWriteTransaction writeTx = getDataBroker().newReadWriteTransaction();
-        writeTx.merge(CONFIGURATION, TOP_BAR, topLevelList(TOP_BAR_KEY));
-        assertCommit(writeTx.commit());
-
-        topListener.verify();
-        allListener.verify();
-        fooListener.verify();
-        barListener.verify();
+        }
     }
 
-    private static Function<DataTreeModification<Top>, Boolean> topSubtreeModified(final TopLevelList topFoo,
-            final TopLevelList topBar) {
+    private static Matcher<Top> topSubtreeModified(final TopLevelList topFoo, final TopLevelList topBar) {
         return match(ModificationType.SUBTREE_MODIFIED, TOP,
-            (Function<Top, Boolean>) dataBefore -> Objects.equals(top(topFoo), dataBefore),
+            (DataMatcher<Top>) dataBefore -> Objects.equals(top(topFoo), dataBefore),
             dataAfter -> {
-                Set<TopLevelList> expList = new HashSet<>(top(topBar, topFoo).getTopLevelList().values());
-                Set<TopLevelList> actualList = dataAfter.getTopLevelList().values().stream()
+                var expList = new HashSet<>(top(topBar, topFoo).nonnullTopLevelList().values());
+                var actualList = dataAfter.nonnullTopLevelList().values().stream()
                         .map(list -> new TopLevelListBuilder(list).build()).collect(Collectors.toSet());
                 return expList.equals(actualList);
             });