X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fmodification%2FMutableCompositeModification.java;h=d7e89597e2950473d056f0c806d8af3ca7b114c5;hp=b594578eb2ece4485c9a75643ccd2f8db11a199a;hb=7232cedfe7b702305b51da43d7302b7cc1014d7e;hpb=412db94945c5db5d2da918f5e23bd3abcecc4d10 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 b594578eb2..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,8 +14,9 @@ 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.node.utils.stream.NormalizedNodeOutputStreamWriter; import org.opendaylight.controller.cluster.datastore.utils.SerializationUtils; import org.opendaylight.controller.protobuff.messages.persistent.PersistentMessages; import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction; @@ -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,12 +107,12 @@ public class MutableCompositeModification implements CompositeModification { @Override public void writeExternal(ObjectOutput out) throws IOException { - out.writeShort(version); + super.writeExternal(out); out.writeInt(modifications.size()); if(modifications.size() > 1) { - SerializationUtils.REUSABLE_WRITER_TL.set(new NormalizedNodeOutputStreamWriter(out)); + SerializationUtils.REUSABLE_WRITER_TL.set(NormalizedNodeInputOutput.newDataOutput(out)); } try { @@ -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();