import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-abstract class AbstractDataListenerSupport<L extends EventListener, M extends ListenerRegistrationMessage,
- D extends DelayedListenerRegistration<L, M>> extends LeaderLocalDelegateFactory<M> {
+abstract class AbstractDataListenerSupport<L extends EventListener, M extends ListenerRegistrationMessage>
+ extends LeaderLocalDelegateFactory<M> {
private final Logger log = LoggerFactory.getLogger(getClass());
- private final Collection<D> delayedListenerRegistrations = ConcurrentHashMap.newKeySet();
- private final Collection<D> delayedListenerOnAllRegistrations = ConcurrentHashMap.newKeySet();
+ private final Collection<DelayedListenerRegistration<L, M>> delayedListenerRegistrations =
+ ConcurrentHashMap.newKeySet();
+ private final Collection<DelayedListenerRegistration<L, M>> delayedListenerOnAllRegistrations =
+ ConcurrentHashMap.newKeySet();
private final Collection<ActorSelection> leaderOnlyListenerActors = ConcurrentHashMap.newKeySet();
private final Collection<ActorSelection> allListenerActors = ConcurrentHashMap.newKeySet();
}
if (hasLeader) {
- for (D reg : delayedListenerOnAllRegistrations) {
- reg.createDelegate(this);
+ for (DelayedListenerRegistration<L, M> reg : delayedListenerOnAllRegistrations) {
+ reg.doRegistration(this);
}
delayedListenerOnAllRegistrations.clear();
}
if (isLeader) {
- for (D reg : delayedListenerRegistrations) {
- reg.createDelegate(this);
+ for (DelayedListenerRegistration<L, M> reg : delayedListenerRegistrations) {
+ reg.doRegistration(this);
}
delayedListenerRegistrations.clear();
} else {
log.debug("{}: Shard is not the leader - delaying registration", persistenceId());
- D delayedReg = newDelayedListenerRegistration(message, registrationActor);
- Collection<D> delayedRegList;
+ DelayedListenerRegistration<L, M> delayedReg =
+ new DelayedListenerRegistration<>(message, registrationActor);
+ Collection<DelayedListenerRegistration<L, M>> delayedRegList;
if (message.isRegisterOnAllInstances()) {
delayedRegList = delayedListenerOnAllRegistrations;
} else {
abstract void doRegistration(M message, ActorRef registrationActor);
- protected abstract D newDelayedListenerRegistration(M message, ActorRef registrationActor);
-
protected abstract Object newRegistrationReplyMessage(ActorRef registrationActor);
protected abstract String logName();
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
final class DataChangeListenerSupport extends AbstractDataListenerSupport<
- AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>>, RegisterChangeListener,
- DelayedDataChangeListenerRegistration> {
+ AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>>, RegisterChangeListener> {
DataChangeListenerSupport(final Shard shard) {
super(shard);
removeListenerActor(listenerActor)), ActorRef.noSender()));
}
- @Override
- protected DelayedDataChangeListenerRegistration newDelayedListenerRegistration(RegisterChangeListener message,
- ActorRef registrationActor) {
- return new DelayedDataChangeListenerRegistration(message, registrationActor);
- }
-
@Override
protected Object newRegistrationReplyMessage(ActorRef registrationActor) {
return new RegisterChangeListenerReply(registrationActor);
import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener;
final class DataTreeChangeListenerSupport extends AbstractDataListenerSupport<DOMDataTreeChangeListener,
- RegisterDataTreeChangeListener, DelayedDataTreeListenerRegistration> {
+ RegisterDataTreeChangeListener> {
DataTreeChangeListenerSupport(final Shard shard) {
super(shard);
removeListenerActor(listenerActor)), ActorRef.noSender()));
}
- @Override
- protected DelayedDataTreeListenerRegistration newDelayedListenerRegistration(
- RegisterDataTreeChangeListener message, ActorRef registrationActor) {
- return new DelayedDataTreeListenerRegistration(message, registrationActor);
- }
-
@Override
protected Object newRegistrationReplyMessage(ActorRef registrationActor) {
return new RegisterDataTreeChangeListenerReply(registrationActor);
+++ /dev/null
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.cluster.datastore;
-
-import akka.actor.ActorRef;
-import org.opendaylight.controller.cluster.datastore.messages.RegisterChangeListener;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeListener;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-
-final class DelayedDataChangeListenerRegistration extends DelayedListenerRegistration<
- AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>>, RegisterChangeListener> {
-
- DelayedDataChangeListenerRegistration(final RegisterChangeListener registerChangeListener,
- final ActorRef registrationActor) {
- super(registerChangeListener, registrationActor);
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.controller.cluster.datastore;
-
-import akka.actor.ActorRef;
-import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeChangeListener;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener;
-
-/**
- * Intermediate proxy registration returned to the user when we cannot
- * instantiate the registration immediately. It provides a bridge to
- * a real registration which may materialize at some point in the future.
- */
-final class DelayedDataTreeListenerRegistration
- extends DelayedListenerRegistration<DOMDataTreeChangeListener, RegisterDataTreeChangeListener> {
-
- DelayedDataTreeListenerRegistration(final RegisterDataTreeChangeListener registerTreeChangeListener,
- final ActorRef registrationActor) {
- super(registerTreeChangeListener, registrationActor);
- }
-}
-
import org.opendaylight.controller.cluster.datastore.messages.ListenerRegistrationMessage;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
-abstract class DelayedListenerRegistration<L extends EventListener, M extends ListenerRegistrationMessage>
+class DelayedListenerRegistration<L extends EventListener, M extends ListenerRegistrationMessage>
implements ListenerRegistration<L> {
private final M registrationMessage;
private final ActorRef registrationActor;
return registrationMessage;
}
- synchronized void createDelegate(final AbstractDataListenerSupport<L, M, ?> support) {
+ synchronized void doRegistration(final AbstractDataListenerSupport<L, M> support) {
if (!closed) {
support.doRegistration(registrationMessage, registrationActor);
}