import akka.actor.ActorRef;
import akka.actor.ActorSelection;
-import com.google.common.base.Optional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EventListener;
-import java.util.Map.Entry;
import org.opendaylight.controller.cluster.datastore.messages.EnableNotification;
import org.opendaylight.controller.cluster.datastore.messages.ListenerRegistrationMessage;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-abstract class AbstractDataListenerSupport<L extends EventListener, R extends ListenerRegistrationMessage,
- D extends DelayedListenerRegistration<L, R>, LR extends ListenerRegistration<L>>
- extends LeaderLocalDelegateFactory<R, LR, Optional<DataTreeCandidate>> {
+abstract class AbstractDataListenerSupport<L extends EventListener, M extends ListenerRegistrationMessage,
+ D extends DelayedListenerRegistration<L, M>, R extends ListenerRegistration<L>>
+ extends LeaderLocalDelegateFactory<M, R> {
private final Logger log = LoggerFactory.getLogger(getClass());
private final ArrayList<D> delayedListenerRegistrations = new ArrayList<>();
}
@Override
- void onMessage(R message, boolean isLeader, boolean hasLeader) {
+ void onMessage(M message, boolean isLeader, boolean hasLeader) {
log.debug("{}: {} for {}, leader: {}", persistenceId(), logName(), message.getPath(), isLeader);
final ListenerRegistration<L> registration;
- if((hasLeader && message.isRegisterOnAllInstances()) || isLeader) {
- final Entry<LR, Optional<DataTreeCandidate>> res = createDelegate(message);
- registration = res.getKey();
+ if (hasLeader && message.isRegisterOnAllInstances() || isLeader) {
+ registration = createDelegate(message);
} else {
log.debug("{}: Shard is not the leader - delaying registration", persistenceId());
actors.add(actor);
}
- protected abstract D newDelayedListenerRegistration(R message);
+ protected abstract D newDelayedListenerRegistration(M message);
protected abstract ActorRef newRegistrationActor(ListenerRegistration<L> registration);