Introduce map-related ImmutableNodes operations 72/74672/6
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 30 Jul 2018 22:23:52 +0000 (00:23 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 31 Jul 2018 01:11:16 +0000 (03:11 +0200)
These will come in handy for creating empty lists.

JIRA: YANGTOOLS-585
Change-Id: I3173baa03d540196caf50312652dba1876b8b1b9
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
Signed-off-by: Igor Foltin <ifoltin@cisco.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/ImmutableNodes.java

index 7d4f4a0f6111c553e2cc26b0b1ac6ed4545c0a78..6ab563185f1dc540bd1df9e230b8e816a53eb2db 100644 (file)
@@ -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<MapEntryNode, OrderedMapNode> orderedMapNodeBuilder(final QName qname) {
+        return orderedMapNodeBuilder().withNodeIdentifier(NodeIdentifier.create(qname));
+    }
+
+    private static CollectionNodeBuilder<MapEntryNode, OrderedMapNode> 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.
      *