From 11031657dfdf7632e63772223e3c07f557a4f491 Mon Sep 17 00:00:00 2001 From: Moiz Raja Date: Tue, 8 Jul 2014 12:20:12 -0700 Subject: [PATCH] Use Protocol Buffers to Serialize DeleteData Change-Id: I2d96007610a28929e1e046a11726b33bec67394f Signed-off-by: Moiz Raja --- .../cluster/datastore/ShardTransaction.java | 4 +-- .../cluster/datastore/TransactionProxy.java | 2 +- .../datastore/messages/DeleteData.java | 32 ++++++++++++++----- .../datastore/ShardTransactionTest.java | 2 +- .../datastore/TransactionProxyTest.java | 2 +- 5 files changed, 29 insertions(+), 13 deletions(-) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java index e3d1e2d9d4..e2b560126b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java @@ -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) { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java index e65aab85a4..d3f209b522 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java @@ -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 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteData.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteData.java index 384e75ae7e..7f9a9fbaca 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteData.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DeleteData.java @@ -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())); + } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java index 2d9ae93d9e..652121132d 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java @@ -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("match hint") { // do not put code outside this method, will run afterwards diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java index d6cb1fb97c..fa32c87e8f 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java @@ -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 -- 2.36.6