From: Robert Varga Date: Mon, 30 Jul 2018 22:23:52 +0000 (+0200) Subject: Introduce map-related ImmutableNodes operations X-Git-Tag: v2.0.10~15 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=c4ccd44a8fa713470f49f83c1cdb7b6c1cc72891;p=yangtools.git Introduce map-related ImmutableNodes operations These will come in handy for creating empty lists. JIRA: YANGTOOLS-585 Change-Id: I3173baa03d540196caf50312652dba1876b8b1b9 Signed-off-by: Maros Marsalek Signed-off-by: Igor Foltin Signed-off-by: Robert Varga --- diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNodes.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNodes.java index 7d4f4a0f61..6ab563185f 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNodes.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNodes.java @@ -21,6 +21,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; 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.UnkeyedListNode; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeBuilder; @@ -28,6 +30,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableCo import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder; 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.ImmutableUnkeyedListNodeBuilder; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -49,6 +53,34 @@ public final class ImmutableNodes { return ImmutableMapNodeBuilder.create().withNodeIdentifier(name); } + /** + * Create an immutable map node. + * + * @param name QName which will be used as node identifier + * @return An unordered Map node + */ + public static MapNode mapNode(final QName name) { + return mapNodeBuilder(name).build(); + } + + private static CollectionNodeBuilder orderedMapNodeBuilder(final QName qname) { + return orderedMapNodeBuilder().withNodeIdentifier(NodeIdentifier.create(qname)); + } + + private static CollectionNodeBuilder orderedMapNodeBuilder() { + return ImmutableOrderedMapNodeBuilder.create(); + } + + /** + * Create immutable ordered map node. + * + * @param name QName which will be used as node identifier + * @return An ordered Map node + */ + public static OrderedMapNode orderedMapNode(final QName name) { + return orderedMapNodeBuilder(name).build(); + } + /** * Construct immutable leaf node. * @@ -91,14 +123,36 @@ public final class ImmutableNodes { return mapEntryBuilder(nodeName, keyName, keyValue).build(); } + /** + * Create an immutable container node. + * + * @param name QName which will be used as node identifier + * @return A container node + */ public static ContainerNode containerNode(final QName name) { return ImmutableContainerNodeBuilder.create().withNodeIdentifier(NodeIdentifier.create(name)).build(); } + /** + * Create an immutable choice node. + * + * @param name QName which will be used as node identifier + * @return A choice node + */ public static ChoiceNode choiceNode(final QName name) { return ImmutableChoiceNodeBuilder.create().withNodeIdentifier(NodeIdentifier.create(name)).build(); } + /** + * Create an immutable list node. + * + * @param name QName which will be used as node identifier + * @return An unkeyed list node + */ + public static UnkeyedListNode listNode(final QName name) { + return ImmutableUnkeyedListNodeBuilder.create().withNodeIdentifier(NodeIdentifier.create(name)).build(); + } + /** * Convert YangInstanceIdentifier into a normalized node structure. *