From 7232cedfe7b702305b51da43d7302b7cc1014d7e Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Fri, 19 Feb 2016 08:23:07 -0500 Subject: [PATCH] Change BatchedModifications to extend VersionedExternalizableMessage To be consistent with other transaction messages, changed BatchedModifications to extend VersionedExternalizableMessage via MutableCompositeModification. Change-Id: I7dbf39f59b0e6263c38a062826eb6341b7cb16d1 Signed-off-by: Tom Pantelis --- .../messages/BatchedModifications.java | 7 +-- .../MutableCompositeModification.java | 45 +++++++++---------- ...siteModificationByteStringPayloadTest.java | 2 +- .../datastore/compat/PreLithiumShardTest.java | 5 ++- .../messages/BatchedModificationsTest.java | 4 +- 5 files changed, 28 insertions(+), 35 deletions(-) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModifications.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModifications.java index f95473f8a6..a4b9d4c8be 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModifications.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModifications.java @@ -18,7 +18,7 @@ import org.opendaylight.controller.cluster.datastore.modification.MutableComposi * * @author Thomas Pantelis */ -public class BatchedModifications extends MutableCompositeModification implements SerializableMessage { +public class BatchedModifications extends MutableCompositeModification { private static final long serialVersionUID = 1L; private boolean ready; @@ -88,11 +88,6 @@ public class BatchedModifications extends MutableCompositeModification implement out.writeBoolean(doCommitOnReady); } - @Override - public Object toSerializable() { - return this; - } - @Override public String toString() { StringBuilder builder = new StringBuilder(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModification.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModification.java index c3746e03d2..d7e89597e2 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModification.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModification.java @@ -14,6 +14,7 @@ import java.io.ObjectOutput; import java.util.ArrayList; import java.util.List; import org.opendaylight.controller.cluster.datastore.DataStoreVersions; +import org.opendaylight.controller.cluster.datastore.messages.VersionedExternalizableMessage; import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeInputOutput; import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeInputStreamReader; import org.opendaylight.controller.cluster.datastore.utils.SerializationUtils; @@ -25,18 +26,17 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification * MutableCompositeModification is just a mutable version of a * CompositeModification {@link org.opendaylight.controller.cluster.datastore.modification.MutableCompositeModification#addModification(Modification)} */ -public class MutableCompositeModification implements CompositeModification { +public class MutableCompositeModification extends VersionedExternalizableMessage implements CompositeModification { private static final long serialVersionUID = 1L; private final List modifications = new ArrayList<>(); - private short version; public MutableCompositeModification() { this(DataStoreVersions.CURRENT_VERSION); } public MutableCompositeModification(short version) { - this.version = version; + super(version); } @Override @@ -58,14 +58,6 @@ public class MutableCompositeModification implements CompositeModification { return COMPOSITE; } - public short getVersion() { - return version; - } - - public void setVersion(short version) { - this.version = version; - } - /** * Add a new Modification to the list of Modifications represented by this * composite @@ -83,7 +75,7 @@ public class MutableCompositeModification implements CompositeModification { @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - version = in.readShort(); + super.readExternal(in); int size = in.readInt(); @@ -96,15 +88,15 @@ public class MutableCompositeModification implements CompositeModification { byte type = in.readByte(); switch(type) { case Modification.WRITE: - modifications.add(WriteModification.fromStream(in, version)); + modifications.add(WriteModification.fromStream(in, getVersion())); break; case Modification.MERGE: - modifications.add(MergeModification.fromStream(in, version)); + modifications.add(MergeModification.fromStream(in, getVersion())); break; case Modification.DELETE: - modifications.add(DeleteModification.fromStream(in, version)); + modifications.add(DeleteModification.fromStream(in, getVersion())); break; } } @@ -115,7 +107,7 @@ public class MutableCompositeModification implements CompositeModification { @Override public void writeExternal(ObjectOutput out) throws IOException { - out.writeShort(version); + super.writeExternal(out); out.writeInt(modifications.size()); @@ -135,17 +127,21 @@ public class MutableCompositeModification implements CompositeModification { @Override @Deprecated - public Object toSerializable() { - PersistentMessages.CompositeModification.Builder builder = - PersistentMessages.CompositeModification.newBuilder(); + protected Object newLegacySerializedInstance() { + if(getVersion() >= DataStoreVersions.LITHIUM_VERSION) { + return this; + } else { + PersistentMessages.CompositeModification.Builder builder = + PersistentMessages.CompositeModification.newBuilder(); - builder.setTimeStamp(System.nanoTime()); + builder.setTimeStamp(System.nanoTime()); - for (Modification m : modifications) { - builder.addModification((PersistentMessages.Modification) m.toSerializable()); - } + for (Modification m : modifications) { + builder.addModification((PersistentMessages.Modification) m.toSerializable()); + } - return builder.build(); + return builder.build(); + } } public static MutableCompositeModification fromSerializable(Object serializable) { @@ -156,6 +152,7 @@ public class MutableCompositeModification implements CompositeModification { } } + @Deprecated private static MutableCompositeModification fromLegacySerializable(Object serializable) { PersistentMessages.CompositeModification o = (PersistentMessages.CompositeModification) serializable; MutableCompositeModification compositeModification = new MutableCompositeModification(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/CompositeModificationByteStringPayloadTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/CompositeModificationByteStringPayloadTest.java index 98bc9706fb..e1e968c02c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/CompositeModificationByteStringPayloadTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/CompositeModificationByteStringPayloadTest.java @@ -27,7 +27,7 @@ public class CompositeModificationByteStringPayloadTest { .containerNode(TestModel.TEST_QNAME)); MutableCompositeModification compositeModification = - new MutableCompositeModification(); + new MutableCompositeModification(DataStoreVersions.HELIUM_2_VERSION); compositeModification.addModification(writeModification); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/compat/PreLithiumShardTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/compat/PreLithiumShardTest.java index 1cf45cef01..c9797b5414 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/compat/PreLithiumShardTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/compat/PreLithiumShardTest.java @@ -16,6 +16,7 @@ import java.util.HashSet; import java.util.Set; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.AbstractShardTest; +import org.opendaylight.controller.cluster.datastore.DataStoreVersions; import org.opendaylight.controller.cluster.datastore.Shard; import org.opendaylight.controller.cluster.datastore.ShardTestKit; import org.opendaylight.controller.cluster.datastore.modification.MergeModification; @@ -49,7 +50,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFac public class PreLithiumShardTest extends AbstractShardTest { private static CompositeModificationPayload newLegacyPayload(final Modification... mods) { - MutableCompositeModification compMod = new MutableCompositeModification(); + MutableCompositeModification compMod = new MutableCompositeModification(DataStoreVersions.HELIUM_2_VERSION); for(Modification mod: mods) { compMod.addModification(mod); } @@ -58,7 +59,7 @@ public class PreLithiumShardTest extends AbstractShardTest { } private static CompositeModificationByteStringPayload newLegacyByteStringPayload(final Modification... mods) { - MutableCompositeModification compMod = new MutableCompositeModification(); + MutableCompositeModification compMod = new MutableCompositeModification(DataStoreVersions.HELIUM_2_VERSION); for(Modification mod: mods) { compMod.addModification(mod); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModificationsTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModificationsTest.java index 1df8e9775b..4a63666e7c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModificationsTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/messages/BatchedModificationsTest.java @@ -75,11 +75,11 @@ public class BatchedModificationsTest { // Test with different params. - batched = new BatchedModifications("tx2", (short)10, null); + batched = new BatchedModifications("tx2", (short)10000, null); clone = (BatchedModifications) SerializationUtils.clone((Serializable) batched.toSerializable()); - assertEquals("getVersion", 10, clone.getVersion()); + assertEquals("getVersion", DataStoreVersions.CURRENT_VERSION, clone.getVersion()); assertEquals("getTransactionID", "tx2", clone.getTransactionID()); assertEquals("getTransactionChainID", "", clone.getTransactionChainID()); assertEquals("isReady", false, clone.isReady()); -- 2.36.6