X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FDataTreeChangeListenerSupport.java;h=db5eeb83e70eedd4101cceeabd5491a2c5b3a47e;hp=3987c9af359a31ec7dcde5c2fa6e33911ed2a19d;hb=a54ec60368110d22794602343c934902f6833c65;hpb=c389b6dc9c717695f88a83c01a9fc67a1df68aac diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java index 3987c9af35..db5eeb83e7 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerSupport.java @@ -11,15 +11,18 @@ import akka.actor.ActorRef; import akka.actor.ActorSelection; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.Map.Entry; import org.opendaylight.controller.cluster.datastore.messages.EnableNotification; import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeChangeListener; import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeChangeListenerReply; import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener; import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -final class DataTreeChangeListenerSupport extends LeaderLocalDelegateFactory> { +final class DataTreeChangeListenerSupport extends LeaderLocalDelegateFactory, DataTreeCandidate> { private static final Logger LOG = LoggerFactory.getLogger(DataTreeChangeListenerSupport.class); private final ArrayList delayedRegistrations = new ArrayList<>(); private final Collection actors = new ArrayList<>(); @@ -49,6 +52,7 @@ final class DataTreeChangeListenerSupport extends LeaderLocalDelegateFactory registration; + final DataTreeCandidate event; if (!isLeader) { LOG.debug("{}: Shard is not the leader - delaying registration", persistenceId()); @@ -56,8 +60,11 @@ final class DataTreeChangeListenerSupport extends LeaderLocalDelegateFactory, DataTreeCandidate> res = createDelegate(registerTreeChangeListener); + registration = res.getKey(); + event = res.getValue(); } ActorRef listenerRegistration = createActor(DataTreeChangeListenerRegistrationActor.props(registration)); @@ -66,10 +73,13 @@ final class DataTreeChangeListenerSupport extends LeaderLocalDelegateFactory createDelegate(final RegisterDataTreeChangeListener message) { + Entry, DataTreeCandidate> createDelegate(final RegisterDataTreeChangeListener message) { ActorSelection dataChangeListenerPath = selectActor(message.getDataTreeChangeListenerPath()); // Notify the listener if notifications should be enabled or not