Class AbstractSchemaContext

java.lang.Object
org.opendaylight.yangtools.yang.model.spi.AbstractSchemaContext
All Implemented Interfaces:
Immutable, ActionNodeContainer, AddedByUsesAware, AugmentationTarget, ContainerLike, CopyableNode, DataNodeContainer, DataSchemaNode, DocumentedNode, DocumentedNode.WithStatus, MustConstraintAware, NotificationNodeContainer, SchemaContext, SchemaNode, WhenConditionAware
Direct Known Subclasses:
FilteringSchemaContextProxy, SimpleSchemaContext

public abstract class AbstractSchemaContext extends Object implements SchemaContext
  • Field Details

    • REVISION_COMPARATOR

      public static final Comparator<Module> REVISION_COMPARATOR
      A Module comparator based on QNameModuleAware.getRevision(), placing latest revision first. Note this comparator does not take into account module name and so two modules with different names but same revisions compare as equal.
    • NAME_REVISION_COMPARATOR

      public static final Comparator<Module> NAME_REVISION_COMPARATOR
      A Module comparator based on ModuleLike.getName() and QNameModuleAware.getRevision(), ordering modules lexicographically by their name and then in order of descending revision. This comparator assumes that the combination of these two attributes is sufficient to be consistent with hashCode/equals.
  • Constructor Details

    • AbstractSchemaContext

      public AbstractSchemaContext()
  • Method Details

    • createModuleSet

      protected static final TreeSet<Module> createModuleSet()
      Create a TreeSet for containing Modules with the same name, such that the set is ordered by REVISION_COMPARATOR.
      Returns:
      A fresh TreeSet instance.
    • getNamespaceToModules

      protected abstract SetMultimap<XMLNamespace,Module> getNamespaceToModules()
      Returns the namespace-to-module mapping.
      Returns:
      Map of modules where key is namespace
    • getNameToModules

      protected abstract SetMultimap<String,Module> getNameToModules()
      Returns the module name-to-module mapping.
      Returns:
      Map of modules where key is name of module
    • getModuleMap

      protected abstract Map<QNameModule,Module> getModuleMap()
      Returns the namespace+revision-to-module mapping.
      Returns:
      Map of modules where key is Module's QNameModule.
    • getDataDefinitions

      public Collection<? extends DataSchemaNode> getDataDefinitions()
      Description copied from interface: SchemaContext
      Returns data schema node instances which represents direct subnodes (like leaf, leaf-list, list, container) in all YANG modules in the context.
      Specified by:
      getDataDefinitions in interface SchemaContext
      Returns:
      set of DataSchemaNode instances which represents YANG data nodes at the module top level
    • getNotifications

      public Collection<? extends NotificationDefinition> getNotifications()
      Description copied from interface: NotificationNodeContainer
      Return the set of notifications in this container, keyed by QName. RFC7950 specifies that AugmentationSchemaNodes, GroupingDefinitions, ListSchemaNodes and ContainerSchemaNodes can also contain NotificationDefinitions.
      Specified by:
      getNotifications in interface NotificationNodeContainer
      Returns:
      set of notification nodes
    • getOperations

      public Collection<? extends RpcDefinition> getOperations()
      Description copied from interface: SchemaContext
      Returns rpc definition instances which are defined as the direct subelements in all YANG modules in the context.
      Specified by:
      getOperations in interface SchemaContext
      Returns:
      set of RpcDefinition instances which represents nodes defined via rpc YANG keyword
    • getExtensions

      public Collection<? extends ExtensionDefinition> getExtensions()
      Description copied from interface: SchemaContext
      Returns extension definition instances which are defined as the direct subelements in all YANG modules in the context.
      Specified by:
      getExtensions in interface SchemaContext
      Returns:
      set of ExtensionDefinition instances which represents nodes defined via extension YANG keyword
    • findModule

      public Optional<? extends Module> findModule(String name, Optional<Revision> revision)
      Description copied from interface: SchemaContext
      Returns module instance (from the context) with specified name and an optional revision.
      Specified by:
      findModule in interface SchemaContext
      Parameters:
      name - string with the module name
      revision - date of the module revision
      Returns:
      module instance which has name and revision the same as are the values specified in parameters name and revision.
    • findModule

      public Optional<Module> findModule(QNameModule qnameModule)
      Description copied from interface: SchemaContext
      Returns the module matching specified QNameModule, if present.
      Specified by:
      findModule in interface SchemaContext
      Parameters:
      qnameModule - requested QNameModule
      Returns:
      Module, if present.
    • findModules

      public Collection<? extends Module> findModules(XMLNamespace namespace)
      Description copied from interface: SchemaContext
      Returns module instance (from the context) with concrete namespace. Returned Set is required to have its iteration order guarantee that the latest revision is encountered first.
      Specified by:
      findModules in interface SchemaContext
      Parameters:
      namespace - XMLNamespace instance with specified namespace
      Returns:
      module instance which has namespace equal to the namespace or null in other cases
    • findModules

      public Collection<? extends Module> findModules(String name)
      Description copied from interface: SchemaContext
      Returns module instances (from the context) with a concrete name. Returned Set is required to have its iteration order guarantee that the latest revision is encountered first.
      Specified by:
      findModules in interface SchemaContext
      Parameters:
      name - string with the module name
      Returns:
      set of module instances with specified name.
    • getUnknownSchemaNodes

      public Collection<? extends UnknownSchemaNode> getUnknownSchemaNodes()
      Description copied from interface: DocumentedNode
      Returns unknown schema nodes which belongs to this instance. Default implementation returns an empty collection.
      Specified by:
      getUnknownSchemaNodes in interface DocumentedNode
      Returns:
      collection of unknown schema nodes defined under this node.
    • getTypeDefinitions

      public Collection<? extends TypeDefinition<?>> getTypeDefinitions()
      Description copied from interface: DataNodeContainer
      Returns set of all newly defined types within this DataNodeContainer.
      Specified by:
      getTypeDefinitions in interface DataNodeContainer
      Returns:
      typedef statements in lexicographical order
    • getChildNodes

      public Collection<? extends DataSchemaNode> getChildNodes()
      Description copied from interface: DataNodeContainer
      Returns set of all child nodes defined within this DataNodeContainer. Although the return type is a collection, each node is guaranteed to be present at most once.

      Note that the nodes returned are NOT data nodes, but rather DataSchemaNodes, hence ChoiceSchemaNode and CaseSchemaNode are present instead of their children. This is consistent with schema tree.

      Specified by:
      getChildNodes in interface DataNodeContainer
      Returns:
      child nodes in lexicographical order
    • getGroupings

      public Collection<? extends GroupingDefinition> getGroupings()
      Description copied from interface: DataNodeContainer
      Returns set of all groupings defined within this DataNodeContainer.
      Specified by:
      getGroupings in interface DataNodeContainer
      Returns:
      grouping statements in lexicographical order
    • dataChildByName

      public DataSchemaNode dataChildByName(QName name)
      Description copied from interface: DataNodeContainer
      Returns the child node corresponding to the specified name.

      Note that the nodes searched are NOT data nodes, but rather DataSchemaNodes, hence ChoiceSchemaNode and CaseSchemaNode are returned instead of their matching children. This is consistent with schema tree.

      Specified by:
      dataChildByName in interface DataNodeContainer
      Parameters:
      name - QName of child
      Returns:
      child node of this DataNodeContainer if child with given name is present, null otherwise
    • getDerivedIdentities

      public Collection<? extends IdentitySchemaNode> getDerivedIdentities(IdentitySchemaNode identity)
      Description copied from interface: SchemaContext
      Get identities derived from a selected identity.
      Specified by:
      getDerivedIdentities in interface SchemaContext
      Parameters:
      identity - base identity
      Returns:
      collection of identities derived from this identity