package org.opendaylight.controller.cluster.datastore;
+import akka.actor.PoisonPill;
import akka.actor.Props;
-import akka.actor.UntypedActor;
import akka.japi.Creator;
+
import org.opendaylight.controller.cluster.datastore.messages.CloseDataChangeListenerRegistration;
import org.opendaylight.controller.cluster.datastore.messages.CloseDataChangeListenerRegistrationReply;
import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeListener;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-public class DataChangeListenerRegistration extends UntypedActor{
+public class DataChangeListenerRegistration extends AbstractUntypedActor {
+
+ private final ListenerRegistration<AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>>>
+ registration;
+
+ public DataChangeListenerRegistration(
+ ListenerRegistration<AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>>> registration) {
+ this.registration = registration;
+ }
+
+ @Override
+ public void handleReceive(Object message) throws Exception {
+ if (message.getClass().equals(CloseDataChangeListenerRegistration.SERIALIZABLE_CLASS)) {
+ closeListenerRegistration(
+ new CloseDataChangeListenerRegistration());
+ }
+ }
+
+ public static Props props(
+ final ListenerRegistration<AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>>> registration) {
+ return Props.create(new DataChangeListenerRegistrationCreator(registration));
+ }
+
+ private void closeListenerRegistration(
+ CloseDataChangeListenerRegistration message) {
+ registration.close();
+ getSender()
+ .tell(new CloseDataChangeListenerRegistrationReply().toSerializable(), getSelf());
+ getSelf().tell(PoisonPill.getInstance(), getSelf());
+ }
- private final org.opendaylight.yangtools.concepts.ListenerRegistration<AsyncDataChangeListener<InstanceIdentifier, NormalizedNode<?, ?>>> registration;
+ private static class DataChangeListenerRegistrationCreator
+ implements Creator<DataChangeListenerRegistration> {
+ final ListenerRegistration<AsyncDataChangeListener<YangInstanceIdentifier,
+ NormalizedNode<?, ?>>> registration;
- public DataChangeListenerRegistration(
- org.opendaylight.yangtools.concepts.ListenerRegistration<AsyncDataChangeListener<InstanceIdentifier, NormalizedNode<?, ?>>> registration) {
- this.registration = registration;
- }
+ DataChangeListenerRegistrationCreator(
+ ListenerRegistration<AsyncDataChangeListener<YangInstanceIdentifier,
+ NormalizedNode<?, ?>>> registration) {
+ this.registration = registration;
+ }
- @Override
- public void onReceive(Object message) throws Exception {
- if(message instanceof CloseDataChangeListenerRegistration){
- closeListenerRegistration((CloseDataChangeListenerRegistration) message);
+ @Override
+ public DataChangeListenerRegistration create() throws Exception {
+ return new DataChangeListenerRegistration(registration);
+ }
}
- }
-
- public static Props props(final org.opendaylight.yangtools.concepts.ListenerRegistration<AsyncDataChangeListener<InstanceIdentifier, NormalizedNode<?, ?>>> registration){
- return Props.create(new Creator<DataChangeListenerRegistration>(){
-
- @Override
- public DataChangeListenerRegistration create() throws Exception {
- return new DataChangeListenerRegistration(registration);
- }
- });
- }
-
- private void closeListenerRegistration(CloseDataChangeListenerRegistration message){
- registration.close();
- getSender().tell(new CloseDataChangeListenerRegistrationReply(), getSelf());
- }
}