Make ReusableImmutableNormalizedNodeStreamWriter reuse leaf builders
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / ReusableImmutableNormalizedNodeStreamWriter.java
index 25710269402e675d684353e0b6834b17ec273d8e..fc49467004ae78bd27de24576b5d76490309313c 100644 (file)
@@ -13,6 +13,8 @@ import com.google.common.annotations.Beta;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.ReusableStreamReceiver;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder;
 
 /**
  * A reusable variant of {@link ImmutableNormalizedNodeStreamWriter}. It can be reset into its base state and used for
@@ -23,6 +25,9 @@ public final class ReusableImmutableNormalizedNodeStreamWriter extends Immutable
         implements ReusableStreamReceiver {
     private final NormalizedNodeResultBuilder builder;
 
+    private final ImmutableLeafSetEntryNodeBuilder<?> leafsetEntryBuilder = ImmutableLeafSetEntryNodeBuilder.create();
+    private final ImmutableLeafNodeBuilder<?> leafNodeBuilder = new ImmutableLeafNodeBuilder<>();
+
     private ReusableImmutableNormalizedNodeStreamWriter(final NormalizedNodeResultBuilder builder) {
         super(builder);
         this.builder = requireNonNull(builder);
@@ -42,4 +47,16 @@ public final class ReusableImmutableNormalizedNodeStreamWriter extends Immutable
     public NormalizedNode<?, ?> getResult() {
         return builder.result().getResult();
     }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    <T> ImmutableLeafNodeBuilder<T> leafNodeBuilder() {
+        return (ImmutableLeafNodeBuilder<T>) leafNodeBuilder;
+    }
+
+    @Override
+    @SuppressWarnings("unchecked")
+    <T> ImmutableLeafSetEntryNodeBuilder<T> leafsetEntryNodeBuilder() {
+        return (ImmutableLeafSetEntryNodeBuilder<T>) leafsetEntryBuilder;
+    }
 }