*/
package org.opendaylight.controller.cluster.datastore;
+import static java.util.Objects.requireNonNull;
+
import akka.actor.Props;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
+import java.util.Optional;
import java.util.function.Consumer;
-import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate;
*
* @author Thomas Pantelis
*/
-public class ShardDataTreeChangePublisherActor
- extends ShardDataTreeNotificationPublisherActor<ShardDataTreeChangeListenerPublisher> {
+public final class ShardDataTreeChangePublisherActor
+ extends ShardDataTreeNotificationPublisherActor<DefaultShardDataTreeChangeListenerPublisher> {
private ShardDataTreeChangePublisherActor(final String name, final String logContext) {
- super(new DefaultShardDataTreeChangeListenerPublisher(), name, logContext);
+ super(new DefaultShardDataTreeChangeListenerPublisher(logContext), name, logContext);
}
@Override
- protected void handleReceive(Object message) {
+ protected void handleReceive(final Object message) {
if (message instanceof RegisterListener) {
RegisterListener reg = (RegisterListener)message;
+ LOG.debug("{}: Received {}", logContext(), reg);
if (reg.initialState.isPresent()) {
DefaultShardDataTreeChangeListenerPublisher.notifySingleListener(reg.path, reg.listener,
- reg.initialState.get());
+ reg.initialState.get(), logContext());
+ } else {
+ reg.listener.onInitialData();
}
- publisher().registerTreeChangeListener(reg.path, reg.listener, Optional.absent(), reg.onRegistration);
+ publisher().registerTreeChangeListener(reg.path, reg.listener, reg.onRegistration);
} else {
super.handleReceive(message);
}
RegisterListener(final YangInstanceIdentifier path, final DOMDataTreeChangeListener listener,
final Optional<DataTreeCandidate> initialState,
final Consumer<ListenerRegistration<DOMDataTreeChangeListener>> onRegistration) {
- this.path = Preconditions.checkNotNull(path);
- this.listener = Preconditions.checkNotNull(listener);
- this.initialState = Preconditions.checkNotNull(initialState);
- this.onRegistration = Preconditions.checkNotNull(onRegistration);
+ this.path = requireNonNull(path);
+ this.listener = requireNonNull(listener);
+ this.initialState = requireNonNull(initialState);
+ this.onRegistration = requireNonNull(onRegistration);
+ }
+
+ @Override
+ public String toString() {
+ return "RegisterListener [path=" + path + ", listener=" + listener + ", initialState present="
+ + initialState.isPresent() + "]";
}
}
}