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

    • Method Detail

      • 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()
      • 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.