X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2FImmutableNormalizedNodeStreamWriter.java;h=aec3a9c6db9d71651650243a2a83beb12e929ef2;hb=82af449e4ef07d80490e79484d0402b81009541e;hp=13327f54aa0144745bc4798a237f6210311aabe5;hpb=73d49d0ace358adba79a2567acea14e4bb076003;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriter.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriter.java index 13327f54aa..aec3a9c6db 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriter.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNormalizedNodeStreamWriter.java @@ -11,6 +11,7 @@ import com.google.common.base.Preconditions; import java.util.ArrayDeque; import java.util.Collection; import java.util.Deque; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; @@ -25,6 +26,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode; import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode; +import org.opendaylight.yangtools.yang.data.api.schema.YangModeledAnyXmlNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.api.schema.stream.SchemaAwareNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder; @@ -39,12 +41,15 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableCo import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafSetNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapEntryNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableOrderedLeafSetNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableOrderedMapNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListEntryNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableYangModeledAnyXmlNodeBuilder; import org.opendaylight.yangtools.yang.data.util.LeafInterner; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; +import org.opendaylight.yangtools.yang.model.api.YangModeledAnyXmlSchemaNode; /** * @@ -85,7 +90,7 @@ public class ImmutableNormalizedNodeStreamWriter implements SchemaAwareNormalize * @param builder Builder to which data will be written. * @return {@link NormalizedNodeStreamWriter} which writes data */ - public static final NormalizedNodeStreamWriter from(final NormalizedNodeContainerBuilder builder) { + public static NormalizedNodeStreamWriter from(final NormalizedNodeContainerBuilder builder) { return new ImmutableNormalizedNodeStreamWriter(builder); } @@ -107,7 +112,7 @@ public class ImmutableNormalizedNodeStreamWriter implements SchemaAwareNormalize * @param result {@link NormalizedNodeResult} object which will hold result value. * @return {@link NormalizedNodeStreamWriter} which will write item to supplied result holder. */ - public static final NormalizedNodeStreamWriter from(final NormalizedNodeResult result) { + public static NormalizedNodeStreamWriter from(final NormalizedNodeResult result) { return new ImmutableNormalizedNodeStreamWriter(result); } @@ -166,14 +171,30 @@ public class ImmutableNormalizedNodeStreamWriter implements SchemaAwareNormalize } @Override - public void leafSetEntryNode(final Object value) { - Preconditions.checkArgument(getCurrent() instanceof ImmutableLeafSetNodeBuilder); - @SuppressWarnings("unchecked") - final ListNodeBuilder> builder = ((ImmutableLeafSetNodeBuilder) getCurrent()); - builder.withChildValue(value); + public void leafSetEntryNode(final QName name, final Object value) { + if (getCurrent() instanceof ImmutableOrderedLeafSetNodeBuilder) { + @SuppressWarnings("unchecked") + ListNodeBuilder> builder = ((ImmutableOrderedLeafSetNodeBuilder) getCurrent()); + builder.withChildValue(value); + } else if (getCurrent() instanceof ImmutableLeafSetNodeBuilder) { + @SuppressWarnings("unchecked") + ListNodeBuilder> builder = ((ImmutableLeafSetNodeBuilder) getCurrent()); + builder.withChildValue(value); + } else { + throw new IllegalArgumentException("LeafSetEntryNode is not valid for parent " + getCurrent()); + } + nextSchema = null; } + @Override + public void startOrderedLeafSet(final NodeIdentifier name, final int childSizeHint) { + checkDataNodeContainer(); + final ListNodeBuilder> builder = Builders.orderedLeafSetBuilder(); + builder.withNodeIdentifier(name); + enter(builder); + } + @Override public void anyxmlNode(final NodeIdentifier name, final Object value) { checkDataNodeContainer(); @@ -189,6 +210,18 @@ public class ImmutableNormalizedNodeStreamWriter implements SchemaAwareNormalize enter(builder.withNodeIdentifier(name)); } + @Override + public void startYangModeledAnyXmlNode(final NodeIdentifier name, final int childSizeHint) { + checkDataNodeContainer(); + + Preconditions.checkArgument(nextSchema instanceof YangModeledAnyXmlSchemaNode, + "Schema of this node should be instance of YangModeledAnyXmlSchemaNode"); + final DataContainerNodeAttrBuilder builder = UNKNOWN_SIZE == childSizeHint ? ImmutableYangModeledAnyXmlNodeBuilder + .create((YangModeledAnyXmlSchemaNode) nextSchema) : ImmutableYangModeledAnyXmlNodeBuilder.create( + (YangModeledAnyXmlSchemaNode) nextSchema, childSizeHint); + enter(builder.withNodeIdentifier(name)); + } + @Override public void startUnkeyedList(final NodeIdentifier name, final int childSizeHint) { checkDataNodeContainer(); @@ -218,7 +251,7 @@ public class ImmutableNormalizedNodeStreamWriter implements SchemaAwareNormalize @Override public void startMapEntryNode(final NodeIdentifierWithPredicates identifier, final int childSizeHint) { - if(!(getCurrent() instanceof NormalizedNodeResultBuilder)) { + if (!(getCurrent() instanceof NormalizedNodeResultBuilder)) { Preconditions.checkArgument(getCurrent() instanceof ImmutableMapNodeBuilder || getCurrent() instanceof ImmutableOrderedMapNodeBuilder); }