Interface ModelStatement<A>

Type Parameters:
A - Argument type (Empty if statement does not have argument.)
All Known Subinterfaces:
ActionEffectiveStatement, ActionNodeContainerCompat<A,D,E>, ActionStatement, ActionStatementAwareDeclaredStatement<A>, AliasEffectiveStatement, AliasStatement, AnnotationEffectiveStatement, AnnotationStatement, AnydataEffectiveStatement, AnydataStatement, AnyxmlEffectiveStatement, AnyxmlStatement, ArgumentEffectiveStatement, ArgumentStatement, AugmentEffectiveStatement, AugmentIdentifierEffectiveStatement, AugmentIdentifierStatement, AugmentStatement, BaseEffectiveStatement, BaseStatement, BelongsToEffectiveStatement, BelongsToStatement, BitEffectiveStatement, BitStatement, CaseEffectiveStatement, CaseStatement, ChoiceEffectiveStatement, ChoiceStatement, ConfigEffectiveStatement, ConfigStatement, ConfigStatementAwareDeclaredStatement<A>, ConstrainedDocumentedDeclaredStatement<T>, ConstrainedDocumentedDeclaredStatement.WithStatus<T>, ContactEffectiveStatement, ContactStatement, ContainerEffectiveStatement, ContainerStatement, ContextInstanceEffectiveStatement, ContextInstanceStatement, ContextReferenceEffectiveStatement, ContextReferenceStatement, DataDefinitionAwareDeclaredStatement<A>, DataDefinitionAwareDeclaredStatement.WithReusableDefinitions<A>, DataDefinitionStatement, DataTreeAwareEffectiveStatement<A,D>, DataTreeEffectiveStatement<D>, DeclaredStatement<A>, DefaultDenyAllEffectiveStatement, DefaultDenyAllStatement, DefaultDenyWriteEffectiveStatement, DefaultDenyWriteStatement, DefaultEffectiveStatement, DefaultStatement, DefaultStatementAwareDeclaredStatement, DefValEffectiveStatement, DefValStatement, DescriptionEffectiveStatement, DescriptionStatement, DeviateEffectiveStatement, DeviateStatement, DeviationEffectiveStatement, DeviationStatement, DisplayHintEffectiveStatement, DisplayHintStatement, DocumentedDeclaredStatement<T>, DocumentedDeclaredStatement.WithStatus<T>, EffectiveStatement<A,D>, EffectiveStatementMixins.ActionNodeContainerMixin<A,D>, EffectiveStatementMixins.AddedByUsesMixin<A,D>, EffectiveStatementMixins.AugmentationTargetMixin<A,D>, EffectiveStatementMixins.ConstraintMetaDefinitionMixin<A,D>, EffectiveStatementMixins.CopyableMixin<A,D>, EffectiveStatementMixins.DataNodeContainerMixin<A,D>, EffectiveStatementMixins.DataSchemaNodeMixin<D>, EffectiveStatementMixins.DocumentedNodeMixin<A,D>, EffectiveStatementMixins.DocumentedNodeMixin.WithStatus<A,D>, EffectiveStatementMixins.EffectiveStatementWithFlags<A,D>, EffectiveStatementMixins.MandatoryMixin<A,D>, org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.Mixin<A,D>, EffectiveStatementMixins.MustConstraintMixin<A,D>, EffectiveStatementMixins.NotificationNodeContainerMixin<A,D>, EffectiveStatementMixins.OpaqueDataSchemaNodeMixin<D>, EffectiveStatementMixins.OperationContainerMixin<D>, EffectiveStatementMixins.OperationDefinitionMixin<D>, EffectiveStatementMixins.PresenceMixin<A,D>, EffectiveStatementMixins.SchemaNodeMixin<D>, EffectiveStatementMixins.UnknownSchemaNodeMixin<A,D>, EffectiveStatementMixins.UserOrderedAwareMixin<A,D,E>, EffectiveStatementMixins.WhenConditionMixin<A,D>, EnumEffectiveStatement, EnumStatement, ErrorAppTagEffectiveStatement, ErrorAppTagStatement, ErrorMessageEffectiveStatement, ErrorMessageStatement, ExtensionEffectiveStatement, ExtensionStatement, FeatureEffectiveStatement, FeatureStatement, FractionDigitsEffectiveStatement, FractionDigitsStatement, GetFilterElementAttributesEffectiveStatement, GetFilterElementAttributesStatement, GroupingEffectiveStatement, GroupingStatement, IdentityEffectiveStatement, IdentityStatement, IfFeatureAwareDeclaredStatement<A>, IfFeatureEffectiveStatement, IfFeatureStatement, ImpliedEffectiveStatement, ImpliedStatement, ImportEffectiveStatement, ImportStatement, IncludeEffectiveStatement, IncludeStatement, InputEffectiveStatement, InputStatement, InstanceTargetEffectiveStatement, InstanceTargetStatement, KeyEffectiveStatement, KeyStatement, LeafEffectiveStatement, LeafListEffectiveStatement, LeafListStatement, LeafStatement, LengthEffectiveStatement, LengthStatement, ListEffectiveStatement, ListStatement, MandatoryEffectiveStatement, MandatoryStatement, MandatoryStatementAwareDeclaredStatement<T>, MaxAccessEffectiveStatement, MaxAccessStatement, MaxElementsEffectiveStatement, MaxElementsStatement, MinElementsEffectiveStatement, MinElementsStatement, ModifierEffectiveStatement, ModifierStatement, ModuleEffectiveStatement, ModuleStatement, ModuleTagEffectiveStatement, ModuleTagStatement, MountEffectiveStatement, MountPointEffectiveStatement, MountPointStatement, MountStatement, MultipleElementsDeclaredStatement, MustEffectiveStatement, MustStatement, MustStatementAwareDeclaredStatement<A>, NamespaceEffectiveStatement, NamespaceStatement, NotificationEffectiveStatement, NotificationNodeContainerCompat<A,D,E>, NotificationStatement, NotificationStatementAwareDeclaredStatement<A>, OidEffectiveStatement, OidStatement, OpenConfigHashedValueEffectiveStatement, OpenConfigHashedValueStatement, OpenConfigPosixPatternEffectiveStatement, OpenConfigPosixPatternStatement, OpenConfigRegexpPosixEffectiveStatement, OpenConfigRegexpPosixStatement, OpenConfigVersionEffectiveStatement, OpenConfigVersionStatement, OperationDeclaredStatement, OrderedByAwareEffectiveStatement<A,D>, OrderedByEffectiveStatement, OrderedByStatement, OrganizationEffectiveStatement, OrganizationStatement, OutputEffectiveStatement, OutputStatement, PathEffectiveStatement, PathStatement, PatternEffectiveStatement, PatternStatement, PositionEffectiveStatement, PositionStatement, PrefixEffectiveStatement, PrefixStatement, PresenceEffectiveStatement, PresenceStatement, RangeEffectiveStatement, RangeStatement, ReferenceEffectiveStatement, ReferenceStatement, RefineEffectiveStatement, RefineStatement, RequireInstanceEffectiveStatement, RequireInstanceStatement, RevisionDateEffectiveStatement, RevisionDateStatement, RevisionEffectiveStatement, RevisionStatement, RootDeclaredStatement, RootEffectiveStatement<D>, RpcContextReferenceEffectiveStatement, RpcContextReferenceStatement, RpcEffectiveStatement, RpcStatement, SchemaTreeAwareEffectiveStatement<A,D>, SchemaTreeEffectiveStatement<D>, StatusEffectiveStatement, StatusStatement, SubIdEffectiveStatement, SubIdStatement, SubmoduleEffectiveStatement, SubmoduleStatement, SubscriptionStateNotificationEffectiveStatement, SubscriptionStateNotificationStatement, TypeAwareDeclaredStatement<A>, TypedefAwareEffectiveStatement<A,D>, TypedefEffectiveStatement, TypedefStatement, TypeEffectiveStatement<T>, TypeStatement, TypeStatement.BinarySpecification, TypeStatement.BitsSpecification, TypeStatement.Decimal64Specification, TypeStatement.EnumSpecification, TypeStatement.IdentityRefSpecification, TypeStatement.InstanceIdentifierSpecification, TypeStatement.LeafrefSpecification, TypeStatement.NumericalRestrictions, TypeStatement.StringRestrictions, TypeStatement.UnionSpecification, UniqueEffectiveStatement, UniqueStatement, UnitsEffectiveStatement, UnitsStatement, UnknownEffectiveStatement<A,D>, UnknownStatement<A>, UnrecognizedStatement, UsesEffectiveStatement, UsesStatement, ValueEffectiveStatement, ValueStatement, WhenEffectiveStatement, WhenStatement, WhenStatementAwareDeclaredStatement<A>, YangDataEffectiveStatement, YangDataStatement, YangVersionEffectiveStatement, YangVersionStatement, YinElementEffectiveStatement, YinElementStatement
All Known Implementing Classes:
AbstractChoiceEffectiveStatement, AbstractContainerEffectiveStatement, AbstractDeclaredEffectiveStatement, AbstractDeclaredEffectiveStatement.Default, AbstractDeclaredEffectiveStatement.DefaultArgument, AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements, AbstractDeclaredEffectiveStatement.DefaultWithArgument, AbstractDeclaredEffectiveStatement.DefaultWithArgument.WithSubstatements, AbstractDeclaredEffectiveStatement.DefaultWithDataTree, AbstractDeclaredEffectiveStatement.DefaultWithDataTree.WithTypedefNamespace, AbstractDeclaredEffectiveStatement.DefaultWithSchemaTree, AbstractDeclaredEffectiveStatement.WithDataTree, AbstractDeclaredEffectiveStatement.WithSchemaTree, AbstractDeclaredStatement, AbstractDeclaredStatement, AbstractDeclaredStatement.ArgumentToString, AbstractDeclaredStatement.ArgumentToString.WithSubstatements, AbstractDeclaredStatement.WithArgument, AbstractDeclaredStatement.WithArgument.WithSubstatements, AbstractDeclaredStatement.WithoutArgument, AbstractDeclaredStatement.WithoutArgument.WithSubstatements, AbstractDeclaredStatement.WithQNameArgument, AbstractDeclaredStatement.WithQNameArgument.WithSubstatements, AbstractDeclaredStatement.WithRawArgument, AbstractDeclaredStatement.WithRawArgument.WithSubstatements, AbstractDeclaredStatement.WithRawStringArgument, AbstractDeclaredStatement.WithRawStringArgument.WithSubstatements, AbstractEffectiveModule, AbstractEffectiveStatement, AbstractEffectiveUnknownSchmemaNode, AbstractGroupingEffectiveStatement, AbstractLeafEffectiveStatement, AbstractRefStatement, AbstractUndeclaredEffectiveStatement, AbstractUndeclaredEffectiveStatement.DefaultWithDataTree, AbstractUndeclaredEffectiveStatement.DefaultWithSchemaTree, AbstractUndeclaredEffectiveStatement.WithDataTree, AbstractUndeclaredEffectiveStatement.WithSchemaTree, ActionEffectiveStatementImpl, AugmentEffectiveStatementImpl, DeclaredCaseEffectiveStatement, DeclaredInputEffectiveStatement, DeclaredOutputEffectiveStatement, DeviateEffectiveStatementImpl, DeviateStatementImpl, DeviationEffectiveStatementImpl, DeviationStatementImpl, EmptyActionStatement, EmptyAnydataEffectiveStatement, EmptyAnydataStatement, EmptyAnyxmlEffectiveStatement, EmptyAnyxmlStatement, EmptyArgumentEffectiveStatement, EmptyArgumentStatement, EmptyAugmentStatement, EmptyBaseEffectiveStatement, EmptyBaseStatement, EmptyBelongsToEffectiveStatement, EmptyBelongsToStatement, EmptyBitEffectiveStatement, EmptyBitStatement, EmptyCaseStatement, EmptyChoiceEffectiveStatement, EmptyChoiceStatement, EmptyConfigEffectiveStatement, EmptyConfigStatement, EmptyContactEffectiveStatement, EmptyContactStatement, EmptyContainerEffectiveStatement, EmptyContainerStatement, EmptyDefaultEffectiveStatement, EmptyDefaultStatement, EmptyDescriptionEffectiveStatement, EmptyDescriptionStatement, EmptyEnumEffectiveStatement, EmptyEnumStatement, EmptyErrorAppTagEffectiveStatement, EmptyErrorAppTagStatement, EmptyErrorMessageEffectiveStatement, EmptyErrorMessageStatement, EmptyExtensionStatement, EmptyFeatureEffectiveStatement, EmptyFeatureStatement, EmptyForeignKeyEffectiveStatement, EmptyFractionDigitsEffectiveStatement, EmptyFractionDigitsStatement, EmptyGroupingEffectiveStatement, EmptyGroupingStatement, EmptyIdentityEffectiveStatement, EmptyIdentityStatement, EmptyIfFeatureEffectiveStatement, EmptyIfFeatureStatement, EmptyIncludeEffectiveStatement, EmptyIncludeStatement, EmptyInputStatement, EmptyKeyStatement, EmptyLeafEffectiveStatement, EmptyLeafListEffectiveStatement, EmptyLeafListStatement, EmptyLeafStatement, EmptyLengthEffectiveStatement, EmptyLengthStatement, EmptyListEffectiveStatement, EmptyListStatement, EmptyLocalKeyEffectiveStatement, EmptyMandatoryEffectiveStatement, EmptyMandatoryStatement, EmptyMaxElementsEffectiveStatement, EmptyMaxElementsStatement, EmptyMinElementsEffectiveStatement, EmptyMinElementsStatement, EmptyModifierEffectiveStatement, EmptyModifierStatement, EmptyMustEffectiveStatement, EmptyMustStatement, EmptyNamespaceEffectiveStatement, EmptyNamespaceStatement, EmptyNotificationStatement, EmptyOrderedByEffectiveStatement, EmptyOrderedByStatement, EmptyOrganizationEffectiveStatement, EmptyOrganizationStatement, EmptyOutputStatement, EmptyPathEffectiveStatement, EmptyPathStatement, EmptyPatternEffectiveStatement, EmptyPatternStatement, EmptyPositionEffectiveStatement, EmptyPositionStatement, EmptyPrefixEffectiveStatement, EmptyPrefixStatement, EmptyPresenceEffectiveStatement, EmptyPresenceStatement, EmptyRangeEffectiveStatement, EmptyRangeStatement, EmptyReferenceEffectiveStatement, EmptyReferenceStatement, EmptyRequireInstanceEffectiveStatement, EmptyRequireInstanceStatement, EmptyRevisionDateEffectiveStatement, EmptyRevisionDateStatement, EmptyRevisionEffectiveStatement, EmptyRevisionStatement, EmptyRpcStatement, EmptyStatusEffectiveStatement, EmptyStatusStatement, EmptyTypedefStatement, EmptyTypeStatement, EmptyUniqueEffectiveStatement, EmptyUniqueStatement, EmptyUnitsEffectiveStatement, EmptyUnitsStatement, EmptyUsesStatement, EmptyValueEffectiveStatement, EmptyValueStatement, EmptyWhenEffectiveStatement, EmptyWhenStatement, EmptyYangVersionEffectiveStatement, EmptyYangVersionStatement, EmptyYinElementEffectiveStatement, EmptyYinElementStatement, ExtensionEffectiveStatementImpl, ForwardingDeclaredStatement, ImportEffectiveStatementImpl, ImportStatementImpl, ModuleStatementImpl, NotificationEffectiveStatementImpl, RefActionStatement, RefAnydataStatement, RefAnyxmlStatement, RefArgumentStatement, RefAugmentStatement, RefBaseStatement, RefBelongsToStatement, RefBitsSpecification, RefBitStatement, RefCaseStatement, RefChoiceStatement, RefConfigStatement, RefContactStatement, RefContainerStatement, RefDefaultStatement, RefDescriptionStatement, RefDeviateStatement, RefDeviationStatement, RefEnumStatement, RefErrorAppTagStatement, RefErrorMessageStatement, RefExtensionStatement, RefFeatureStatement, RefFractionDigitsStatement, RefGroupingStatement, RefIdentityStatement, RefIfFeatureStatement, RefImportStatement, RefIncludeStatement, RefineEffectiveStatementImpl, RefineStatementImpl, RefInputStatement, RefKeyStatement, RefLeafListStatement, RefLeafStatement, RefLengthStatement, RefListStatement, RefMandatoryStatement, RefMaxElementsStatement, RefMinElementsStatement, RefModifierStatement, RefModuleStatement, RefMustStatement, RefNamespaceStatement, RefNotificationStatement, RefOrderedByStatement, RefOrganizationStatement, RefOutputStatement, RefPathStatement, RefPatternStatement, RefPositionStatement, RefPrefixStatement, RefPresenceStatement, RefRangeStatement, RefReferenceStatement, RefRefineStatement, RefRequireInstanceStatement, RefRevisionDateStatement, RefRevisionStatement, RefRpcStatement, RefStatusStatement, RefSubmoduleStatement, RefTypedefStatement, RefTypeStatement, RefUniqueStatement, RefUnitsStatement, RefUnrecognizedStatement, RefUsesStatement, RefValueStatement, RefWhenStatement, RefYangVersionStatement, RefYinElementStatement, RegularActionStatement, RegularAnydataEffectiveStatement, RegularAnydataStatement, RegularAnyxmlEffectiveStatement, RegularAnyxmlStatement, RegularArgumentEffectiveStatement, RegularArgumentStatement, RegularAugmentStatement, RegularBaseEffectiveStatement, RegularBaseStatement, RegularBelongsToEffectiveStatement, RegularBelongsToStatement, RegularBitEffectiveStatement, RegularBitStatement, RegularCaseStatement, RegularChoiceEffectiveStatement, RegularChoiceStatement, RegularConfigEffectiveStatement, RegularConfigStatement, RegularContactEffectiveStatement, RegularContactStatement, RegularContainerEffectiveStatement, RegularContainerStatement, RegularDefaultEffectiveStatement, RegularDefaultStatement, RegularDescriptionEffectiveStatement, RegularDescriptionStatement, RegularEnumEffectiveStatement, RegularEnumStatement, RegularErrorAppTagEffectiveStatement, RegularErrorAppTagStatement, RegularErrorMessageEffectiveStatement, RegularErrorMessageStatement, RegularExtensionStatement, RegularFeatureEffectiveStatement, RegularFeatureStatement, RegularForeignKeyEffectiveStatement, RegularFractionDigitsEffectiveStatement, RegularFractionDigitsStatement, RegularGroupingEffectiveStatement, RegularGroupingStatement, RegularIdentityEffectiveStatement, RegularIdentityStatement, RegularIfFeatureEffectiveStatement, RegularIfFeatureStatement, RegularIncludeEffectiveStatement, RegularIncludeStatement, RegularInputStatement, RegularKeyStatement, RegularLeafEffectiveStatement, RegularLeafListEffectiveStatement, RegularLeafListStatement, RegularLeafStatement, RegularLengthEffectiveStatement, RegularLengthStatement, RegularListEffectiveStatement, RegularListStatement, RegularLocalKeyEffectiveStatement, RegularMandatoryEffectiveStatement, RegularMandatoryStatement, RegularMaxElementsEffectiveStatement, RegularMaxElementsStatement, RegularMinElementsEffectiveStatement, RegularMinElementsStatement, RegularModifierEffectiveStatement, RegularModifierStatement, RegularMustEffectiveStatement, RegularMustStatement, RegularNamespaceEffectiveStatement, RegularNamespaceStatement, RegularNotificationStatement, RegularOrderedByEffectiveStatement, RegularOrderedByStatement, RegularOrganizationEffectiveStatement, RegularOrganizationStatement, RegularOutputStatement, RegularPathEffectiveStatement, RegularPathStatement, RegularPatternEffectiveStatement, RegularPatternStatement, RegularPositionEffectiveStatement, RegularPositionStatement, RegularPrefixEffectiveStatement, RegularPrefixStatement, RegularPresenceEffectiveStatement, RegularPresenceStatement, RegularRangeEffectiveStatement, RegularRangeStatement, RegularReferenceEffectiveStatement, RegularReferenceStatement, RegularRequireInstanceEffectiveStatement, RegularRequireInstanceStatement, RegularRevisionDateEffectiveStatement, RegularRevisionDateStatement, RegularRevisionEffectiveStatement, RegularRevisionStatement, RegularRpcStatement, RegularStatusEffectiveStatement, RegularStatusStatement, RegularTypedefStatement, RegularTypeStatement, RegularUniqueEffectiveStatement, RegularUniqueStatement, RegularUnitsEffectiveStatement, RegularUnitsStatement, RegularUsesStatement, RegularValueEffectiveStatement, RegularValueStatement, RegularWhenEffectiveStatement, RegularWhenStatement, RegularYangVersionEffectiveStatement, RegularYangVersionStatement, RegularYinElementEffectiveStatement, RegularYinElementStatement, RpcEffectiveStatementImpl, SlimLeafListEffectiveStatement, SubmoduleStatementImpl, TypedefEffectiveStatementImpl, UndeclaredCaseEffectiveStatement, UndeclaredInputEffectiveStatement, UndeclaredLeafEffectiveStatement, UndeclaredOutputEffectiveStatement, UnrecognizedStatementImpl

