Use yang-data-codec-binfmt
[controller.git] / opendaylight / md-sal / cds-access-api / src / main / java / org / opendaylight / controller / cluster / access / commands / ReadTransactionSuccessProxyV1.java
index 13e1cf0d5a48709b239ccb6ea5f146f08d0e8cf4..357c3d977c3bfea2b4345f1f74d2394e02ce3aad 100644 (file)
@@ -7,14 +7,15 @@
  */
 package org.opendaylight.controller.cluster.access.commands;
 
-import com.google.common.base.Optional;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
+import java.util.Optional;
 import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
-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.api.schema.NormalizedNode;
+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;
 
 /**
  * Externalizable proxy for use with {@link ReadTransactionSuccess}. It implements the initial (Boron) serialization
@@ -24,8 +25,13 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
  */
 final class ReadTransactionSuccessProxyV1 extends AbstractTransactionSuccessProxy<ReadTransactionSuccess> {
     private static final long serialVersionUID = 1L;
+
     private Optional<NormalizedNode<?, ?>> data;
+    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 ReadTransactionSuccessProxyV1() {
         // For Externalizable
     }
@@ -33,6 +39,7 @@ final class ReadTransactionSuccessProxyV1 extends AbstractTransactionSuccessProx
     ReadTransactionSuccessProxyV1(final ReadTransactionSuccess request) {
         super(request);
         this.data = request.getData();
+        this.streamVersion = request.getVersion().getStreamVersion();
     }
 
     @Override
@@ -41,14 +48,12 @@ final class ReadTransactionSuccessProxyV1 extends AbstractTransactionSuccessProx
 
         if (data.isPresent()) {
             out.writeBoolean(true);
-            try (NormalizedNodeDataOutput nnout = NormalizedNodeInputOutput.newDataOutput(out)) {
+            try (NormalizedNodeDataOutput nnout = streamVersion.newDataOutput(out)) {
                 nnout.writeNormalizedNode(data.get());
             }
         } else {
             out.writeBoolean(false);
         }
-
-        out.writeObject(data);
     }
 
     @Override
@@ -56,15 +61,14 @@ final class ReadTransactionSuccessProxyV1 extends AbstractTransactionSuccessProx
         super.readExternal(in);
 
         if (in.readBoolean()) {
-            data = Optional.of(NormalizedNodeInputOutput.newDataInput(in).readNormalizedNode());
+            data = Optional.of(NormalizedNodeDataInput.newDataInput(in).readNormalizedNode());
         } else {
-            data = Optional.absent();
+            data = Optional.empty();
         }
     }
 
     @Override
-    protected ReadTransactionSuccess createSuccess(final TransactionIdentifier target, final long sequence,
-            final long retry) {
-        return new ReadTransactionSuccess(target, sequence, retry, data);
+    protected ReadTransactionSuccess createSuccess(final TransactionIdentifier target, final long sequence) {
+        return new ReadTransactionSuccess(target, sequence, data);
     }
 }