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%2FNormalizedNodeDataInput.java;h=8d05061e63ac816af10af1306f1c18fe7d27c9cf;hb=ae6c61499e2c7c76e0406ce397657cd31ddd4d3f;hp=9dda8bf6e47f5c1664b1060d7cc085196f6a64fa;hpb=c7e9379c4e2f3b2e916d94c938623df7966c7fa0;p=controller.git diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeDataInput.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeDataInput.java index 9dda8bf6e4..8d05061e63 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeDataInput.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeDataInput.java @@ -17,8 +17,8 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; -import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; -import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; +import org.opendaylight.yangtools.yang.data.api.schema.stream.ReusableStreamReceiver; +import org.opendaylight.yangtools.yang.data.impl.schema.ReusableImmutableNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.model.api.SchemaPath; /** @@ -45,11 +45,24 @@ public interface NormalizedNodeDataInput extends DataInput { * @throws IllegalStateException if the dictionary has been detached */ default NormalizedNode readNormalizedNode() throws IOException { - final NormalizedNodeResult result = new NormalizedNodeResult(); - try (NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(result)) { - streamNormalizedNode(writer); + return readNormalizedNode(ReusableImmutableNormalizedNodeStreamWriter.create()); + } + + /** + * Read a normalized node from the reader, using specified writer to construct the result. + * + * @param receiver Reusable receiver to, expected to be reset + * @return Next node from the stream, or null if end of stream has been reached. + * @throws IOException if an error occurs + * @throws IllegalStateException if the dictionary has been detached + */ + default NormalizedNode readNormalizedNode(final ReusableStreamReceiver receiver) throws IOException { + try { + streamNormalizedNode(receiver); + return receiver.getResult(); + } finally { + receiver.reset(); } - return result.getResult(); } YangInstanceIdentifier readYangInstanceIdentifier() throws IOException;