X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-adapter%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fdom%2Fadapter%2Ftest%2FDataTreeChangeListenerTest.java;h=35e79fa12edb1cf4e59ee17fafebf07f4fd83d18;hb=2cd00f1a5d28cb5df491e07ac18848c50338a4c5;hp=2edb74c99166256a09d7d6360cad3e873b3afd3d;hpb=c4d02d92b7125cb5b0aa2e67e3a8b5a7c6f92b21;p=mdsal.git diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/DataTreeChangeListenerTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/DataTreeChangeListenerTest.java index 2edb74c991..35e79fa12e 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/DataTreeChangeListenerTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/DataTreeChangeListenerTest.java @@ -33,6 +33,7 @@ import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; import org.opendaylight.mdsal.binding.api.DataTreeModification; import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMDataBrokerAdapter; +import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.augment.rev140709.TreeComplexUsesAugment; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.Top; @@ -42,7 +43,6 @@ import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; -import org.opendaylight.yangtools.yang.binding.util.BindingReflections; public class DataTreeChangeListenerTest extends AbstractDataBrokerTest { @@ -63,20 +63,19 @@ public class DataTreeChangeListenerTest extends AbstractDataBrokerTest { private static final class EventCapturingListener implements DataTreeChangeListener { - private SettableFuture>> changes = SettableFuture.create(); + private SettableFuture>> futureChanges = SettableFuture.create(); @Override public void onDataTreeChanged(final Collection> changes) { - this.changes.set(changes); + this.futureChanges.set(changes); } Collection> nextEvent() throws Exception { - final Collection> result = changes.get(200,TimeUnit.MILLISECONDS); - changes = SettableFuture.create(); + final Collection> result = futureChanges.get(200,TimeUnit.MILLISECONDS); + futureChanges = SettableFuture.create(); return result; } - } @Override @@ -99,7 +98,7 @@ public class DataTreeChangeListenerTest extends AbstractDataBrokerTest { createAndVerifyTop(listener); - putTx(BAR_PATH, BAR_DATA).submit().get(); + putTx(BAR_PATH, BAR_DATA).commit().get(); final DataObjectModification afterBarPutEvent = Iterables.getOnlyElement(listener.nextEvent()).getRootNode(); verifyModification(afterBarPutEvent, TOP_ARGUMENT, ModificationType.SUBTREE_MODIFIED); @@ -108,7 +107,7 @@ public class DataTreeChangeListenerTest extends AbstractDataBrokerTest { assertNotNull(barPutMod); verifyModification(barPutMod, BAR_ARGUMENT, ModificationType.WRITE); - deleteTx(BAR_PATH).submit().get(); + deleteTx(BAR_PATH).commit().get(); final DataObjectModification afterBarDeleteEvent = Iterables.getOnlyElement(listener.nextEvent()).getRootNode(); verifyModification(afterBarDeleteEvent, TOP_ARGUMENT, ModificationType.SUBTREE_MODIFIED); @@ -126,25 +125,39 @@ public class DataTreeChangeListenerTest extends AbstractDataBrokerTest { LogicalDatastoreType.OPERATIONAL, TOP_PATH.child(TopLevelList.class)); dataBrokerImpl.registerDataTreeChangeListener(wildcard, listener); - putTx(TOP_PATH, TOP_INITIAL_DATA).submit().get(); + putTx(TOP_PATH, TOP_INITIAL_DATA).commit().get(); final DataTreeModification fooWriteEvent = Iterables.getOnlyElement(listener.nextEvent()); assertEquals(FOO_PATH, fooWriteEvent.getRootPath().getRootIdentifier()); verifyModification(fooWriteEvent.getRootNode(), FOO_ARGUMENT, ModificationType.WRITE); - putTx(BAR_PATH, BAR_DATA).submit().get(); + putTx(BAR_PATH, BAR_DATA).commit().get(); final DataTreeModification barWriteEvent = Iterables.getOnlyElement(listener.nextEvent()); assertEquals(BAR_PATH, barWriteEvent.getRootPath().getRootIdentifier()); verifyModification(barWriteEvent.getRootNode(), BAR_ARGUMENT, ModificationType.WRITE); - deleteTx(BAR_PATH).submit().get(); + deleteTx(BAR_PATH).commit().get(); final DataTreeModification barDeleteEvent = Iterables.getOnlyElement(listener.nextEvent()); assertEquals(BAR_PATH, barDeleteEvent.getRootPath().getRootIdentifier()); verifyModification(barDeleteEvent.getRootNode(), BAR_ARGUMENT, ModificationType.DELETE); } + @Test + public void testWildcardedListListenerWithPreexistingData() throws Exception { + putTx(TOP_PATH, TOP_INITIAL_DATA).commit().get(); + + final EventCapturingListener listener = new EventCapturingListener<>(); + final DataTreeIdentifier wildcard = DataTreeIdentifier.create( + LogicalDatastoreType.OPERATIONAL, TOP_PATH.child(TopLevelList.class)); + dataBrokerImpl.registerDataTreeChangeListener(wildcard, listener); + + final DataTreeModification fooWriteEvent = Iterables.getOnlyElement(listener.nextEvent()); + assertEquals(FOO_PATH, fooWriteEvent.getRootPath().getRootIdentifier()); + verifyModification(fooWriteEvent.getRootNode(), FOO_ARGUMENT, ModificationType.WRITE); + } + private void createAndVerifyTop(final EventCapturingListener listener) throws Exception { - putTx(TOP_PATH,TOP_INITIAL_DATA).submit().get(); + putTx(TOP_PATH,TOP_INITIAL_DATA).commit().get(); final Collection> events = listener.nextEvent(); assertFalse("Non empty collection should be received.",events.isEmpty());