Type Parameters:
A - Argument type (Empty if statement does not have argument.)
D - Class representing declared version of this statement.
All Superinterfaces:
ModelStatement<A>
All Known Subinterfaces:
ActionEffectiveStatement, ActionNodeContainerCompat<A,D,E>, AnydataEffectiveStatement, AnyxmlEffectiveStatement, ArgumentEffectiveStatement, AugmentEffectiveStatement, BaseEffectiveStatement, BelongsToEffectiveStatement, BitEffectiveStatement, CaseEffectiveStatement, ChoiceEffectiveStatement, ConfigEffectiveStatement, ContactEffectiveStatement, ContainerEffectiveStatement, DataTreeAwareEffectiveStatement<A,D>, DataTreeEffectiveStatement<D>, DefaultEffectiveStatement, DescriptionEffectiveStatement, DeviateEffectiveStatement, DeviationEffectiveStatement, EnumEffectiveStatement, ErrorAppTagEffectiveStatement, ErrorMessageEffectiveStatement, ExtensionEffectiveStatement, FeatureEffectiveStatement, FractionDigitsEffectiveStatement, GroupingEffectiveStatement, IdentityEffectiveStatement, IfFeatureEffectiveStatement, ImportEffectiveStatement, IncludeEffectiveStatement, InputEffectiveStatement, KeyEffectiveStatement, LeafEffectiveStatement, LeafListEffectiveStatement, LengthEffectiveStatement, ListEffectiveStatement, MandatoryEffectiveStatement, MaxElementsEffectiveStatement, MinElementsEffectiveStatement, ModifierEffectiveStatement, ModuleEffectiveStatement, MustEffectiveStatement, NamespaceEffectiveStatement, NotificationEffectiveStatement, NotificationNodeContainerCompat<A,D,E>, OrderedByAwareEffectiveStatement<A,D>, OrderedByEffectiveStatement, OrganizationEffectiveStatement, OutputEffectiveStatement, PathEffectiveStatement, PatternEffectiveStatement, PositionEffectiveStatement, PrefixEffectiveStatement, PresenceEffectiveStatement, RangeEffectiveStatement, ReferenceEffectiveStatement, RefineEffectiveStatement, RequireInstanceEffectiveStatement, RevisionDateEffectiveStatement, RevisionEffectiveStatement, RootEffectiveStatement<D>, RpcEffectiveStatement, SchemaTreeAwareEffectiveStatement<A,D>, SchemaTreeEffectiveStatement<D>, StatusEffectiveStatement, SubmoduleEffectiveStatement, TypedefAwareEffectiveStatement<A,D>, TypedefEffectiveStatement, TypeEffectiveStatement<T>, UniqueEffectiveStatement, UnitsEffectiveStatement, UnknownEffectiveStatement<A,D>, UsesEffectiveStatement, ValueEffectiveStatement, WhenEffectiveStatement, YangVersionEffectiveStatement, YinElementEffectiveStatement
All Known Implementing Classes:
AbstractEffectiveStatement

public non-sealed interface EffectiveStatement<A,D extends DeclaredStatement<A>> extends ModelStatement<A>
Effective model statement which should be used to derive application behaviour.
  • Method Details

    • statementOrigin

      default @NonNull StatementOrigin statementOrigin()
      Returns StatementOrigin, which denotes if statement was explicitly declared in original model or inferred during semantic processing of model.

      Implementations are required to return a StatementOrigin, consistent with getDeclared() nullness. This is what the default implementation does and hence this method should never be explicitly implemented -- unless there is significant cost to the getDeclared() implementation.

      Returns:
      statement origin.
    • getDeclared

      @Nullable D getDeclared()
      Returns statement, which was explicit declaration of this effective statement.
      Returns:
      statement, which was explicit declaration of this effective statement or null if statement was inferred from context.
    • effectiveSubstatements

      @NonNull List<? extends @NonNull EffectiveStatement<?,?>> effectiveSubstatements()
      Returns a collection of all effective substatements.
      Returns:
      collection of all effective substatements.
    • findFirstEffectiveSubstatement

      @Beta default <T> Optional<T> findFirstEffectiveSubstatement(@NonNull Class<T> type)
      Find the first effective substatement of specified type.
      Type Parameters:
      T - substatement type
      Parameters:
      type - substatement type
      Returns:
      First effective substatement, or empty if no match is found.
    • findFirstEffectiveSubstatementArgument

      @Beta default <V, T extends EffectiveStatement<V, ?>> Optional<V> findFirstEffectiveSubstatementArgument(@NonNull Class<T> type)
      Find the first effective substatement of specified type and return its value.
      Type Parameters:
      T - substatement type
      V - substatement argument type
      Parameters:
      type - substatement type
      Returns:
      First effective substatement's argument, or empty if no match is found.
    • streamEffectiveSubstatements

      @Beta default <T extends EffectiveStatement<?, ?>> Stream<T> streamEffectiveSubstatements(@NonNull Class<T> type)
      Find all effective substatements of specified type and return them as a stream.
      Type Parameters:
      T - substatement type
      Parameters:
      type - substatement type
      Returns:
      A stream of all effective substatements of specified type.
    • collectEffectiveSubstatements

      @Beta default <Z extends EffectiveStatement<?, ?>> @NonNull Collection<Z> collectEffectiveSubstatements(@NonNull Class<Z> stmt)