X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fnode%2Futils%2Fstream%2FSerializationUtils.java;h=fcafccd8177a63ae2ff7af7850ca370edd0a9e3b;hb=HEAD;hp=076e96c29390dcf5b54c9f9ccffb3b5bad5ab1c0;hpb=728a8db811f7a257a0b69243cbf76bb5ccf69658;p=controller.git diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/SerializationUtils.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/SerializationUtils.java index 076e96c293..51e61ea47f 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/SerializationUtils.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/SerializationUtils.java @@ -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 { - void apply(T instance, YangInstanceIdentifier path, NormalizedNode node); + void apply(T instance, YangInstanceIdentifier path, NormalizedNode node); } - public static Optional> readNormalizedNode(final DataInput in) throws IOException { + public static Optional 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 void readNodeAndPath(final DataInput in, final T instance, final Applier 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 void readPathAndNode(final DataInput in, final T instance, final Applier 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); + } }