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;
/**
* @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;