X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fmodification%2FMutableCompositeModification.java;h=c3746e03d27ceb1924feb2268a4828f0983badc8;hb=b124e8216055ee30a87207c8b8a95e5c9661f291;hp=5d7947b19fc6ddaeafe133ec546dfc879dd07855;hpb=0d4c11af06567b4692b8894bbe2cac16cb4db0ad;p=controller.git 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 5d7947b19f..c3746e03d2 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,11 +14,12 @@ 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.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; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; /** * MutableCompositeModification is just a mutable version of a @@ -27,10 +28,15 @@ import org.opendaylight.controller.sal.core.spi.data.DOMStoreWriteTransaction; public class MutableCompositeModification implements CompositeModification { private static final long serialVersionUID = 1L; - private final List modifications; + private final List modifications = new ArrayList<>(); + private short version; public MutableCompositeModification() { - modifications = new ArrayList<>(); + this(DataStoreVersions.CURRENT_VERSION); + } + + public MutableCompositeModification(short version) { + this.version = version; } @Override @@ -40,11 +46,26 @@ public class MutableCompositeModification implements CompositeModification { } } + @Override + public void apply(DataTreeModification transaction) { + for (Modification modification : modifications) { + modification.apply(transaction); + } + } + @Override public byte getType() { 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 @@ -62,7 +83,7 @@ public class MutableCompositeModification implements CompositeModification { @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { - in.readShort(); + version = in.readShort(); int size = in.readInt(); @@ -75,15 +96,15 @@ public class MutableCompositeModification implements CompositeModification { byte type = in.readByte(); switch(type) { case Modification.WRITE: - modifications.add(WriteModification.fromStream(in)); + modifications.add(WriteModification.fromStream(in, version)); break; case Modification.MERGE: - modifications.add(MergeModification.fromStream(in)); + modifications.add(MergeModification.fromStream(in, version)); break; case Modification.DELETE: - modifications.add(DeleteModification.fromStream(in)); + modifications.add(DeleteModification.fromStream(in, version)); break; } } @@ -94,12 +115,12 @@ public class MutableCompositeModification implements CompositeModification { @Override public void writeExternal(ObjectOutput out) throws IOException { - out.writeShort(DataStoreVersions.CURRENT_VERSION); + out.writeShort(version); 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 { @@ -121,8 +142,7 @@ public class MutableCompositeModification implements CompositeModification { builder.setTimeStamp(System.nanoTime()); for (Modification m : modifications) { - builder.addModification( - (PersistentMessages.Modification) m.toSerializable()); + builder.addModification((PersistentMessages.Modification) m.toSerializable()); } return builder.build();