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=c97819bb381c6b355b9ad8fd0662eedca27e1ca2;hb=8c7f61fe6c73a27c748814d2610d7784ce73e796;hp=c39c2ecd78b452d0e5102ce8df6bc04b58f09d94;hpb=641e97941c1d0098b19dd0ec30dae372ea4110c3;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 c39c2ecd78..c97819bb38 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 @@ -8,27 +8,37 @@ package org.opendaylight.yangtools.yang.data.impl.schema; import com.google.common.base.Preconditions; - -import java.io.IOException; import java.util.ArrayDeque; +import java.util.Collection; import java.util.Deque; -import java.util.List; - 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; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; +import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; +import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode; +import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; +import org.opendaylight.yangtools.yang.data.api.schema.MapNode; 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.stream.NormalizedNodeStreamWriter; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.ListNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeContainerBuilder; 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.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.ImmutableOrderedMapNodeBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListEntryNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableUnkeyedListNodeBuilder; /** @@ -83,11 +93,10 @@ public class ImmutableNormalizedNodeStreamWriter implements NormalizedNodeStream *

* This method is useful for clients, which knows there will be one * top level node written, but does not know which type of {@link NormalizedNode} - * will be writen. - * + * will be written. * * @param result {@link NormalizedNodeResult} object which will hold result value. - * @return {@link NormalizedNodeStreamWriter} whcih will write item to supplied result holder. + * @return {@link NormalizedNodeStreamWriter} which will write item to supplied result holder. */ public static final NormalizedNodeStreamWriter from(final NormalizedNodeResult result) { return new ImmutableNormalizedNodeStreamWriter(new NormalizedNodeResultBuilder(result)); @@ -127,9 +136,10 @@ public class ImmutableNormalizedNodeStreamWriter implements NormalizedNodeStream } @Override - public void startLeafSet(final NodeIdentifier name,final int childSizeHint) throws IllegalArgumentException { + public void startLeafSet(final NodeIdentifier name, final int childSizeHint) throws IllegalArgumentException { checkDataNodeContainer(); - ListNodeBuilder> builder = Builders.leafSetBuilder(); + ListNodeBuilder> builder = UNKNOWN_SIZE == childSizeHint ? + ImmutableLeafSetNodeBuilder.create() : ImmutableLeafSetNodeBuilder.create(childSizeHint); builder.withNodeIdentifier(name); enter(builder); } @@ -145,55 +155,73 @@ public class ImmutableNormalizedNodeStreamWriter implements NormalizedNodeStream @Override public void anyxmlNode(final NodeIdentifier name, final Object value) throws IllegalArgumentException { checkDataNodeContainer(); - - } @Override - public void startContainerNode(final NodeIdentifier name,final int childSizeHint) throws IllegalArgumentException { + public void startContainerNode(final NodeIdentifier name, final int childSizeHint) throws IllegalArgumentException { checkDataNodeContainer(); - enter(Builders.containerBuilder().withNodeIdentifier(name)); + + final DataContainerNodeAttrBuilder builder = UNKNOWN_SIZE == childSizeHint ? + ImmutableContainerNodeBuilder.create() : ImmutableContainerNodeBuilder.create(childSizeHint); + enter(builder.withNodeIdentifier(name)); } @Override - public void startUnkeyedList(final NodeIdentifier name,final int childSizeHint) throws IllegalArgumentException { + public void startUnkeyedList(final NodeIdentifier name, final int childSizeHint) throws IllegalArgumentException { checkDataNodeContainer(); - enter(Builders.unkeyedListBuilder().withNodeIdentifier(name)); + + final CollectionNodeBuilder builder = UNKNOWN_SIZE == childSizeHint ? + ImmutableUnkeyedListNodeBuilder.create() : ImmutableUnkeyedListNodeBuilder.create(childSizeHint); + enter(builder.withNodeIdentifier(name)); } @Override - public void startUnkeyedListItem(final NodeIdentifier name,final int childSizeHint) throws IllegalStateException { + public void startUnkeyedListItem(final NodeIdentifier name, final int childSizeHint) throws IllegalStateException { Preconditions.checkArgument(getCurrent() instanceof ImmutableUnkeyedListNodeBuilder); - enter(Builders.unkeyedListEntryBuilder().withNodeIdentifier(name)); + + final DataContainerNodeAttrBuilder builder = UNKNOWN_SIZE == childSizeHint ? + ImmutableUnkeyedListEntryNodeBuilder.create() : ImmutableUnkeyedListEntryNodeBuilder.create(childSizeHint); + enter(builder.withNodeIdentifier(name)); } @Override - public void startMapNode(final NodeIdentifier name,final int childSizeHint) throws IllegalArgumentException { + public void startMapNode(final NodeIdentifier name, final int childSizeHint) throws IllegalArgumentException { checkDataNodeContainer(); - enter(Builders.mapBuilder().withNodeIdentifier(name)); + + final CollectionNodeBuilder builder = UNKNOWN_SIZE == childSizeHint ? + ImmutableMapNodeBuilder.create() : ImmutableMapNodeBuilder.create(childSizeHint); + enter(builder.withNodeIdentifier(name)); } @Override - public void startMapEntryNode(final NodeIdentifierWithPredicates identifier,final int childSizeHint) throws IllegalArgumentException { + public void startMapEntryNode(final NodeIdentifierWithPredicates identifier, final int childSizeHint) throws IllegalArgumentException { if(!(getCurrent() instanceof NormalizedNodeResultBuilder)) { - Preconditions.checkArgument(getCurrent() instanceof ImmutableMapNodeBuilder); + Preconditions.checkArgument(getCurrent() instanceof ImmutableMapNodeBuilder || getCurrent() instanceof ImmutableOrderedMapNodeBuilder); } - enter(Builders.mapEntryBuilder().withNodeIdentifier(identifier)); + + final DataContainerNodeAttrBuilder builder = UNKNOWN_SIZE == childSizeHint ? + ImmutableMapEntryNodeBuilder.create() : ImmutableMapEntryNodeBuilder.create(childSizeHint); + enter(builder.withNodeIdentifier(identifier)); } @Override - public void startOrderedMapNode(final NodeIdentifier name,final int childSizeHint) throws IllegalArgumentException { - if(!(getCurrent() instanceof NormalizedNodeResultBuilder)) { - Preconditions.checkArgument(getCurrent() instanceof ImmutableOrderedMapNodeBuilder); - } - enter(Builders.mapBuilder().withNodeIdentifier(name)); + public void startOrderedMapNode(final NodeIdentifier name, final int childSizeHint) throws IllegalArgumentException { + checkDataNodeContainer(); + + final CollectionNodeBuilder builder = UNKNOWN_SIZE == childSizeHint ? + ImmutableOrderedMapNodeBuilder.create() : ImmutableOrderedMapNodeBuilder.create(childSizeHint); + enter(builder.withNodeIdentifier(name)); } @Override - public void startChoiceNode(final NodeIdentifier name,final int childSizeHint) throws IllegalArgumentException { + public void startChoiceNode(final NodeIdentifier name, final int childSizeHint) throws IllegalArgumentException { checkDataNodeContainer(); - enter(Builders.choiceBuilder().withNodeIdentifier(name)); + + final DataContainerNodeBuilder builder = UNKNOWN_SIZE == childSizeHint ? + ImmutableChoiceNodeBuilder.create() : ImmutableChoiceNodeBuilder.create(childSizeHint); + enter(builder.withNodeIdentifier(name)); } + @Override public void startAugmentationNode(final AugmentationIdentifier identifier) throws IllegalArgumentException { checkDataNodeContainer(); @@ -234,7 +262,7 @@ public class ImmutableNormalizedNodeStreamWriter implements NormalizedNodeStream } @Override - public NormalizedNodeContainerBuilder withValue(final List value) { + public NormalizedNodeContainerBuilder withValue(final Collection value) { throw new UnsupportedOperationException(); } @@ -257,9 +285,7 @@ public class ImmutableNormalizedNodeStreamWriter implements NormalizedNodeStream } @Override - public void close() throws IOException { - // TODO Auto-generated method stub - + public void close() { + // no-op } - }