From: Robert Varga Date: Wed, 11 Sep 2019 20:05:19 +0000 (+0200) Subject: Remove ensureHeaderWritten() from writeNode() X-Git-Tag: release/magnesium~101 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=1165ba34382d4c99394e64d71ffee783d6a8fe82 Remove ensureHeaderWritten() from writeNode() This updates documentation of AbstractNormalizedNodeDataOutput to make it clear that the NormalizedNodeStreamWriter aspect of it is an implementation detail and that the stream has been header-initialized by the time any of those methods are called. The clarification renders calling ensureHeaderWritten() from writeNode() superfluous, as at that point it is guaranteed to be a no-op. Change-Id: I85a5c1304849fe5bc737fa51bd4b40ff2dd8c08c Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/AbstractNormalizedNodeDataOutput.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/AbstractNormalizedNodeDataOutput.java index fb677a33df..bb6e97a00e 100755 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/AbstractNormalizedNodeDataOutput.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/AbstractNormalizedNodeDataOutput.java @@ -40,18 +40,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * NormalizedNodeOutputStreamWriter will be used by distributed datastore to send normalized node in - * a stream. - * A stream writer wrapper around this class will write node objects to stream in recursive manner. - * for example - If you have a ContainerNode which has a two LeafNode as children, then - * you will first call - * {@link #startContainerNode(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier, int)}, - * then will call - * {@link #leafNode(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier, Object)} twice - * and then, {@link #endNode()} to end container node. + * Abstract base class for implementing {@link NormalizedNodeDataOutput} contract. This class uses + * {@link NormalizedNodeStreamWriter} as an internal interface for performing the actual NormalizedNode writeout, + * i.e. it will defer to a {@link NormalizedNodeWriter} instance. * - *

Based on the each node, the node type is also written to the stream, that helps in reconstructing the object, - * while reading. + *

+ * As such, this is an implementation detail not exposed from this package, hence implementations can rely on the + * stream being initialized with a header and version. */ abstract class AbstractNormalizedNodeDataOutput implements NormalizedNodeDataOutput, NormalizedNodeStreamWriter { private static final Logger LOG = LoggerFactory.getLogger(AbstractNormalizedNodeDataOutput.class); @@ -67,6 +62,10 @@ abstract class AbstractNormalizedNodeDataOutput implements NormalizedNodeDataOut this.output = requireNonNull(output); } + final DataOutput output() { + return output; + } + private void ensureHeaderWritten() throws IOException { if (!headerWritten) { output.writeByte(TokenTypes.SIGNATURE_MARKER); @@ -344,8 +343,6 @@ abstract class AbstractNormalizedNodeDataOutput implements NormalizedNodeDataOut requireNonNull(arg, "Node identifier should not be null"); checkState(!inSimple, "Attempted to start a child in a simple node"); - ensureHeaderWritten(); - // First write the type of node output.writeByte(nodeType); // Write Start Tag