+ void doRegistration(final RegisterDataTreeChangeListener message, final ActorRef registrationActor) {
+ final ActorSelection listenerActor = processListenerRegistrationMessage(message);
+
+ final DOMDataTreeChangeListener listener = new ForwardingDataTreeChangeListener(listenerActor);
+
+ LOG.debug("{}: Registering listenerActor {} for path {}", persistenceId(), listenerActor, message.getPath());
+
+ final ShardDataTree shardDataTree = getShard().getDataStore();
+ shardDataTree.registerTreeChangeListener(message.getPath(),
+ listener, shardDataTree.readCurrentData(), registration -> registrationActor.tell(
+ new DataTreeNotificationListenerRegistrationActor.SetRegistration(registration, () ->
+ removeListenerActor(listenerActor)), ActorRef.noSender()));
+ }
+
+ Collection<ActorSelection> getListenerActors() {
+ return new ArrayList<>(allListenerActors);
+ }
+