Use yang-data-codec-binfmt
[controller.git] / opendaylight / md-sal / cds-access-api / src / main / java / org / opendaylight / controller / cluster / access / commands / ModifyTransactionRequestProxyV1.java
index 6fbc035036f2ea0b5d828dded769f893e6971a6e..384c889af8ded8aeef6a84b42f5943eb6f53bba8 100644 (file)
@@ -7,8 +7,9 @@
  */
 package org.opendaylight.controller.cluster.access.commands;
 
+import static java.util.Objects.requireNonNull;
+
 import akka.actor.ActorRef;
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import java.io.IOException;
 import java.io.ObjectInput;
@@ -17,9 +18,10 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeDataInput;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeDataOutput;
-import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeInputOutput;
+import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataInput;
+import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeDataOutput;
+import org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeStreamVersion;
+import org.opendaylight.yangtools.yang.data.impl.schema.ReusableImmutableNormalizedNodeStreamWriter;
 
 /**
  * Externalizable proxy for use with {@link ExistsTransactionRequest}. It implements the initial (Boron) serialization
@@ -29,20 +31,25 @@ import org.opendaylight.controller.cluster.datastore.node.utils.stream.Normalize
  */
 final class ModifyTransactionRequestProxyV1 extends AbstractTransactionRequestProxy<ModifyTransactionRequest> {
     private static final long serialVersionUID = 1L;
+
     private List<TransactionModification> modifications;
     private Optional<PersistenceProtocol> protocol;
+    private transient NormalizedNodeStreamVersion streamVersion;
 
+    // checkstyle flags the public modifier as redundant however it is explicitly needed for Java serialization to
+    // be able to create instances via reflection.
+    @SuppressWarnings("checkstyle:RedundantModifier")
     public ModifyTransactionRequestProxyV1() {
         // For Externalizable
     }
 
     ModifyTransactionRequestProxyV1(final ModifyTransactionRequest request) {
         super(request);
-        this.modifications = Preconditions.checkNotNull(request.getModifications());
+        this.modifications = requireNonNull(request.getModifications());
         this.protocol = request.getPersistenceProtocol();
+        this.streamVersion = request.getVersion().getStreamVersion();
     }
 
-
     @Override
     public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException {
         super.readExternal(in);
@@ -52,9 +59,11 @@ final class ModifyTransactionRequestProxyV1 extends AbstractTransactionRequestPr
         final int size = in.readInt();
         if (size != 0) {
             modifications = new ArrayList<>(size);
-            final NormalizedNodeDataInput nnin = NormalizedNodeInputOutput.newDataInput(in);
+            final NormalizedNodeDataInput nnin = NormalizedNodeDataInput.newDataInput(in);
+            final ReusableImmutableNormalizedNodeStreamWriter writer =
+                    ReusableImmutableNormalizedNodeStreamWriter.create();
             for (int i = 0; i < size; ++i) {
-                modifications.add(TransactionModification.readFrom(nnin));
+                modifications.add(TransactionModification.readFrom(nnin, writer));
             }
         } else {
             modifications = ImmutableList.of();
@@ -68,7 +77,7 @@ final class ModifyTransactionRequestProxyV1 extends AbstractTransactionRequestPr
         out.writeByte(PersistenceProtocol.byteValue(protocol.orElse(null)));
         out.writeInt(modifications.size());
         if (!modifications.isEmpty()) {
-            try (NormalizedNodeDataOutput nnout = NormalizedNodeInputOutput.newDataOutput(out)) {
+            try (NormalizedNodeDataOutput nnout = streamVersion.newDataOutput(out)) {
                 for (TransactionModification op : modifications) {
                     op.writeTo(nnout);
                 }
@@ -77,7 +86,8 @@ final class ModifyTransactionRequestProxyV1 extends AbstractTransactionRequestPr
     }
 
     @Override
-    protected ModifyTransactionRequest createRequest(final TransactionIdentifier target, final ActorRef replyTo) {
-        return new ModifyTransactionRequest(target, replyTo, modifications, protocol.orElse(null));
+    protected ModifyTransactionRequest createRequest(final TransactionIdentifier target, final long sequence,
+            final ActorRef replyTo) {
+        return new ModifyTransactionRequest(target, sequence, replyTo, modifications, protocol.orElse(null));
     }
 }