Use Protocol Buffers to Serialize DeleteData 21/8821/6
authorMoiz Raja <moraja@cisco.com>
Tue, 8 Jul 2014 19:20:12 +0000 (12:20 -0700)
committerMoiz Raja <moraja@cisco.com>
Mon, 28 Jul 2014 20:56:30 +0000 (13:56 -0700)
Change-Id: I2d96007610a28929e1e046a11726b33bec67394f
Signed-off-by: Moiz Raja <moraja@cisco.com>
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteData.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java
opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java

index e3d1e2d9d42e4968f4b81ca0ea33d40c2b7b07f7..e2b560126b784ac5423728915e0de43282d85a93 100644 (file)
@@ -126,8 +126,8 @@ public class ShardTransaction extends AbstractUntypedActor {
             writeData((WriteData) message);
         } else if (message instanceof MergeData) {
             mergeData((MergeData) message);
-        } else if (message instanceof DeleteData) {
-            deleteData((DeleteData) message);
+        } else if (DeleteData.SERIALIZABLE_CLASS.equals(message.getClass())) {
+            deleteData(DeleteData.fromSerizalizable(message));
         } else if (message instanceof ReadyTransaction) {
             readyTransaction((ReadyTransaction) message);
         } else if (message instanceof CloseTransaction) {
index e65aab85a44b39dbfc97306c9a143df20142bbd0..d3f209b5226f0149c2daaaa006e9aca55a8ae538 100644 (file)
@@ -128,7 +128,7 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction {
     @Override
     public void delete(InstanceIdentifier path) {
         final ActorSelection remoteTransaction = remoteTransactionFromIdentifier(path);
-        remoteTransaction.tell(new DeleteData(path), null);
+        remoteTransaction.tell(new DeleteData(path).toSerializable(), null);
     }
 
     @Override
index 384e75ae7e6a11a7073ef3142586aeb68f59a4c0..7f9a9fbaca0d563a8a2d49c4cdd20f7280627656 100644 (file)
@@ -8,16 +8,32 @@
 
 package org.opendaylight.controller.cluster.datastore.messages;
 
+import org.opendaylight.controller.cluster.datastore.utils.InstanceIdentifierUtils;
+import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages;
 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
 
-public class DeleteData {
-  private final InstanceIdentifier path;
+public class DeleteData implements SerializableMessage {
 
-  public DeleteData(InstanceIdentifier path) {
-    this.path = path;
-  }
+    public static final Class SERIALIZABLE_CLASS = ShardTransactionMessages.DeleteData.class;
 
-  public InstanceIdentifier getPath() {
-    return path;
-  }
+    private final InstanceIdentifier path;
+
+    public DeleteData(InstanceIdentifier path) {
+        this.path = path;
+    }
+
+    public InstanceIdentifier getPath() {
+        return path;
+    }
+
+    @Override public Object toSerializable() {
+        return ShardTransactionMessages.DeleteData.newBuilder()
+            .setInstanceIdentifierPathArguments(
+                InstanceIdentifierUtils.getParentPath(path.toString())).build();
+    }
+
+    public static DeleteData fromSerizalizable(Object serializable){
+        ShardTransactionMessages.DeleteData o = (ShardTransactionMessages.DeleteData) serializable;
+        return new DeleteData(InstanceIdentifierUtils.from(o.getInstanceIdentifierPathArguments()));
+    }
 }
index 2d9ae93d9ee1d044b2809996b88d1183c16672f8..652121132dac8a7e69395f01fd04ca4a04a26d36 100644 (file)
@@ -245,7 +245,7 @@ public class ShardTransactionTest extends AbstractActorTest {
             new Within(duration("1 seconds")) {
                 protected void run() {
 
-                    subject.tell(new DeleteData(TestModel.TEST_PATH), getRef());
+                    subject.tell(new DeleteData(TestModel.TEST_PATH).toSerializable(), getRef());
 
                     final String out = new ExpectMsg<String>("match hint") {
                         // do not put code outside this method, will run afterwards
index d6cb1fb97c818d96b0d598512d686aa00cac9503..fa32c87e8f60ea18657c19efe2ee9f8d9d7019e5 100644 (file)
@@ -185,7 +185,7 @@ public class TransactionProxyTest extends AbstractActorTest {
 
         Assert.assertEquals(1, listMessages.size());
 
-        Assert.assertTrue(listMessages.get(0) instanceof DeleteData);
+        Assert.assertEquals(DeleteData.SERIALIZABLE_CLASS, listMessages.get(0).getClass());
     }
 
     @Test