- mergeToStore(shard.getDataStore(), TEST_PATH, testNodeWithOuter(outerNode(
- outerNodeEntry(1, innerNode("one", "two")), outerNodeEntry(2, innerNode("three", "four")))));
-
- MockDataChangeListener listener = registerChangeListener(
- OUTER_LIST_PATH.node(OUTER_LIST_QNAME).node(INNER_LIST_QNAME).node(INNER_LIST_QNAME),
- DataChangeScope.ONE, 1, true);
-
- listener.waitForChangeEvents();
- listener.verifyCreatedData(0, innerEntryPath(1, "one"));
- listener.verifyCreatedData(0, innerEntryPath(1, "two"));
- listener.verifyCreatedData(0, innerEntryPath(2, "three"));
- listener.verifyCreatedData(0, innerEntryPath(2, "four"));
-
- // Register for a specific outer list entry
-
- MockDataChangeListener listener2 = registerChangeListener(
- OUTER_LIST_PATH.node(outerEntryKey(1)).node(INNER_LIST_QNAME).node(INNER_LIST_QNAME),
- DataChangeScope.ONE, 1, true);
-
- listener2.waitForChangeEvents();
- listener2.verifyCreatedData(0, innerEntryPath(1, "one"));
- listener2.verifyCreatedData(0, innerEntryPath(1, "two"));
- listener2.verifyNoCreatedData(0, innerEntryPath(2, "three"));
- listener2.verifyNoCreatedData(0, innerEntryPath(2, "four"));
+
+ new ShardTestKit(getSystem()) {
+ {
+ final TestActorRef<Shard> actor = actorFactory.createTestActor(
+ newShardProps().withDispatcher(Dispatchers.DefaultDispatcherId()),
+ "testInitialChangeListenerEventWithNestedWildcardedListsPath");
+
+ waitUntilLeader(actor);
+
+ final Shard shard = actor.underlyingActor();
+
+ mergeToStore(shard.getDataStore(), TEST_PATH,
+ testNodeWithOuter(outerNode(outerNodeEntry(1, innerNode("one", "two")),
+ outerNodeEntry(2, innerNode("three", "four")))));
+
+ final MockDataChangeListener listener = new MockDataChangeListener(1);
+ final ActorRef dclActor = actorFactory.createActor(DataChangeListener.props(listener),
+ "testInitialChangeListenerEventWithNestedWildcardedListsPath-DataChangeListener");
+ final DataChangeListenerSupport support = new DataChangeListenerSupport(shard);
+ support.onMessage(new RegisterChangeListener(OUTER_LIST_PATH.node(OUTER_LIST_QNAME).node(INNER_LIST_QNAME).node(INNER_LIST_QNAME), dclActor,
+ DataChangeScope.ONE, false), true, true);
+
+
+ listener.waitForChangeEvents();
+ listener.verifyCreatedData(0, innerEntryPath(1, "one"));
+ listener.verifyCreatedData(0, innerEntryPath(1, "two"));
+ listener.verifyCreatedData(0, innerEntryPath(2, "three"));
+ listener.verifyCreatedData(0, innerEntryPath(2, "four"));
+
+ // Register for a specific outer list entry
+ final MockDataChangeListener listener2 = new MockDataChangeListener(1);
+ final ActorRef dclActor2 = actorFactory.createActor(DataChangeListener.props(listener2),
+ "testInitialChangeListenerEventWithNestedWildcardedListsPath-DataChangeListener2");
+ final DataChangeListenerSupport support2 = new DataChangeListenerSupport(shard);
+ support2.onMessage(new RegisterChangeListener(
+ OUTER_LIST_PATH.node(outerEntryKey(1)).node(INNER_LIST_QNAME).node(INNER_LIST_QNAME), dclActor2,
+ DataChangeScope.ONE, false), true, true);
+
+ listener2.waitForChangeEvents();
+ listener2.verifyCreatedData(0, innerEntryPath(1, "one"));
+ listener2.verifyCreatedData(0, innerEntryPath(1, "two"));
+ listener2.verifyNoCreatedData(0, innerEntryPath(2, "three"));
+ listener2.verifyNoCreatedData(0, innerEntryPath(2, "four"));
+ }
+ };