public sealed interface ModelStatement<A> permits DeclaredStatement<A>, EffectiveStatement<A,D> (not exhaustive)
Model statement. There are two base types of model statements:
  • DeclaredStatement, which is to say, a statement as was defined in original source. This representation can be used during computation of effective model or during transformations of the YANG model from one serialization format to another -- for example creating a .yin file from a .yang file, or vice versa.
  • EffectiveStatement, which is to say, a statement in its canonical form after all YANG language constructs have been applied to it. This representation has different traits as compared to the declared form, such as:
    • its substatement layout may differ, for example to account for implicit case, input and output statements
    • it will omit feature and statements predicated on if-feature if the feature in question is not supported
    • it will contain magic entries, like those in ietf-restconf.yang's operations container
    • the effects of a uses or augment statement being present
    This object model lends itself for processing YANG-modeled data without too much hustle. There are two RFC7950-based exceptions to this rule. These are driven by scarceness of use and scalability concerns:
    1. config statements
    2. status statements
    While the EffectiveStatement model implies effective statements should be created so that any statement can be examined for the value, this has a significant scalability impact: for example in the case of a grouping definition, config is ignored, whereas in other contexts, even when introduced via a uses statement, it becomes either true or false. A similar situation occurs in case of status statements, yet it is less severe. In both these cases real-life users are very scarce and this information can be computed given a particular EffectiveStatement tree position and is a sort of a parent reference (albeit very weak). For these two, and perhaps some other, statements the object model manifestation is subject to API contract.
  • Method Summary

    Modifier and Type
    Method
    Description
    @NonNull A
    Returns statement argument.
    Statement Definition of this statement.
  • Method Details

    • statementDefinition

      @NonNull StatementDefinition statementDefinition()
      Statement Definition of this statement.
      Returns:
      definition of this statement.
    • argument

      @NonNull A argument()
      Returns statement argument.
      Returns:
      statement argument.