Bump versions 9.0.4-SNAPSHOT
[controller.git] / opendaylight / md-sal / sal-clustering-commons / src / main / java / org / opendaylight / controller / cluster / datastore / node / utils / stream / SerializationUtils.java
index 076e96c29390dcf5b54c9f9ccffb3b5bad5ab1c0..51e61ea47f3a75357f0bf3d56053353726602906 100644 (file)
@@ -15,6 +15,9 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 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;
 
 /**
  * Provides various utility methods for serialization and de-serialization.
@@ -28,22 +31,27 @@ public final class SerializationUtils {
 
     @FunctionalInterface
     public interface Applier<T> {
-        void apply(T instance, YangInstanceIdentifier path, NormalizedNode<?, ?> node);
+        void apply(T instance, YangInstanceIdentifier path, NormalizedNode node);
     }
 
-    public static Optional<NormalizedNode<?, ?>> readNormalizedNode(final DataInput in) throws IOException {
+    public static Optional<NormalizedNode> readNormalizedNode(final DataInput in) throws IOException {
         if (!in.readBoolean()) {
             return Optional.empty();
         }
-        return Optional.of(NormalizedNodeInputOutput.newDataInput(in).readNormalizedNode());
+        return Optional.of(NormalizedNodeDataInput.newDataInput(in).readNormalizedNode());
     }
 
-    public static void writeNormalizedNode(final DataOutput out, final @Nullable NormalizedNode<?, ?> node)
+    public static void writeNormalizedNode(final DataOutput out, final @Nullable NormalizedNode node)
             throws IOException {
+        writeNormalizedNode(out, NormalizedNodeStreamVersion.POTASSIUM, node);
+    }
+
+    public static void writeNormalizedNode(final DataOutput out, final NormalizedNodeStreamVersion version,
+            final @Nullable NormalizedNode node) throws IOException {
         if (node != null) {
             out.writeBoolean(true);
 
-            try (NormalizedNodeDataOutput stream = NormalizedNodeInputOutput.newDataOutput(out)) {
+            try (NormalizedNodeDataOutput stream = version.newDataOutput(out)) {
                 stream.writeNormalizedNode(node);
             }
         } else {
@@ -52,45 +60,61 @@ public final class SerializationUtils {
     }
 
     public static YangInstanceIdentifier readPath(final DataInput in) throws IOException {
-        return NormalizedNodeInputOutput.newDataInput(in).readYangInstanceIdentifier();
+        return NormalizedNodeDataInput.newDataInput(in).readYangInstanceIdentifier();
     }
 
     public static void writePath(final DataOutput out, final @NonNull YangInstanceIdentifier path)
             throws IOException {
-        try (NormalizedNodeDataOutput stream = NormalizedNodeInputOutput.newDataOutput(out)) {
+        writePath(out, NormalizedNodeStreamVersion.POTASSIUM, path);
+    }
+
+    public static void writePath(final DataOutput out, final NormalizedNodeStreamVersion version,
+            final @NonNull YangInstanceIdentifier path) throws IOException {
+        try (NormalizedNodeDataOutput stream = version.newDataOutput(out)) {
             stream.writeYangInstanceIdentifier(path);
         }
     }
 
     public static <T> void readNodeAndPath(final DataInput in, final T instance, final Applier<T> applier)
             throws IOException {
-        final NormalizedNodeDataInput stream = NormalizedNodeInputOutput.newDataInput(in);
-        NormalizedNode<?, ?> node = stream.readNormalizedNode();
+        final NormalizedNodeDataInput stream = NormalizedNodeDataInput.newDataInput(in);
+        NormalizedNode node = stream.readNormalizedNode();
         YangInstanceIdentifier path = stream.readYangInstanceIdentifier();
         applier.apply(instance, path, node);
     }
 
-    public static void writeNodeAndPath(final DataOutput out, final YangInstanceIdentifier path,
-            final NormalizedNode<?, ?> node) throws IOException {
-        try (NormalizedNodeDataOutput stream = NormalizedNodeInputOutput.newDataOutput(out)) {
+    public static void writeNodeAndPath(final DataOutput out, final NormalizedNodeStreamVersion version,
+            final YangInstanceIdentifier path, final NormalizedNode node) throws IOException {
+        try (NormalizedNodeDataOutput stream = version.newDataOutput(out)) {
             stream.writeNormalizedNode(node);
             stream.writeYangInstanceIdentifier(path);
         }
     }
 
+    public static void writeNodeAndPath(final DataOutput out, final YangInstanceIdentifier path,
+            final NormalizedNode node) throws IOException {
+        writeNodeAndPath(out, NormalizedNodeStreamVersion.POTASSIUM, path, node);
+    }
+
     public static <T> void readPathAndNode(final DataInput in, final T instance, final Applier<T> applier)
             throws IOException {
-        final NormalizedNodeDataInput stream = NormalizedNodeInputOutput.newDataInput(in);
+        final NormalizedNodeDataInput stream = NormalizedNodeDataInput.newDataInput(in);
         YangInstanceIdentifier path = stream.readYangInstanceIdentifier();
-        NormalizedNode<?, ?> node = stream.readNormalizedNode();
+        NormalizedNode node = stream.readNormalizedNode();
         applier.apply(instance, path, node);
     }
 
-    public static void writePathAndNode(final DataOutput out, final YangInstanceIdentifier path,
-            final NormalizedNode<?, ?> node) throws IOException {
-        try (NormalizedNodeDataOutput stream = NormalizedNodeInputOutput.newDataOutput(out)) {
+    public static void writePathAndNode(final DataOutput out,
+            final org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeStreamVersion version,
+            final YangInstanceIdentifier path, final NormalizedNode node) throws IOException {
+        try (NormalizedNodeDataOutput stream = version.newDataOutput(out)) {
             stream.writeYangInstanceIdentifier(path);
             stream.writeNormalizedNode(node);
         }
     }
+
+    public static void writePathAndNode(final DataOutput out, final YangInstanceIdentifier path,
+            final NormalizedNode node) throws IOException {
+        writePathAndNode(out, NormalizedNodeStreamVersion.POTASSIUM, path, node);
+    }
 }