Merge "Serialization/Deserialization and a host of other fixes"
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / DataChangeListenerRegistrationProxy.java
index 89cc9695251d18b2efc747b0de2b2882431a8de5..e3cdbb4ee131d1b0961e9d57c8eeb5ee6e568b61 100644 (file)
@@ -8,11 +8,13 @@
 
 package org.opendaylight.controller.cluster.datastore;
 
+import akka.actor.ActorRef;
 import akka.actor.ActorSelection;
+import akka.actor.PoisonPill;
 import org.opendaylight.controller.cluster.datastore.messages.CloseDataChangeListenerRegistration;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeListener;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
 /**
@@ -25,13 +27,15 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 public class DataChangeListenerRegistrationProxy implements ListenerRegistration {
     private final ActorSelection listenerRegistrationActor;
     private final AsyncDataChangeListener listener;
+    private final ActorRef dataChangeListenerActor;
 
-    public <L extends AsyncDataChangeListener<InstanceIdentifier, NormalizedNode<?, ?>>>
+    public <L extends AsyncDataChangeListener<YangInstanceIdentifier, NormalizedNode<?, ?>>>
     DataChangeListenerRegistrationProxy(
         ActorSelection listenerRegistrationActor,
-        L listener) {
+        L listener, ActorRef dataChangeListenerActor) {
         this.listenerRegistrationActor = listenerRegistrationActor;
         this.listener = listener;
+        this.dataChangeListenerActor = dataChangeListenerActor;
     }
 
     @Override
@@ -41,6 +45,7 @@ public class DataChangeListenerRegistrationProxy implements ListenerRegistration
 
     @Override
     public void close() {
-        listenerRegistrationActor.tell(new CloseDataChangeListenerRegistration(), null);
+        listenerRegistrationActor.tell(new CloseDataChangeListenerRegistration().toSerializable(), null);
+        dataChangeListenerActor.tell(PoisonPill.getInstance(), null);
     }
 }