*/
package org.opendaylight.controller.cluster.datastore.node.utils.stream;
+import static org.opendaylight.yangtools.yang.data.codec.binfmt.NormalizedNodeStreamVersion.MAGNESIUM;
+
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
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.
@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, MAGNESIUM, 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 {
}
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, MAGNESIUM, 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, MAGNESIUM, 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, MAGNESIUM, path, node);
+ }
}