X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fnode%2Futils%2Fstream%2FNormalizedNodeInputOutput.java;h=87aec1dc1188536065d84c7587e056b67c08b8a5;hb=fba327c801062a6e802f212a0e8b6efee2f6a90e;hp=5b93b274e0b757766e750efa8c5f8a129e9f6eed;hpb=09419e51e2e0b771b1ae013bb4c8bdf7a4f984eb;p=controller.git diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputOutput.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputOutput.java index 5b93b274e0..87aec1dc11 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputOutput.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputOutput.java @@ -11,7 +11,7 @@ import com.google.common.annotations.Beta; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; @Beta public final class NormalizedNodeInputOutput { @@ -19,22 +19,57 @@ public final class NormalizedNodeInputOutput { throw new UnsupportedOperationException(); } - public static NormalizedNodeDataInput newDataInput(@Nonnull final DataInput input) throws IOException { - final byte marker = input.readByte(); - if (marker != TokenTypes.SIGNATURE_MARKER) { - throw new InvalidNormalizedNodeStreamException(String.format("Invalid signature marker: %d", marker)); - } + /** + * Creates a new {@link NormalizedNodeDataInput} instance that reads from the given input. This method first reads + * and validates that the input contains a valid NormalizedNode stream. + * + * @param input the DataInput to read from + * @return a new {@link NormalizedNodeDataInput} instance + * @throws IOException if an error occurs reading from the input + */ + public static NormalizedNodeDataInput newDataInput(final @NonNull DataInput input) throws IOException { + return new VersionedNormalizedNodeDataInput(input).delegate(); + } + + /** + * Creates a new {@link NormalizedNodeDataInput} instance that reads from the given input. This method does not + * perform any initial validation of the input stream. + * + * @param input the DataInput to read from + * @return a new {@link NormalizedNodeDataInput} instance + */ + public static NormalizedNodeDataInput newDataInputWithoutValidation(final @NonNull DataInput input) { + return new VersionedNormalizedNodeDataInput(input); + } - final short version = input.readShort(); + /** + * Creates a new {@link NormalizedNodeDataOutput} instance that writes to the given output and latest current + * stream version. + * + * @param output the DataOutput to write to + * @return a new {@link NormalizedNodeDataOutput} instance + */ + public static NormalizedNodeDataOutput newDataOutput(final @NonNull DataOutput output) { + return new NeonSR2NormalizedNodeOutputStreamWriter(output); + } + + /** + * Creates a new {@link NormalizedNodeDataOutput} instance that writes to the given output. + * + * @param output the DataOutput to write to + * @param version Streaming version to use + * @return a new {@link NormalizedNodeDataOutput} instance + */ + public static NormalizedNodeDataOutput newDataOutput(final @NonNull DataOutput output, + final @NonNull NormalizedNodeStreamVersion version) { switch (version) { - case TokenTypes.LITHIUM_VERSION: - return new NormalizedNodeInputStreamReader(input, true); + case LITHIUM: + return new LithiumNormalizedNodeOutputStreamWriter(output); + case NEON_SR2: + return new NeonSR2NormalizedNodeOutputStreamWriter(output); default: - throw new InvalidNormalizedNodeStreamException(String.format("Unhandled stream version %s", version)); + throw new IllegalStateException("Unhandled version " + version); } } - public static NormalizedNodeDataOutput newDataOutput(@Nonnull final DataOutput output) throws IOException { - return new NormalizedNodeOutputStreamWriter(output); - } }