import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableAugmentationNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetEntryNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder;
@Override
public void startLeafNode(final NodeIdentifier name) {
checkDataNodeContainer();
- enter(name, InterningLeafNodeBuilder.forSchema(nextSchema));
+ enter(name, leafNodeBuilder(nextSchema));
nextSchema = null;
}
checkArgument(current instanceof ImmutableLeafSetNodeBuilder
|| current instanceof ImmutableOrderedLeafSetNodeBuilder || current instanceof NormalizedNodeResultBuilder,
"LeafSetEntryNode is not valid for parent %s", current);
- enter(name, ImmutableLeafSetEntryNodeBuilder.create());
+ enter(name, leafsetEntryNodeBuilder());
nextSchema = null;
}
builders.push(builder);
}
+ private <T> ImmutableLeafNodeBuilder<T> leafNodeBuilder(final DataSchemaNode schema) {
+ final InterningLeafNodeBuilder<T> interning = InterningLeafNodeBuilder.forSchema(schema);
+ return interning != null ? interning : leafNodeBuilder();
+ }
+
+ <T> ImmutableLeafNodeBuilder<T> leafNodeBuilder() {
+ return new ImmutableLeafNodeBuilder<>();
+ }
+
+ <T> ImmutableLeafSetEntryNodeBuilder<T> leafsetEntryNodeBuilder() {
+ return ImmutableLeafSetEntryNodeBuilder.create();
+ }
+
private void checkDataNodeContainer() {
@SuppressWarnings("rawtypes")
final NormalizedNodeContainerBuilder current = currentContainer();
import com.google.common.collect.Interner;
import java.util.Optional;
-import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder;
this.interner = requireNonNull(interner);
}
- static <T> @NonNull ImmutableLeafNodeBuilder<T> forSchema(final @Nullable DataSchemaNode schema) {
+ static <T> @Nullable InterningLeafNodeBuilder<T> forSchema(final @Nullable DataSchemaNode schema) {
if (schema instanceof LeafSchemaNode) {
final Optional<Interner<LeafNode<T>>> interner = LeafInterner.forSchema((LeafSchemaNode)schema);
if (interner.isPresent()) {
return new InterningLeafNodeBuilder<>(interner.get());
}
}
-
- return new ImmutableLeafNodeBuilder<>();
+ return null;
}
@Override
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
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);
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;
+ }
}