- Entry<ListenerRegistration<DOMDataTreeChangeListener>, Optional<DataTreeCandidate>> createDelegate(
- final RegisterDataTreeChangeListener message) {
- ActorSelection dataChangeListenerPath = selectActor(message.getDataTreeChangeListenerPath());
-
- // Notify the listener if notifications should be enabled or not
- // If this shard is the leader then it will enable notifications else
- // it will not
- dataChangeListenerPath.tell(new EnableNotification(true), getSelf());
-
- // Now store a reference to the data change listener so it can be notified
- // at a later point if notifications should be enabled or disabled
- if (!message.isRegisterOnAllInstances()) {
- addListenerActor(dataChangeListenerPath);
- }
-
- DOMDataTreeChangeListener listener = new ForwardingDataTreeChangeListener(dataChangeListenerPath);
-
- log().debug("{}: Registering for path {}", persistenceId(), message.getPath());
-
- Entry<ListenerRegistration<DOMDataTreeChangeListener>, Optional<DataTreeCandidate>> regEntry =
- getShard().getDataStore().registerTreeChangeListener(message.getPath(), listener);
-
- getShard().getDataStore().notifyOfInitialData(message.getPath(),
- regEntry.getKey().getInstance(), regEntry.getValue());
+ void doRegistration(final RegisterDataTreeChangeListener message, final ActorRef registrationActor) {
+ final ActorSelection listenerActor = processListenerRegistrationMessage(message);