/**
*
* Definition of normalized YANG DOM Model
*
* Normalized DOM Model brings more direct mapping between YANG Model, DOM
* representation of data
*
*
Normalized DOM Model
*
* Node Types
*
* - {@link org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode} -
* Base type representing a node in a tree structure; all nodes are derived from
* it, it contains a leaf identifier and a value.
*
* -
* {@link org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode} -
* Node which contains multiple leafs; it does not have a direct representation
* in the YANG syntax.
*
* - {@link org.opendaylight.yangtools.yang.data.api.schema.ContainerNode} -
* Node, which represents a leaf which can occur only once per parent node; it
* contains multiple child leaves and maps to the container statement in
* YANG.
* - {@link org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode} -
* Node which represents a leaf, which can occur multiple times; a leave is
* uniquely identified by the value of its key. A MapEntryNode may contain
* multiple child leaves. MapEntryNode maps to the instance of list in
* YANG.
* -
* {@link org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode}
* - Node which represents a leaf, which can occur multiple times; a leave is
* uniquely identified by the value of its key. A MapEntryNode may contain
* multiple child leaves. MapEntryNode maps to the instance of list in
* YANG.
* - {@link org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode} - Node
* which represents a leaf, which occurs mostly once per parent node, but
* possible values could have different types. Maps to choice statement.
* Types maps to the case statements for that choice.
* - {@link org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode}
* - Node which represents a leaf, which occurs mostly once per parent node.
*
*
* - {@link org.opendaylight.yangtools.yang.data.api.schema.LeafNode} - Node
* which represents a leaf, which occurs mostly once per parent node. Contains
* simple value.
* - {@link org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode}
* - Node which represents a leaf, which type could occurs multiple times per
* parent node. Maps to to the instances of leaf-list in YANG.
* - {@link org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode} -
* Special node, which can occur only once per parent node; its leaves are
* LeafSetEntryNode nodes of specified type. Maps into the leaf-list in
* YANG.
* - {@link org.opendaylight.yangtools.yang.data.api.schema.MapNode} - Special
* node, which can occur only once per parent node; its leaves are MapEntryNode
* nodes.
*
* - {@link org.opendaylight.yangtools.yang.data.api.schema.OrderedMapNode} -
* Special node, which can occur only once per parent node; its leaves are
* MapEntryNode nodes.
*
*
* - {@link org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode} -
* Special node, which can occur only once per parent node; its leaves are
* MapEntryNode nodes.
*
*
*
*
* Tree / subtree structure
Grammar representation
*
*
* {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier} = {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument}*
* {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument} = {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier}| {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifierWithPredicates}| {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeWithValue} | {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.AugmentationIdentifier}
*
* TreeRoot = {@link org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode}
* {@link org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode} = ( {@link org.opendaylight.yangtools.yang.data.api.schema.LeafNode} | {@link org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode} | {@link org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode} | {@link org.opendaylight.yangtools.yang.data.api.schema.MapNode} | {@link org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode})*
* ContainerDataNode = {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier} {@link org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode}
*
* {@link org.opendaylight.yangtools.yang.data.api.schema.LeafNode} = {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier} SimpleValue
* {@link org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode} = {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.AugmentationIdentifier} {@link org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode}
* {@link org.opendaylight.yangtools.yang.data.api.schema.MapNode} = {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier} {@link org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode}
* {@link org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode} = {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifierWithPredicates} {@link org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode}
*
* // Special nodes
* {@link org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode} = {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier} {@link org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode}*
* {@link org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode} = {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier} {@link org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode}
* {@link org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode} = {@link org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeWithValue} SimpleValue
*
*
* The resulting tree organization is following:
*
*
* - (DataContainerNode)
*
* - (0..n) LeafNode
* - (0..n) LeafSetNode
*
* - (0..n) LeafSetEntryNode
*
*
* - (0..n) ContainerNode
*
* - (Same as DataContainerNode)
*
*
* - (0..n) ContainerNode
*
* - (Same as DataContainerNode)
*
*
* - (0..n) MapNode
*
* - (0..n) MapEntryNode
*
* - (Same as DataContainerNode)
*
*
*
*
* - (0..n) AugmentationNode
*
* - (Same as DataContainerNode)
*
*
*
*
*
*
* Ordering of child nodes
*
* Ordering of child nodes is not enforced by this API definition, unless
* explicitly stated by subclasses of
* {@link org.opendaylight.yangtools.yang.data.api.schema.OrderedNodeContainer}
* which marks nodes with semantic constrain to preserve user-supplied ordering.
*
* Clients should not expect any specific ordering of child nodes for interfaces
* from this package which does not extend
* {@link org.opendaylight.yangtools.yang.data.api.schema.OrderedNodeContainer},
* since implementations are not required to have well-defined order, which
* allows for more efficient implementations. If such ordering is required by
* clients for serialization / debugability it SHOULD be done externally in
* code using these interfaces.
*
*/
package org.opendaylight.yangtools.yang.data.api.schema;