Interface StmtContext<A,D extends DeclaredStatement<A>,E extends EffectiveStatement<A,D>>

Type Parameters:
A - Argument type
D - Declared Statement representation
E - Effective Statement representation
All Superinterfaces:
BoundStmtCtx<A>, BoundStmtCtxCompat<A,D>, CommonStmtCtx, NamespaceStmtCtx, StmtContextCompat
All Known Subinterfaces:
RootStmtContext<A,D,E>, RootStmtContext.Mutable<A,D,E>, StmtContext.Mutable<A,D,E>
All Known Implementing Classes:
RootStatementContext

public interface StmtContext<A,D extends DeclaredStatement<A>,E extends EffectiveStatement<A,D>> extends NamespaceStmtCtx, BoundStmtCtxCompat<A,D>
An inference context associated with an instance of a statement.
  • Method Details

    • getParentContext

      @Nullable StmtContext<?,?,?> getParentContext()
      Return the parent statement context, or null if this is the root statement.
      Returns:
      context of parent of statement, or null if this is the root statement.
    • coerceParentContext

      default @NonNull StmtContext<?,?,?> coerceParentContext()
      Return the parent statement context, forcing a VerifyException if this is the root statement.
      Returns:
      context of parent of statement
      Throws:
      VerifyException - if this statement is the root statement
    • getRoot

      @NonNull RootStmtContext<?,?,?> getRoot()
      Returns the model root for this statement.
      Returns:
      root context of statement
    • declaredSubstatements

      @NonNull Collection<? extends @NonNull StmtContext<?,?,?>> declaredSubstatements()
      Return declared substatements. These are the statements which are explicitly written in the source model, but reflect implicit containment statements as well. To but that statement into practical terms, this snippet:
         
           choice foo {
             container bar;
           }
         
       
      reports the same structure as the canonical verbose equivalent:
         
           choice foo {
             case bar {
               container bar;
             }
           }
         
       
      Returned collection is therefore well suited for reasoning about the schema tree. It is not appropriate for populating populating DeclaredStatement.declaredSubstatements().
      Returns:
      Collection of declared substatements
    • effectiveSubstatements

      @NonNull Collection<? extends @NonNull StmtContext<?,?,?>> effectiveSubstatements()
      Return effective substatements. These are the statements which are added as this statement's substatements complete their effective model phase.
      Returns:
      Collection of declared substatements
    • allSubstatements

      default Iterable<? extends @NonNull StmtContext<?,?,?>> allSubstatements()
    • allSubstatementsStream

      default Stream<? extends @NonNull StmtContext<?,?,?>> allSubstatementsStream()
    • buildEffective

      @NonNull E buildEffective()
      Return the EffectiveStatement for statement context, creating it if required. Implementations of this method are required to memoize the returned object, so that subsequent invocation return the same object.

      If isSupportedToBuildEffective() returns false, this method's behaviour is undefined.

      Returns:
      Effective statement instance.
    • isSupportedToBuildEffective

      boolean isSupportedToBuildEffective()
    • isSupportedByFeatures

      boolean isSupportedByFeatures()
    • getEffectOfStatement

      Collection<? extends StmtContext<?,?,?>> getEffectOfStatement()
    • getOriginalCtx

      Optional<StmtContext<A,D,E>> getOriginalCtx()
      Return the statement context of the original definition, if this statement is an instantiated copy.
      Returns:
      Original definition, if this statement was copied.
    • getPreviousCopyCtx

      Optional<StmtContext<A,D,E>> getPreviousCopyCtx()
      Return the context of the previous copy of this statement -- effectively walking towards the source origin of this statement.
      Returns:
      Context of the previous copy of this statement, if this statement has been copied.
    • replicaAsChildOf

      @NonNull StmtContext.Mutable<A,D,E> replicaAsChildOf(StmtContext.Mutable<?,?,?> parent)
      Create a replica of this statement as a substatement of specified parent. The replica must not be modified and acts as a source of EffectiveStatement from outside of parent's subtree.
      Parameters:
      parent - Parent of the replica statement
      Returns:
      replica of this statement
      Throws:
      IllegalArgumentException - if this statement cannot be replicated into parent, for example because it comes from an alien implementation.
    • copyAsChildOf

      @Beta @NonNull Optional<? extends StmtContext.Mutable<?,?,?>> copyAsChildOf(StmtContext.Mutable<?,?,?> parent, CopyType type, @Nullable QNameModule targetModule)
    • getCompletedPhase

      ModelProcessingPhase getCompletedPhase()