Use ReusableNormalizedNodeReceiver
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 27 Sep 2019 05:12:32 +0000 (07:12 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 7 Oct 2019 10:19:14 +0000 (12:19 +0200)
This simplifies some APIs by using ReusableStreamReceiver, as it
is an API-level construct rather than a particular implementation.

Change-Id: Id9d14d512ac7150a3e71c104577546e219cd86d0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
java/org/opendaylight/controller/cluster/datastore/node/utils/stream/ForwardingNormalizedNodeDataInput.java
java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeDataInput.java

index a1a0d69426f31bcbf4aee4e4fc3ca244b93f65ff..72073c695d94b56083cf017a6273158fc4df6fec 100644 (file)
@@ -14,7 +14,7 @@ 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.ReusableImmutableNormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.ReusableStreamReceiver;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 abstract class ForwardingNormalizedNodeDataInput extends ForwardingDataInput implements NormalizedNodeDataInput {
@@ -33,9 +33,8 @@ abstract class ForwardingNormalizedNodeDataInput extends ForwardingDataInput imp
     }
 
     @Override
-    public final NormalizedNode<?, ?> readNormalizedNode(final ReusableImmutableNormalizedNodeStreamWriter writer)
-            throws IOException {
-        return delegate().readNormalizedNode(writer);
+    public final NormalizedNode<?, ?> readNormalizedNode(final ReusableStreamReceiver receiver) throws IOException {
+        return delegate().readNormalizedNode(receiver);
     }
 
     @Override
index 57d41d58354a916e401ae1e2424b1db167386ddb..8d05061e63ac816af10af1306f1c18fe7d27c9cf 100644 (file)
@@ -17,8 +17,7 @@ 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;
 
@@ -46,28 +45,23 @@ 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 result.getResult();
+        return readNormalizedNode(ReusableImmutableNormalizedNodeStreamWriter.create());
     }
 
     /**
      * Read a normalized node from the reader, using specified writer to construct the result.
      *
-     * @param writer Reusable writer to
+     * @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 ReusableImmutableNormalizedNodeStreamWriter writer)
-            throws IOException {
+    default NormalizedNode<?, ?> readNormalizedNode(final ReusableStreamReceiver receiver) throws IOException {
         try {
-            streamNormalizedNode(writer);
-            return writer.getResult();
+            streamNormalizedNode(receiver);
+            return receiver.getResult();
         } finally {
-            writer.reset();
+            receiver.reset();
         }
     }