Class StmtContextUtils

java.lang.Object
org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils

public final class StmtContextUtils extends Object
  • Method Details

    • firstAttributeOf

      public static <A, D extends DeclaredStatement<A>> A firstAttributeOf(Iterable<? extends StmtContext<?,?,?>> contexts, Class<D> declaredType)
    • firstAttributeOf

      public static <A, D extends DeclaredStatement<A>> A firstAttributeOf(StmtContext<?,?,?> ctx, Class<D> declaredType)
    • firstSubstatementAttributeOf

      public static <A, D extends DeclaredStatement<A>> A firstSubstatementAttributeOf(StmtContext<?,?,?> ctx, Class<D> declaredType)
    • findFirstDeclaredSubstatement

      public static <A, D extends DeclaredStatement<A>> StmtContext<A,?,?> findFirstDeclaredSubstatement(StmtContext<?,?,?> stmtContext, Class<D> declaredType)
    • findFirstDeclaredSubstatement

      @SafeVarargs public static StmtContext<?,?,?> findFirstDeclaredSubstatement(StmtContext<?,?,?> stmtContext, int startIndex, Class<? extends DeclaredStatement<?>>... types)
    • findAllDeclaredSubstatements

      public static <A, D extends DeclaredStatement<A>> Collection<StmtContext<A,D,?>> findAllDeclaredSubstatements(StmtContext<?,?,?> stmtContext, Class<D> declaredType)
    • findAllEffectiveSubstatements

      public static <A, D extends DeclaredStatement<A>> Collection<StmtContext<A,D,?>> findAllEffectiveSubstatements(StmtContext<?,?,?> stmtContext, Class<D> type)
    • findAllSubstatements

      public static <A, D extends DeclaredStatement<A>> Collection<StmtContext<A,D,?>> findAllSubstatements(StmtContext<?,?,?> stmtContext, Class<D> type)
    • findFirstEffectiveSubstatement

      public static <A, D extends DeclaredStatement<A>> StmtContext<A,?,?> findFirstEffectiveSubstatement(StmtContext<?,?,?> stmtContext, Class<D> declaredType)
    • findFirstDeclaredSubstatementOnSublevel

      public static <D extends DeclaredStatement<?>> StmtContext<?,?,?> findFirstDeclaredSubstatementOnSublevel(StmtContext<?,?,?> stmtContext, Class<? super D> declaredType, int sublevel)
    • findDeepFirstDeclaredSubstatement

      public static <D extends DeclaredStatement<?>> StmtContext<?,?,?> findDeepFirstDeclaredSubstatement(StmtContext<?,?,?> stmtContext, Class<? super D> declaredType)
    • isInExtensionBody

      public static boolean isInExtensionBody(StmtContext<?,?,?> stmtCtx)
    • isUnknownStatement

      public static boolean isUnknownStatement(StmtContext<?,?,?> stmtCtx)
      Returns true if supplied statement context represents unknown statement, otherwise returns false.
      Parameters:
      stmtCtx - statement context to be checked
      Returns:
      true if supplied statement context represents unknown statement, otherwise false
      Throws:
      NullPointerException - if supplied statement context is null
    • evaluateIfFeatures

      public static boolean evaluateIfFeatures(@NonNull StmtContext<?,?,?> stmt)
      Evaluate if-feature substatement of a statement and indicate whether they result in the statement being supported.
      Parameters:
      stmt - Parent statement
      Returns:
      true if the statement is indicated to be supported under currently-supported features
    • checkFeatureSupport

      public static boolean checkFeatureSupport(StmtContext<?,?,?> stmtContext, FeatureSet supportedFeatures)
    • isPresenceContainer

      public static boolean isPresenceContainer(StmtContext<?,?,?> stmtCtx)
      Checks whether statement context is a presence container or not.
      Parameters:
      stmtCtx - statement context
      Returns:
      true if it is a presence container
    • isNonPresenceContainer

      public static boolean isNonPresenceContainer(StmtContext<?,?,?> stmtCtx)
      Checks whether statement context is a non-presence container or not.
      Parameters:
      stmtCtx - statement context
      Returns:
      true if it is a non-presence container
    • isMandatoryNode

      public static boolean isMandatoryNode(StmtContext<?,?,?> stmtCtx)
      Checks whether statement context is a mandatory leaf, choice, anyxml, list or leaf-list according to RFC6020 or not.
      Parameters:
      stmtCtx - statement context
      Returns:
      true if it is a mandatory leaf, choice, anyxml, list or leaf-list according to RFC6020.
    • isNotMandatoryNodeOfType

      public static boolean isNotMandatoryNodeOfType(StmtContext<?,?,?> stmtCtx, StatementDefinition stmtDef)
      Checks whether a statement context is a statement of supplied statement definition and whether it is not mandatory leaf, choice, anyxml, list or leaf-list according to RFC6020.
      Parameters:
      stmtCtx - statement context
      stmtDef - statement definition
      Returns:
      true if supplied statement context is a statement of supplied statement definition and if it is not mandatory leaf, choice, anyxml, list or leaf-list according to RFC6020
    • hasAncestorOfType

      public static boolean hasAncestorOfType(StmtContext<?,?,?> stmt, Collection<StatementDefinition> ancestorTypes)
      Checks whether at least one ancestor of a StatementContext matches one from a collection of statement definitions.
      Parameters:
      stmt - Statement context to be checked
      ancestorTypes - collection of statement definitions
      Returns:
      true if at least one ancestor of a StatementContext matches one from collection of statement definitions, otherwise false.
    • validateNoKeylessListAncestorOf

      public static void validateNoKeylessListAncestorOf(StmtContext.Mutable<?,?,?> stmt, String name)
      Check whether all of StmtContext's list ancestors have a key.
      Parameters:
      stmt - EffectiveStmtCtx to be checked
      name - Human-friendly statement name
      Throws:
      SourceException - if there is any keyless list ancestor
    • hasParentOfType

      public static boolean hasParentOfType(StmtContext<?,?,?> ctx, StatementDefinition parentType)
      Checks whether the parent of StmtContext is of specified type.
      Parameters:
      ctx - StmtContext to be checked
      parentType - type of parent to check
      Returns:
      true if the parent of StmtContext is of specified type, otherwise false
    • validateIfFeatureAndWhenOnListKeys

      public static void validateIfFeatureAndWhenOnListKeys(StmtContext<?,?,?> ctx)
      Validates the specified statement context with regards to if-feature and when statement on list keys. The context can either be a leaf which is defined directly in the substatements of a keyed list or a uses statement defined in a keyed list (a uses statement may add leaves into the list).

      If one of the list keys contains an if-feature or a when statement in YANG 1.1 model, an exception is thrown.

      Parameters:
      ctx - statement context to be validated
    • qnameFromArgument

      public static @NonNull QName qnameFromArgument(StmtContext<?,?,?> ctx, String value)
    • parseIdentifier

      public static @NonNull QName parseIdentifier(@NonNull StmtContext<?,?,?> ctx, String str)
      Parse a YANG identifier string in context of a statement.
      Parameters:
      ctx - Statement context
      str - String to be parsed
      Returns:
      An interned QName
      Throws:
      NullPointerException - if any of the arguments are null
      SourceException - if the string is not a valid YANG identifier
    • parseNodeIdentifier

      public static @NonNull QName parseNodeIdentifier(@NonNull StmtContext<?,?,?> ctx, String prefix, String localName)
    • parseNodeIdentifier

      public static @NonNull QName parseNodeIdentifier(@NonNull StmtContext<?,?,?> ctx, String str)
      Parse a YANG node identifier string in context of a statement.
      Parameters:
      ctx - Statement context
      str - String to be parsed
      Returns:
      An interned QName
      Throws:
      NullPointerException - if any of the arguments are null
      SourceException - if the string is not a valid YANG node identifier
    • getModuleQName

      public static @NonNull QNameModule getModuleQName(@NonNull StmtContext<?,?,?> ctx)
    • getModuleQName

      public static @NonNull QNameModule getModuleQName(@NonNull RootStmtContext<?,?,?> ctx)
    • getModuleQNameByPrefix

      public static QNameModule getModuleQNameByPrefix(StmtContext<?,?,?> ctx, String prefix)
    • getLatestRevision

      public static Optional<Revision> getLatestRevision(Iterable<? extends StmtContext<?,?,?>> subStmts)