Switch default stream output to Magnesium
[controller.git] / opendaylight / md-sal / sal-clustering-commons / src / main / java / org / opendaylight / controller / cluster / datastore / node / utils / stream / NormalizedNodeDataInput.java
index 9dda8bf6e47f5c1664b1060d7cc085196f6a64fa..8d05061e63ac816af10af1306f1c18fe7d27c9cf 100644 (file)
@@ -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;