Centralize substatement validators 99/95899/2
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 23 Apr 2021 07:29:09 +0000 (09:29 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 23 Apr 2021 07:47:21 +0000 (09:47 +0200)
Most statement supports have a constant validator and we end up
duplicating things. Furthermore we are ending up with megamorphic
dispatch which could easily be squashed into a simple field read.

AbstractStatementSupport now requires an explicit SubstatementValidator,
which it stores in a field, thus reducing the number of
StatementSupport.substatementValidator() instances.

Change-Id: I4d7f6247403ee64b65ddcd81ac91a5e8eef20539
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
123 files changed:
yang/odlext-parser-support/src/main/java/org/opendaylight/yangtools/odlext/parser/AbstractIdentityAwareStatementSupport.java
yang/odlext-parser-support/src/main/java/org/opendaylight/yangtools/odlext/parser/AugmentIdentifierStatementSupport.java
yang/odlext-parser-support/src/main/java/org/opendaylight/yangtools/odlext/parser/ContextInstanceStatementSupport.java
yang/odlext-parser-support/src/main/java/org/opendaylight/yangtools/odlext/parser/ContextReferenceStatementSupport.java
yang/odlext-parser-support/src/main/java/org/opendaylight/yangtools/odlext/parser/InstanceTargetStatementSupport.java
yang/odlext-parser-support/src/main/java/org/opendaylight/yangtools/odlext/parser/RpcContextReferenceStatementSupport.java
yang/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/AbstractHashedValueStatementSupport.java
yang/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/EncryptedValueStatementSupport.java
yang/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/HashedValueStatementSupport.java
yang/rfc6241-parser-support/pom.xml
yang/rfc6241-parser-support/src/main/java/org/opendaylight/yangtools/rfc6241/parser/GetFilterElementAttributesStatementSupport.java
yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyAllStatementSupport.java
yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyWriteStatementSupport.java
yang/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/AliasStatementSupport.java
yang/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DefValStatementSupport.java
yang/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DisplayHintStatementSupport.java
yang/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/ImpliedStatementSupport.java
yang/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/MaxAccessStatementSupport.java
yang/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/OidStatementSupport.java
yang/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/SubIdStatementSupport.java
yang/rfc7952-parser-support/src/main/java/org/opendaylight/yangtools/rfc7952/parser/AnnotationStatementSupport.java
yang/rfc8040-parser-support/src/main/java/org/opendaylight/yangtools/rfc8040/parser/YangDataStatementSupport.java
yang/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AbstractAugmentStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AugmentStatementRFC6020Support.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AugmentStatementRFC7950Support.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/AbstractDeviateStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/UnrecognizedStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/if_feature/AbstractIfFeatureStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/import_/ImportStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AbstractImplicitStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AbstractOperationContainerStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ActionStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnydataStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/AnyxmlStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ArgumentStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/BaseStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/BelongsToStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/BitStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/CaseStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ChoiceStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ConfigStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ContactStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ContainerStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/DefaultStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/DescriptionStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/DeviationStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/EnumStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ErrorAppTagStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ErrorMessageStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/FeatureStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/FractionDigitsStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/GroupingStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/IdentityStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/IncludeStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/InputStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/KeyStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/LeafStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/LengthStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/MandatoryStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/MaxElementsStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/MinElementsStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ModifierStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/MustStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/NamespaceStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/OrderedByStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/OrganizationStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/OutputStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/PositionStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/PrefixStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/PresenceStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/RangeStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ReferenceStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/RequireInstanceStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/RevisionDateStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/RevisionStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/RpcStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/StatusStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/TypedefStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/UniqueStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/UnitsStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/ValueStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/WhenStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/YangVersionStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/YinElementStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/AbstractNotificationStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/NotificationStatementRFC6020Support.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/NotificationStatementRFC7950Support.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/path/PathStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/pattern/PatternStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/refine/RefineStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/submodule/SubmoduleStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractTypeStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractTypeSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BitsSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/Decimal64SpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/EnumSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/IdentityRefSpecificationRFC6020Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/IdentityRefSpecificationRFC7950Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/IdentityRefSpecificationSupport.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractIdentityRefSpecificationSupport.java with 76% similarity]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/InstanceIdentifierSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/LeafrefSpecificationRFC6020Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/LeafrefSpecificationRFC7950Support.java [deleted file]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/LeafrefSpecificationSupport.java [moved from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractLeafrefSpecificationSupport.java with 70% similarity]
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/TypeStatementRFC7950Support.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/UnionSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/uses/UsesStatementSupport.java
yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/thirdparty/plugin/ThirdPartyExtensionSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractBooleanStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractEmptyStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractInternedStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractInternedStringStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractQNameStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractSchemaTreeStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractStringStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/ForwardingStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java

index 2b118b6d10744f47bfbb59adeaa6fb955261d89d..a8f72944277386bd6dea1bdadc6ce0b58ce09187 100644 (file)
@@ -34,12 +34,9 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 abstract class AbstractIdentityAwareStatementSupport<D extends DeclaredStatement<QName>,
         E extends EffectiveStatement<QName, D>> extends AbstractStatementSupport<QName, D, E> {
-    private final SubstatementValidator validator;
-
     AbstractIdentityAwareStatementSupport(final StatementDefinition publicDefinition,
-            final YangParserConfiguration config) {
-        super(publicDefinition, StatementPolicy.exactReplica(), config);
-        validator = SubstatementValidator.builder(publicDefinition).build();
+            final YangParserConfiguration config, final SubstatementValidator validator) {
+        super(publicDefinition, StatementPolicy.exactReplica(), config, validator);
     }
 
     @Override
@@ -65,11 +62,6 @@ abstract class AbstractIdentityAwareStatementSupport<D extends DeclaredStatement
         });
     }
 
-    @Override
-    protected final SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected final E createEffective(final Current<QName, D> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
index dc1077901f5344a38d90ff846e24f3cf2a057980..9f05f8596538290a022c4ca4f2ce75c34fdf8500 100644 (file)
@@ -31,7 +31,8 @@ public final class AugmentIdentifierStatementSupport
         SubstatementValidator.builder(OpenDaylightExtensionsStatements.AUGMENT_IDENTIFIER).build();
 
     public AugmentIdentifierStatementSupport(final YangParserConfiguration config) {
-        super(OpenDaylightExtensionsStatements.AUGMENT_IDENTIFIER, StatementPolicy.contextIndependent(), config);
+        super(OpenDaylightExtensionsStatements.AUGMENT_IDENTIFIER, StatementPolicy.contextIndependent(), config,
+            VALIDATOR);
     }
 
     @Override
@@ -43,11 +44,6 @@ public final class AugmentIdentifierStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return VALIDATOR;
-    }
-
     @Override
     protected AugmentIdentifierStatement createDeclared(
             final StmtContext<UnqualifiedQName, AugmentIdentifierStatement, ?> ctx,
index d135f8ed6204c7657d1d9ea753dd00cd68a9b3f7..b877f508db0d706df8c96aed46a942c782f16623 100644 (file)
@@ -19,12 +19,16 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement;
 import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 @Beta
 public final class ContextInstanceStatementSupport
         extends AbstractIdentityAwareStatementSupport<ContextInstanceStatement, ContextInstanceEffectiveStatement> {
+    private static final SubstatementValidator VALIDATOR =
+        SubstatementValidator.builder(OpenDaylightExtensionsStatements.CONTEXT_INSTANCE).build();
+
     public ContextInstanceStatementSupport(final YangParserConfiguration config) {
-        super(OpenDaylightExtensionsStatements.CONTEXT_INSTANCE, config);
+        super(OpenDaylightExtensionsStatements.CONTEXT_INSTANCE, config, VALIDATOR);
     }
 
     @Override
index 4792cdca2227454812483281827d2cf8a8349a02..36f807086e93b36d39a3dca484bb1dea93d94ad3 100644 (file)
@@ -19,12 +19,16 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement;
 import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 @Beta
 public final class ContextReferenceStatementSupport
         extends AbstractIdentityAwareStatementSupport<ContextReferenceStatement, ContextReferenceEffectiveStatement> {
+    private static final SubstatementValidator VALIDATOR =
+        SubstatementValidator.builder(OpenDaylightExtensionsStatements.CONTEXT_REFERENCE).build();
+
     public ContextReferenceStatementSupport(final YangParserConfiguration config) {
-        super(OpenDaylightExtensionsStatements.CONTEXT_REFERENCE, config);
+        super(OpenDaylightExtensionsStatements.CONTEXT_REFERENCE, config, VALIDATOR);
     }
 
     @Override
index f94cb00d2ccff4c7777f24acaccc346f346e649d..f5a246a5b4338fccfa22ec62faee3d2ba4376d1e 100644 (file)
@@ -28,12 +28,8 @@ public final class InstanceTargetStatementSupport
         SubstatementValidator.builder(OpenDaylightExtensionsStatements.INSTANCE_TARGET).build();
 
     public InstanceTargetStatementSupport(final YangParserConfiguration config) {
-        super(OpenDaylightExtensionsStatements.INSTANCE_TARGET, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return VALIDATOR;
+        super(OpenDaylightExtensionsStatements.INSTANCE_TARGET, StatementPolicy.contextIndependent(), config,
+            VALIDATOR);
     }
 
     @Override
index df421544ef8546fa270aed1f1cc74a11b2b61b40..31df9215abc6d17fda3a65bf2e29a80e40f2c8b6 100644 (file)
@@ -28,12 +28,8 @@ public final class RpcContextReferenceStatementSupport
         SubstatementValidator.builder(OpenDaylightExtensionsStatements.RPC_CONTEXT_REFERENCE).build();
 
     public RpcContextReferenceStatementSupport(final YangParserConfiguration config) {
-        super(OpenDaylightExtensionsStatements.RPC_CONTEXT_REFERENCE, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return VALIDATOR;
+        super(OpenDaylightExtensionsStatements.RPC_CONTEXT_REFERENCE, StatementPolicy.contextIndependent(), config,
+            VALIDATOR);
     }
 
     @Override
index 768e1eea4f165558da53def56d81c8eda89ec1e1..5e43f55f37fc78cc2fc3ef7c2c7d338fa23ed4e4 100644 (file)
@@ -23,16 +23,9 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 abstract class AbstractHashedValueStatementSupport
         extends AbstractEmptyStatementSupport<OpenConfigHashedValueStatement, OpenConfigHashedValueEffectiveStatement> {
-    private final SubstatementValidator validator;
-
-    AbstractHashedValueStatementSupport(final StatementDefinition definition, final YangParserConfiguration config) {
-        super(definition, StatementPolicy.contextIndependent(), config);
-        this.validator = SubstatementValidator.builder(definition).build();
-    }
-
-    @Override
-    protected final SubstatementValidator getSubstatementValidator() {
-        return validator;
+    AbstractHashedValueStatementSupport(final StatementDefinition definition, final YangParserConfiguration config,
+            final SubstatementValidator validator) {
+        super(definition, StatementPolicy.contextIndependent(), config, validator);
     }
 
     @Override
index 2200b88ab2f6edd653ed03356e1d91c114f02f0d..500bb2249a54266b7e037d8bbaf36e4b7e715840 100644 (file)
@@ -9,9 +9,13 @@ package org.opendaylight.yangtools.openconfig.parser;
 
 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
 import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class EncryptedValueStatementSupport extends AbstractHashedValueStatementSupport {
+    private static final SubstatementValidator VALIDATOR =
+        SubstatementValidator.builder(OpenConfigStatements.OPENCONFIG_ENCRYPTED_VALUE).build();
+
     public EncryptedValueStatementSupport(final YangParserConfiguration config) {
-        super(OpenConfigStatements.OPENCONFIG_ENCRYPTED_VALUE, config);
+        super(OpenConfigStatements.OPENCONFIG_ENCRYPTED_VALUE, config, VALIDATOR);
     }
 }
index b98703be10c39fa92f4dc93b450ca6300247a32a..8abe7d87c27a0843c3e08f71f0a357540cc93757 100644 (file)
@@ -9,9 +9,13 @@ package org.opendaylight.yangtools.openconfig.parser;
 
 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigStatements;
 import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class HashedValueStatementSupport extends AbstractHashedValueStatementSupport {
+    private static final SubstatementValidator VALIDATOR =
+        SubstatementValidator.builder(OpenConfigStatements.OPENCONFIG_HASHED_VALUE).build();
+
     public HashedValueStatementSupport(final YangParserConfiguration config) {
-        super(OpenConfigStatements.OPENCONFIG_HASHED_VALUE, config);
+        super(OpenConfigStatements.OPENCONFIG_HASHED_VALUE, config, VALIDATOR);
     }
 }
index 71a24921ada74465e3ec9edb22b4d27860d2401b..9bbb971ebee47c5d82d330cdb440a5cdc80f476a 100644 (file)
@@ -17,7 +17,6 @@
     </parent>
 
     <artifactId>rfc6241-parser-support</artifactId>
-    <version>7.0.0-SNAPSHOT</version>
     <packaging>bundle</packaging>
     <name>${project.artifactId}</name>
     <description>RFC6241 parser support</description>
index 53d8a62e0127b82ee66c39533108e86e81dd0815..f5824bb85489a7f0c2ea7038aac366c2873e97db 100644 (file)
@@ -34,7 +34,7 @@ public final class GetFilterElementAttributesStatementSupport extends AbstractEm
         SubstatementValidator.builder(NetconfStatements.GET_FILTER_ELEMENT_ATTRIBUTES).build();
 
     public GetFilterElementAttributesStatementSupport(final YangParserConfiguration config) {
-        super(NetconfStatements.GET_FILTER_ELEMENT_ATTRIBUTES, StatementPolicy.reject(), config);
+        super(NetconfStatements.GET_FILTER_ELEMENT_ATTRIBUTES, StatementPolicy.reject(), config, VALIDATOR);
     }
 
     @Override
@@ -44,11 +44,6 @@ public final class GetFilterElementAttributesStatementSupport extends AbstractEm
         stmt.setIsSupportedToBuildEffective(computeSupported(stmt));
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return VALIDATOR;
-    }
-
     @Override
     protected GetFilterElementAttributesStatement createDeclared(
             final StmtContext<Empty, GetFilterElementAttributesStatement, ?> ctx,
index 1f983b9d84a3d9e48d8b59c1ac8a96911d66538b..259fc403bd662e547f59993ca4dd80adf7d9a2ac 100644 (file)
@@ -27,12 +27,7 @@ public final class DefaultDenyAllStatementSupport
         SubstatementValidator.builder(NACMStatements.DEFAULT_DENY_ALL).build();
 
     public DefaultDenyAllStatementSupport(final YangParserConfiguration config) {
-        super(NACMStatements.DEFAULT_DENY_ALL, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return VALIDATOR;
+        super(NACMStatements.DEFAULT_DENY_ALL, StatementPolicy.contextIndependent(), config, VALIDATOR);
     }
 
     @Override
index 143ded2ff32324c396c8e4a4a942058c7a6e2c6b..2032861277119f82650e890670f0c3a67a24fbd1 100644 (file)
@@ -27,12 +27,7 @@ public final class DefaultDenyWriteStatementSupport
         SubstatementValidator.builder(NACMStatements.DEFAULT_DENY_WRITE).build();
 
     public DefaultDenyWriteStatementSupport(final YangParserConfiguration config) {
-        super(NACMStatements.DEFAULT_DENY_WRITE, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return VALIDATOR;
+        super(NACMStatements.DEFAULT_DENY_WRITE, StatementPolicy.contextIndependent(), config, VALIDATOR);
     }
 
     @Override
index b8bb4f8dfb9fc06cded46f435c27108cd01469f0..a989a3adc99d33f6d50a9aa37da80d142e4d61d3 100644 (file)
@@ -25,7 +25,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 @Beta
 public final class AliasStatementSupport
         extends AbstractStringStatementSupport<AliasStatement, AliasEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+    private static final SubstatementValidator VALIDATOR =
             SubstatementValidator.builder(IetfYangSmiv2ExtensionsMapping.ALIAS)
                 .add(YangStmtMapping.DESCRIPTION, 0, 1)
                 .add(YangStmtMapping.REFERENCE, 0, 1)
@@ -34,12 +34,7 @@ public final class AliasStatementSupport
                 .build();
 
     public AliasStatementSupport(final YangParserConfiguration config) {
-        super(IetfYangSmiv2ExtensionsMapping.ALIAS, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(IetfYangSmiv2ExtensionsMapping.ALIAS, StatementPolicy.contextIndependent(), config, VALIDATOR);
     }
 
     @Override
index 7ad6adacea2dc1f3f187f7b212555bf48de0aa06..cd69339d440470b65fb8f0a006c22ed648c79420 100644 (file)
@@ -24,16 +24,11 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 @Beta
 public final class DefValStatementSupport
         extends AbstractStringStatementSupport<DefValStatement, DefValEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+    private static final SubstatementValidator VALIDATOR =
             SubstatementValidator.builder(IetfYangSmiv2ExtensionsMapping.DEFVAL).build();
 
     public DefValStatementSupport(final YangParserConfiguration config) {
-        super(IetfYangSmiv2ExtensionsMapping.DEFVAL, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(IetfYangSmiv2ExtensionsMapping.DEFVAL, StatementPolicy.contextIndependent(), config, VALIDATOR);
     }
 
     @Override
index b36dc96a9f9119ad46ecb4fb0b7a284875de5d03..48a390dc79383b6e37101ba26b8c1d57141d8ced 100644 (file)
@@ -24,16 +24,11 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 @Beta
 public final class DisplayHintStatementSupport
         extends AbstractStringStatementSupport<DisplayHintStatement, DisplayHintEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+    private static final SubstatementValidator VALIDATOR =
             SubstatementValidator.builder(IetfYangSmiv2ExtensionsMapping.DISPLAY_HINT).build();
 
     public DisplayHintStatementSupport(final YangParserConfiguration config) {
-        super(IetfYangSmiv2ExtensionsMapping.DISPLAY_HINT, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(IetfYangSmiv2ExtensionsMapping.DISPLAY_HINT, StatementPolicy.contextIndependent(), config, VALIDATOR);
     }
 
     @Override
index 32b489aa0310163270159e33a6788a9a66dc76df..8349d05be5aff15699c96caba7e1c4766a95e92f 100644 (file)
@@ -24,16 +24,11 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 @Beta
 public final class ImpliedStatementSupport
         extends AbstractStringStatementSupport<ImpliedStatement, ImpliedEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+    private static final SubstatementValidator VALIDATOR =
             SubstatementValidator.builder(IetfYangSmiv2ExtensionsMapping.IMPLIED).build();
 
     public ImpliedStatementSupport(final YangParserConfiguration config) {
-        super(IetfYangSmiv2ExtensionsMapping.IMPLIED, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(IetfYangSmiv2ExtensionsMapping.IMPLIED, StatementPolicy.contextIndependent(), config, VALIDATOR);
     }
 
     @Override
index abcb1faf23049f49cf394a635b4afc48e85710ed..2d50afdea54cadc6ee7e78f1835b743ee37f113a 100644 (file)
@@ -26,11 +26,11 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 @Beta
 public final class MaxAccessStatementSupport
         extends AbstractStatementSupport<MaxAccess, MaxAccessStatement, MaxAccessEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+    private static final SubstatementValidator VALIDATOR =
             SubstatementValidator.builder(IetfYangSmiv2ExtensionsMapping.MAX_ACCESS).build();
 
     public MaxAccessStatementSupport(final YangParserConfiguration config) {
-        super(IetfYangSmiv2ExtensionsMapping.MAX_ACCESS, StatementPolicy.contextIndependent(), config);
+        super(IetfYangSmiv2ExtensionsMapping.MAX_ACCESS, StatementPolicy.contextIndependent(), config, VALIDATOR);
     }
 
     @Override
@@ -48,11 +48,6 @@ public final class MaxAccessStatementSupport
         return val == null ? rawArgument : val.stringLiteral();
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected MaxAccessStatement createDeclared(final StmtContext<MaxAccess, MaxAccessStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 260232e8b64f2486cbe8d051e81d8307bcc836f6..044285d74304fe7f8707d58347169359dc02994b 100644 (file)
@@ -26,11 +26,11 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 @Beta
 public final class OidStatementSupport
         extends AbstractStatementSupport<ObjectIdentifier, OidStatement, OidEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+    private static final SubstatementValidator VALIDATOR =
             SubstatementValidator.builder(IetfYangSmiv2ExtensionsMapping.OBJECT_ID).build();
 
     public OidStatementSupport(final YangParserConfiguration config) {
-        super(IetfYangSmiv2ExtensionsMapping.OBJECT_ID, StatementPolicy.contextIndependent(), config);
+        super(IetfYangSmiv2ExtensionsMapping.OBJECT_ID, StatementPolicy.contextIndependent(), config, VALIDATOR);
     }
 
     @Override
@@ -42,11 +42,6 @@ public final class OidStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected OidStatement createDeclared(final StmtContext<ObjectIdentifier, OidStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 33e39d4797444c202727f6a38a8061ec5cceaf7f..0aa371923481f755777593cf92ef510b6db49a4f 100644 (file)
@@ -25,11 +25,11 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 @Beta
 public final class SubIdStatementSupport
         extends AbstractStatementSupport<Uint32, SubIdStatement, SubIdEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+    private static final SubstatementValidator VALIDATOR =
             SubstatementValidator.builder(IetfYangSmiv2ExtensionsMapping.SUB_ID).build();
 
     public SubIdStatementSupport(final YangParserConfiguration config) {
-        super(IetfYangSmiv2ExtensionsMapping.SUB_ID, StatementPolicy.contextIndependent(), config);
+        super(IetfYangSmiv2ExtensionsMapping.SUB_ID, StatementPolicy.contextIndependent(), config, VALIDATOR);
     }
 
     @Override
@@ -37,11 +37,6 @@ public final class SubIdStatementSupport
         return Uint32.valueOf(value);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected SubIdStatement createDeclared(final StmtContext<Uint32, SubIdStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index bca16f5423f0f84892baefd594ed31490675c738..2e838f81e55c412ce4b7d38e1611e62b7d3d9add 100644 (file)
@@ -38,7 +38,7 @@ public final class AnnotationStatementSupport
         .build();
 
     public AnnotationStatementSupport(final YangParserConfiguration config) {
-        super(MetadataStatements.ANNOTATION, StatementPolicy.reject(), config);
+        super(MetadataStatements.ANNOTATION, StatementPolicy.reject(), config, VALIDATOR);
     }
 
     @Override
@@ -53,11 +53,6 @@ public final class AnnotationStatementSupport
                 stmt, "Annotations may only be defined at root of either a module or a submodule");
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return VALIDATOR;
-    }
-
     @Override
     protected AnnotationStatement createDeclared(final StmtContext<QName, AnnotationStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 72df7beedffbef377683728dd1844483184baa83..98a22df30c8b87ec760478da82f0bc318ce16e82 100644 (file)
@@ -36,14 +36,13 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 @Beta
 public final class YangDataStatementSupport
         extends AbstractStringStatementSupport<YangDataStatement, YangDataEffectiveStatement> {
-    private final SubstatementValidator declaredValidator;
+    private static final SubstatementValidator VALIDATOR = SubstatementValidator.builder(YangDataStatements.YANG_DATA)
+        .addMandatory(YangStmtMapping.CONTAINER)
+        .addOptional(YangStmtMapping.USES)
+        .build();
 
     public YangDataStatementSupport(final YangParserConfiguration config) {
-        super(YangDataStatements.YANG_DATA, StatementPolicy.reject(), config);
-        declaredValidator = SubstatementValidator.builder(YangDataStatements.YANG_DATA)
-                .addMandatory(YangStmtMapping.CONTAINER)
-                .addOptional(YangStmtMapping.USES)
-                .build();
+        super(YangDataStatements.YANG_DATA, StatementPolicy.reject(), config, VALIDATOR);
     }
 
     @Override
@@ -73,11 +72,6 @@ public final class YangDataStatementSupport
         return true;
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return declaredValidator;
-    }
-
     @Override
     protected YangDataStatement createDeclared(@NonNull final StmtContext<String, YangDataStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 0a35a86ae75ca1f29c910c0dce1b8cd7eb4afc1f..3eef9a27cf71fc0fd3fb40687a487d58eaca447c 100644 (file)
@@ -45,7 +45,7 @@ public final class MountPointStatementSupport
             // Implied by UnknownSchemaNode
             && copy.history().isAugmenting() == current.history().isAugmenting()
             && copy.history().isAddedByUses() == current.history().isAddedByUses()
-            && copy.equalParentPath(current)), config);
+            && copy.equalParentPath(current)), config, VALIDATOR);
     }
 
     // FIXME: these two methods are not quite right. RFC8528 states that:
@@ -72,11 +72,6 @@ public final class MountPointStatementSupport
             "Mount points may only be defined at either a container or a list");
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return VALIDATOR;
-    }
-
     @Override
     protected MountPointStatement createDeclared(@NonNull final StmtContext<QName, MountPointStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index ede06a5c765158bda1f56d052205f1cb15eeceb1..d80c66e7ff0696c60d9817762ddf35314b8fe3fa 100644 (file)
@@ -29,7 +29,7 @@ public final class OpenConfigVersionSupport
         SubstatementValidator.builder(OpenConfigStatements.OPENCONFIG_VERSION).build();
 
     public OpenConfigVersionSupport(final YangParserConfiguration config) {
-        super(OpenConfigStatements.OPENCONFIG_VERSION, StatementPolicy.reject(), config);
+        super(OpenConfigStatements.OPENCONFIG_VERSION, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -43,11 +43,6 @@ public final class OpenConfigVersionSupport
         stmt.addToNs(SemanticVersionNamespace.class, stmt.getParentContext(), stmt.argument());
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected OpenConfigVersionStatement createDeclared(final StmtContext<SemVer, OpenConfigVersionStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index a656d7bd81435459fd388ce3df4fdedfbde956fe..a6df68789296ad7c0fd7b9a744d04367320c4f5d 100644 (file)
@@ -45,6 +45,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase;
 
@@ -53,13 +54,13 @@ abstract class AbstractAugmentStatementSupport
     private static final Pattern PATH_REL_PATTERN1 = Pattern.compile("\\.\\.?\\s*/(.+)");
     private static final Pattern PATH_REL_PATTERN2 = Pattern.compile("//.*");
 
-    AbstractAugmentStatementSupport(final YangParserConfiguration config) {
+    AbstractAugmentStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
         super(YangStmtMapping.AUGMENT, StatementPolicy.copyDeclared(
             (copy, current, substatements) ->
                 copy.getArgument().equals(current.getArgument())
                 && copy.moduleName().getModule().equals(current.moduleName().getModule())
                 && Objects.equals(copy.original(), current.original())
-            ), config);
+            ), config, validator);
     }
 
     @Override
index 0ed54d65e2be21a97da4441bd0ab2dac5a4f4a70..7304ebb345bf54ae86a8ddc04a5d623ba4a9abbb 100644 (file)
@@ -31,12 +31,7 @@ public final class AugmentStatementRFC6020Support extends AbstractAugmentStateme
             .build();
 
     public AugmentStatementRFC6020Support(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index a79a2492f891a9d0828ae3b161d8f563cd5851b9..9280c4b4a75e2e9bb39c8c6e63d5f315f028fe52 100644 (file)
@@ -39,12 +39,7 @@ public final class AugmentStatementRFC7950Support extends AbstractAugmentStateme
             .build();
 
     public AugmentStatementRFC7950Support(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 0f876cdcb381b2d0edac0b608943ea038581256d..e76d9a1f7cb5004736ec90761928807ed9509e67 100644 (file)
@@ -105,7 +105,9 @@ abstract class AbstractDeviateStatementSupport
             YangStmtMapping.MANDATORY, YangStmtMapping.MAX_ELEMENTS, YangStmtMapping.MIN_ELEMENTS);
 
     AbstractDeviateStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.DEVIATE, StatementPolicy.contextIndependent(), config);
+        // Note: we are performing our own validation based on deviate kind.
+        // TODO: perhaps we should do argumentSpecificSupport?
+        super(YangStmtMapping.DEVIATE, StatementPolicy.contextIndependent(), config, null);
     }
 
     @Override
@@ -188,11 +190,6 @@ abstract class AbstractDeviateStatementSupport
         }
     }
 
-    @Override
-    protected final SubstatementValidator getSubstatementValidator() {
-        return null;
-    }
-
     @Override
     protected final DeviateStatement createDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 325e70158b7cc9c9ef032bd269bed5ce54d6dc18..18ccd825e95966735bb181edeea984587d17bca6 100644 (file)
@@ -46,7 +46,7 @@ public final class ExtensionStatementSupport
     private final YangParserConfiguration config;
 
     public ExtensionStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.EXTENSION, StatementPolicy.reject(), config);
+        super(YangStmtMapping.EXTENSION, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
         this.config = requireNonNull(config);
     }
 
@@ -78,11 +78,6 @@ public final class ExtensionStatementSupport
                 config));
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected ExtensionStatement createDeclared(final StmtContext<QName, ExtensionStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 255494861232ac662aa88829df3b8da6394ec2bf..b45d9c1ceb11edb933fc07c5142c4d770d1ead11 100644 (file)
@@ -27,7 +27,6 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.OverrideChildStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 final class UnrecognizedStatementSupport
         extends AbstractStatementSupport<Object, UnrecognizedStatement, UnrecognizedEffectiveStatement>
@@ -37,7 +36,7 @@ final class UnrecognizedStatementSupport
     UnrecognizedStatementSupport(final StatementDefinition publicDefinition, final YangParserConfiguration config) {
         // We have no idea about the statement's semantics, hence there should be noone interested in its semantics.
         // Nevertheless it may be of interest for various hacks to understand there was an extension involved.
-        super(publicDefinition, StatementPolicy.exactReplica(), config);
+        super(publicDefinition, StatementPolicy.exactReplica(), config, null);
         this.config = requireNonNull(config);
     }
 
@@ -66,12 +65,6 @@ final class UnrecognizedStatementSupport
         return new UnrecognizedStatementSupport(def, config);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        // We know nothing about this statement
-        return null;
-    }
-
     @Override
     protected UnrecognizedStatement createDeclared(final StmtContext<Object, UnrecognizedStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index a8d846751eecaec3148ea0b91e5f63290016d0d9..7e4b63f0f85f368277b2c847984b1420485467bd 100644 (file)
@@ -45,12 +45,11 @@ import org.slf4j.LoggerFactory;
 abstract class AbstractIfFeatureStatementSupport
         extends AbstractStatementSupport<IfFeatureExpr, IfFeatureStatement, IfFeatureEffectiveStatement> {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractIfFeatureStatementSupport.class);
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-        YangStmtMapping.IF_FEATURE)
-        .build();
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.IF_FEATURE).build();
 
     AbstractIfFeatureStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.IF_FEATURE, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.IF_FEATURE, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -84,11 +83,6 @@ abstract class AbstractIfFeatureStatementSupport
         });
     }
 
-    @Override
-    protected final SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected final IfFeatureStatement createDeclared(final StmtContext<IfFeatureExpr, IfFeatureStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 25e5592ffd1c3586c87f7f52c67ea0dc0bb3250b..0ec75ec6ad323cf18008b5ec78723c5d3ffb68a9 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.import_;
 
 import static com.google.common.base.Verify.verify;
 import static com.google.common.base.Verify.verifyNotNull;
-import static java.util.Objects.requireNonNull;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase.SOURCE_PRE_LINKAGE;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
 
@@ -65,12 +64,10 @@ public final class ImportStatementSupport
             .addOptional(YangStmtMapping.REFERENCE)
             .build();
 
-    private final SubstatementValidator validator;
     private final boolean semanticVersioning;
 
     private ImportStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.IMPORT, StatementPolicy.reject(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.IMPORT, StatementPolicy.reject(), config, validator);
         semanticVersioning = config.importResolutionMode() == ImportResolutionMode.OPENCONFIG_SEMVER;
     }
 
@@ -128,11 +125,6 @@ public final class ImportStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected ImportStatement createDeclared(final StmtContext<String, ImportStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 7e7d7f4acf7c6f8f15587653d3f4fda45158dd85..5cf1ab349ee202e67bcac38607df35c12d65c6ac 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list;
 
-import static java.util.Objects.requireNonNull;
-
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -76,11 +74,8 @@ public final class LeafListStatementSupport
             .addOptional(YangStmtMapping.WHEN)
             .build();
 
-    private final SubstatementValidator validator;
-
     private LeafListStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.LEAF_LIST, instantiatedPolicy(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.LEAF_LIST, instantiatedPolicy(), config, validator);
     }
 
     public static @NonNull LeafListStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -91,11 +86,6 @@ public final class LeafListStatementSupport
         return new LeafListStatementSupport(config, RFC7950_VALIDATOR);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected LeafListStatement createDeclared(final StmtContext<QName, LeafListStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index e8b22386c480972a4d201ba6e6f0d152b7cd09ab..0adb85324dd93837a3497b44bed93773dab58705 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list;
 
 import static com.google.common.base.Verify.verify;
-import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
@@ -114,11 +113,8 @@ public final class ListStatementSupport
         .addOptional(YangStmtMapping.WHEN)
         .build();
 
-    private final SubstatementValidator validator;
-
     ListStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.LIST, instantiatedPolicy(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.LIST, instantiatedPolicy(), config, validator);
     }
 
     public static @NonNull ListStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -129,11 +125,6 @@ public final class ListStatementSupport
         return new ListStatementSupport(config, RFC7950_VALIDATOR);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected ListStatement createDeclared(final StmtContext<QName, ListStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index a1859bcf1151ec6c9ad7754026ccf979597d2a24..7d834e1153040ddb91542fb4f9088dfd7b71a84a 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -18,6 +20,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.SchemaTreeEffectiveStateme
 import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractSchemaTreeStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 /**
  * A massively-misnamed superclass for statements which are both schema tree participants and can be created as implicit
@@ -28,9 +31,9 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
  */
 abstract class AbstractImplicitStatementSupport<D extends DeclaredStatement<QName>,
         E extends SchemaTreeEffectiveStatement<D>> extends AbstractSchemaTreeStatementSupport<D, E> {
-    AbstractImplicitStatementSupport(final StatementDefinition publicDefinition,
-            final StatementPolicy<QName, D> policy, final YangParserConfiguration config) {
-        super(publicDefinition, policy, config);
+    AbstractImplicitStatementSupport(final StatementDefinition publicDefinition, final StatementPolicy<QName, D> policy,
+            final YangParserConfiguration config, final SubstatementValidator validator) {
+        super(publicDefinition, policy, config, requireNonNull(validator));
     }
 
     @Override
index e28a999f03f28d6775ef85a2faf10e7e4fb75539..796f8eb297fd8b6f0d4606d1cf10625a0ca874c8 100644 (file)
@@ -25,6 +25,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSup
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
 /**
@@ -38,8 +39,9 @@ abstract class AbstractOperationContainerStatementSupport<D extends DeclaredStat
     private final Function<QNameModule, QName> createArgument;
 
     AbstractOperationContainerStatementSupport(final StatementDefinition publicDefinition,
-            final YangParserConfiguration config, final Function<QNameModule, QName> createArgument) {
-        super(publicDefinition, uninstantiatedPolicy(), config);
+            final YangParserConfiguration config, final SubstatementValidator validator,
+            final Function<QNameModule, QName> createArgument) {
+        super(publicDefinition, uninstantiatedPolicy(), config, validator);
         this.createArgument = requireNonNull(createArgument);
     }
 
index 95f419074510caf67999914da607f9549fe04b80..17ee582aad255bc146680c7471428d52894164a8 100644 (file)
@@ -61,7 +61,7 @@ public final class ActionStatementSupport extends
 
     public ActionStatementSupport(final YangParserConfiguration config, final InputStatementSupport implicitInput,
              final OutputStatementSupport implicitOutput) {
-        super(YangStmtMapping.ACTION, uninstantiatedPolicy(), config);
+        super(YangStmtMapping.ACTION, uninstantiatedPolicy(), config, SUBSTATEMENT_VALIDATOR);
         this.implicitInput = requireNonNull(implicitInput);
         this.implicitOutput = requireNonNull(implicitOutput);
     }
@@ -93,11 +93,6 @@ public final class ActionStatementSupport extends
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected ActionStatement createDeclared(final StmtContext<QName, ActionStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index d3ccbb7d686d7d49aa9a425966d87670f1a1ac6b..43ba7726e981ee783d20b2ad1c9bc2a43e98bc4c 100644 (file)
@@ -45,12 +45,7 @@ public final class AnydataStatementSupport
             .build();
 
     public AnydataStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.ANYDATA, instantiatedPolicy(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.ANYDATA, instantiatedPolicy(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 4610fa27dd678100c2f23fbe1fbf3c682b1b62b4..d1d43d0215ace24521c798ed1a27c0f981f966d7 100644 (file)
@@ -45,12 +45,7 @@ public final class AnyxmlStatementSupport
             .build();
 
     public AnyxmlStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.ANYXML, instantiatedPolicy(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.ANYXML, instantiatedPolicy(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 7b6812c4b1f55cba9d2d39fc6b22aa35b7367a27..50cdc628f144308d3882d439b76d14337aa47dde 100644 (file)
@@ -31,7 +31,7 @@ public final class ArgumentStatementSupport
         SubstatementValidator.builder(YangStmtMapping.ARGUMENT).addOptional(YangStmtMapping.YIN_ELEMENT).build();
 
     public ArgumentStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.ARGUMENT, StatementPolicy.reject(), config);
+        super(YangStmtMapping.ARGUMENT, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -39,11 +39,6 @@ public final class ArgumentStatementSupport
         return StmtContextUtils.parseIdentifier(ctx, value);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected ArgumentStatement createDeclared(final StmtContext<QName, ArgumentStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 2a84fd181e616847918441463da9aad21a0b2a79..2bb3d4238f4ff16b58ced321ba684e0e6c1e381e 100644 (file)
@@ -40,7 +40,7 @@ public final class BaseStatementSupport extends AbstractQNameStatementSupport<Ba
             SubstatementValidator.builder(YangStmtMapping.BASE).build();
 
     public BaseStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.BASE, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.BASE, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -74,11 +74,6 @@ public final class BaseStatementSupport extends AbstractQNameStatementSupport<Ba
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected BaseStatement createDeclared(final StmtContext<QName, BaseStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index da35338e472ba59cd5161ca57581517f557f3fd0..aa22cfcfb7865654d25b4c4c30483a02c2cbb994 100644 (file)
@@ -45,7 +45,7 @@ public final class BelongsToStatementSupport
             SubstatementValidator.builder(YangStmtMapping.BELONGS_TO).addMandatory(YangStmtMapping.PREFIX).build();
 
     public BelongsToStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.BELONGS_TO, StatementPolicy.reject(), config);
+        super(YangStmtMapping.BELONGS_TO, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -104,9 +104,4 @@ public final class BelongsToStatementSupport
             BelongsToEffectiveStatement> belongsToCtx) {
         return RevisionSourceIdentifier.create(belongsToCtx.getArgument());
     }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
 }
index 40d11b8ecc8fd4cb4f65fd3cca9f8ceb1196dcae..14457bd0457e2be853132348c6179cb033e8c06a 100644 (file)
@@ -46,11 +46,8 @@ public final class BitStatementSupport extends AbstractStatementSupport<String,
             .addOptional(YangStmtMapping.POSITION)
             .build();
 
-    private final SubstatementValidator validator;
-
     private BitStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.BIT, StatementPolicy.contextIndependent(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.BIT, StatementPolicy.contextIndependent(), config, requireNonNull(validator));
     }
 
     public static @NonNull BitStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -67,11 +64,6 @@ public final class BitStatementSupport extends AbstractStatementSupport<String,
         return StmtContextUtils.parseIdentifier(ctx, value).getLocalName();
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected BitStatement createDeclared(final StmtContext<String, BitStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 05918d03d3f18d3d4bd1eaeca33224d42f384af1..6879078635eeb734c9e6b0ec7677f80dff4539e5 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
-import static java.util.Objects.requireNonNull;
-
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -74,11 +72,8 @@ public final class CaseStatementSupport
             .addOptional(YangStmtMapping.WHEN)
             .build();
 
-    private final SubstatementValidator validator;
-
     private CaseStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.CASE, instantiatedPolicy(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.CASE, instantiatedPolicy(), config, validator);
     }
 
     public static @NonNull CaseStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -89,11 +84,6 @@ public final class CaseStatementSupport
         return new CaseStatementSupport(config, RFC7950_VALIDATOR);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected CaseStatement createDeclared(final StmtContext<QName, CaseStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index bc8fde8cb195f8ae8bf2ff7c5d3deb577ac6f0b1..784c70b3b6662de1a77564170b68fc9991ec2cb8 100644 (file)
@@ -83,13 +83,11 @@ public final class ChoiceStatementSupport
             .addOptional(YangStmtMapping.WHEN)
             .build();
 
-    private final SubstatementValidator validator;
     private final CaseStatementSupport implicitCase;
 
     private ChoiceStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator,
             final CaseStatementSupport implicitCase) {
-        super(YangStmtMapping.CHOICE, instantiatedPolicy(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.CHOICE, instantiatedPolicy(), config, requireNonNull(validator));
         this.implicitCase = requireNonNull(implicitCase);
     }
 
@@ -109,11 +107,6 @@ public final class ChoiceStatementSupport
             : Optional.empty();
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected ChoiceStatement createDeclared(@NonNull final StmtContext<QName, ChoiceStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 5984d4368e7f0a935caeee49c3a0ac47fe098ce9..fa1e959aee0eea663aa2c1ee7bf2cc0beddc0380 100644 (file)
@@ -31,12 +31,7 @@ public final class ConfigStatementSupport
             EffectiveStatements.createConfig(false), EffectiveStatements.createConfig(true),
             // FIXME: This is not quite true. If we are instantiated in a context which ignores config, which should
             //        really fizzle. This needs some more analysis.
-            StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+            StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 2eb9e2b54009b1e056d4768f6c9416be18735750..1f48e6da9ea0e679dfa739dbd88373fbd06c5936 100644 (file)
@@ -27,12 +27,7 @@ public final class ContactStatementSupport
         SubstatementValidator.builder(YangStmtMapping.CONTACT).build();
 
     public ContactStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.CONTACT, StatementPolicy.reject(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.CONTACT, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 7d90f2b9d7c8081ac26a1baa4f45e96da7f7075e..4ca2a1a05b55f9f3f7a3e0faea0d819ce47f83e8 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
-import static java.util.Objects.requireNonNull;
-
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
@@ -85,11 +83,8 @@ public final class ContainerStatementSupport
             .addOptional(YangStmtMapping.WHEN)
             .build();
 
-    private final SubstatementValidator validator;
-
     private ContainerStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.CONTAINER, instantiatedPolicy(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.CONTAINER, instantiatedPolicy(), config, validator);
     }
 
     public static @NonNull ContainerStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -100,11 +95,6 @@ public final class ContainerStatementSupport
         return new ContainerStatementSupport(config, RFC7950_VALIDATOR);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected ContainerStatement createDeclared(final StmtContext<QName, ContainerStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index f7a14d161af0d0836a6c055b1aadc9cf1d6ac4b1..36d4cc307a6081360dfdbd3caede1868c59746bf 100644 (file)
@@ -30,12 +30,7 @@ public final class DefaultStatementSupport
 
     public DefaultStatementSupport(final YangParserConfiguration config) {
         // Note: if we start interpreting the string we'll need to use StatementPolicy.declaredCopy()
-        super(YangStmtMapping.DEFAULT, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.DEFAULT, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index d7d173afea396c4ac951afcfdbb3ac32add50e6c..5ab841a2339b9ddf161fec6ae222f30c6fd29548 100644 (file)
@@ -29,12 +29,7 @@ public final class DescriptionStatementSupport
         SubstatementValidator.builder(YangStmtMapping.DESCRIPTION).build();
 
     public DescriptionStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.DESCRIPTION, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.DESCRIPTION, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index dbfa1bc2d86ecbbc55b3bcb6932c9da836763443..2e55b8b3821317ac813f40b1cc14460a6b3636f3 100644 (file)
@@ -32,15 +32,15 @@ import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName;
 
 public final class DeviationStatementSupport
         extends AbstractStatementSupport<Absolute, DeviationStatement, DeviationEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-        .DEVIATION)
-        .addOptional(YangStmtMapping.DESCRIPTION)
-        .addAny(YangStmtMapping.DEVIATE)
-        .addOptional(YangStmtMapping.REFERENCE)
-        .build();
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.DEVIATION)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addAny(YangStmtMapping.DEVIATE)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .build();
 
     public DeviationStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.DEVIATION, StatementPolicy.reject(), config);
+        super(YangStmtMapping.DEVIATION, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -60,11 +60,6 @@ public final class DeviationStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected DeviationStatement createDeclared(final StmtContext<Absolute, DeviationStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index e3cc4f109a4a7e6e62761803574d7ef7f7c27068..f1bf1c513d5743bc757753f75c8811ebd32df3d7 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
-import static java.util.Objects.requireNonNull;
-
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
@@ -44,11 +42,8 @@ public final class EnumStatementSupport
             .addOptional(YangStmtMapping.VALUE)
             .build();
 
-    private final SubstatementValidator validator;
-
     private EnumStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.ENUM, StatementPolicy.contextIndependent(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.ENUM, StatementPolicy.contextIndependent(), config, validator);
     }
 
     public static @NonNull EnumStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -65,11 +60,6 @@ public final class EnumStatementSupport
         return value;
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected EnumStatement createDeclared(final StmtContext<String, EnumStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 850f4a071e6f4d5689f20dcbffa68b44e2eda847..475aa81b93a25e23067d99aec307c4b462d0accf 100644 (file)
@@ -25,16 +25,11 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class ErrorAppTagStatementSupport
         extends AbstractStringStatementSupport<ErrorAppTagStatement, ErrorAppTagEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-        YangStmtMapping.ERROR_APP_TAG).build();
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.ERROR_APP_TAG).build();
 
     public ErrorAppTagStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.ERROR_APP_TAG, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.ERROR_APP_TAG, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 80751923c2645be7ac89de30e2b469ddc3e5c546..5a935e60de3572a5cff6d4f2b6606b82731f7ff9 100644 (file)
@@ -29,12 +29,7 @@ public final class ErrorMessageStatementSupport
         SubstatementValidator.builder(YangStmtMapping.ERROR_MESSAGE).build();
 
     public ErrorMessageStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.ERROR_MESSAGE, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.ERROR_MESSAGE, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 38f6d800de46d2c00b58d4f5bee9fdfad488d144..7b78289ef6691a255da318400159675133fd8f12 100644 (file)
@@ -41,7 +41,7 @@ public final class FeatureStatementSupport
             .build();
 
     public FeatureStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.FEATURE, StatementPolicy.reject(), config);
+        super(YangStmtMapping.FEATURE, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -55,11 +55,6 @@ public final class FeatureStatementSupport
         stmt.addContext(FeatureNamespace.class, stmt.getArgument(), stmt);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected FeatureStatement createDeclared(final StmtContext<QName, FeatureStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 9f9ae2c6765beab33080bf02d99f476b7bd6b515..c69037f6e9cb3db5cc880120642ea2db0b91a3c3 100644 (file)
@@ -45,7 +45,7 @@ public final class FractionDigitsStatementSupport
     }
 
     public FractionDigitsStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.FRACTION_DIGITS, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.FRACTION_DIGITS, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -62,11 +62,6 @@ public final class FractionDigitsStatementSupport
         return fractionDigits;
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected FractionDigitsStatement createDeclared(final StmtContext<Integer, FractionDigitsStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index b82d205b087b7028302984350d4d80d20de282b6..2b7842afafbdf3442fe4f0bb96f755d3b399abd1 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
-import static java.util.Objects.requireNonNull;
-
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
@@ -77,15 +75,12 @@ public final class GroupingStatementSupport
             .addAny(YangStmtMapping.USES)
             .build();
 
-    private final SubstatementValidator validator;
-
     GroupingStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
         super(YangStmtMapping.GROUPING, StatementPolicy.copyDeclared(
             (copy, current, substatements) ->
                 copy.history().isAddedByUses() == current.history().isAddedByUses()
                 && copy.getArgument().equals(current.getArgument())
-                && copy.equalParentPath(current)), config);
-        this.validator = requireNonNull(validator);
+                && copy.equalParentPath(current)), config, validator);
     }
 
     public static @NonNull GroupingStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -135,11 +130,6 @@ public final class GroupingStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected GroupingStatement createDeclared(final StmtContext<QName, GroupingStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index e8ed3225affc6f4771b37cbb316a12e6d5ed1c47..cf25d187402c7d9a62e9ea69298e73245b9cafa6 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
 import static com.google.common.base.Verify.verify;
 import static com.google.common.base.Verify.verifyNotNull;
-import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
@@ -61,11 +60,8 @@ public final class IdentityStatementSupport
             .addOptional(YangStmtMapping.STATUS)
             .build();
 
-    private final SubstatementValidator validator;
-
     private IdentityStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.IDENTITY, StatementPolicy.reject(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.IDENTITY, StatementPolicy.reject(), config, validator);
     }
 
     public static @NonNull IdentityStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -90,11 +86,6 @@ public final class IdentityStatementSupport
         stmt.addToNs(IdentityNamespace.class, qname, stmt);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected IdentityStatement createDeclared(final StmtContext<QName, IdentityStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 6efe34df017a7421e87732313263d8b3b06bea2f..2701a3069c112a3e2c45a8c73b64de162e69f5b1 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
-import static java.util.Objects.requireNonNull;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase.SOURCE_LINKAGE;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.findFirstDeclaredSubstatement;
 
@@ -58,11 +57,8 @@ public final class IncludeStatementSupport
             .addOptional(YangStmtMapping.REFERENCE)
             .build();
 
-    private final SubstatementValidator validator;
-
     IncludeStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.INCLUDE, StatementPolicy.reject(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.INCLUDE, StatementPolicy.reject(), config, validator);
     }
 
     public static @NonNull IncludeStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -115,11 +111,6 @@ public final class IncludeStatementSupport
         });
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected IncludeStatement createDeclared(final StmtContext<String, IncludeStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 075601ab28d98f59e7f6618eaf67874db6b5396d..136bfb8083377fbe11be213109d468a4cd31dec2 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
-import static java.util.Objects.requireNonNull;
-
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
@@ -60,11 +58,8 @@ public final class InputStatementSupport
         .addAny(YangStmtMapping.USES)
         .build();
 
-    private final SubstatementValidator validator;
-
     private InputStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.INPUT, config, YangConstants::operationInputQName);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.INPUT, config, validator, YangConstants::operationInputQName);
     }
 
     public static @NonNull InputStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -75,11 +70,6 @@ public final class InputStatementSupport
         return new InputStatementSupport(config, RFC7950_VALIDATOR);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected InputStatement createDeclared(final StmtContext<QName, InputStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index a2a828b6e815bd712267fdf680cefe4fc36586ad..51fa88be222d8e82f351572ac47603e0f98ebd2a 100644 (file)
@@ -62,7 +62,8 @@ public final class KeyStatementSupport
     public KeyStatementSupport(final YangParserConfiguration config) {
         super(YangStmtMapping.KEY, StatementPolicy.copyDeclared(
             // Identity comparison is sufficient because adaptArgumentValue() is careful about reuse.
-            (copy, current, substatements) -> copy.getArgument() == current.getArgument()), config);
+            (copy, current, substatements) -> copy.getArgument() == current.getArgument()),
+            config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -99,11 +100,6 @@ public final class KeyStatementSupport
         return replaced ? builder.build() : ctx.argument();
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected KeyStatement createDeclared(final StmtContext<Set<QName>, KeyStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index cd6d3f5fb0ccd220f18aff13d8779d1f5bca3cee..c0b0af1f475d5d8ef25427db7a91205cd22dd88a 100644 (file)
@@ -54,7 +54,7 @@ public final class LeafStatementSupport
             .build();
 
     public LeafStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.LEAF, instantiatedPolicy(), config);
+        super(YangStmtMapping.LEAF, instantiatedPolicy(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -63,11 +63,6 @@ public final class LeafStatementSupport
         StmtContextUtils.validateIfFeatureAndWhenOnListKeys(ctx);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected LeafStatement createDeclared(final StmtContext<QName, LeafStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index e28eec6aa90f1e9152f245759ef464bf2d635f3e..4f5a45bad4182a811be79bdde131972330db6e35 100644 (file)
@@ -45,7 +45,7 @@ public final class LengthStatementSupport
             .build();
 
     public LengthStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.LENGTH, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.LENGTH, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -79,11 +79,6 @@ public final class LengthStatementSupport
         return ImmutableList.copyOf(ranges);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected LengthStatement createDeclared(final StmtContext<List<ValueRange>, LengthStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index b39a554ffef376873d29ed8382259646495198a5..1aced24666507dd09e900ea9f319421efdcf5edc 100644 (file)
@@ -30,12 +30,7 @@ public final class MandatoryStatementSupport extends
         super(YangStmtMapping.MANDATORY,
             EffectiveStatements.createMandatory(DeclaredStatements.createMandatory(Boolean.FALSE)),
             EffectiveStatements.createMandatory(DeclaredStatements.createMandatory(Boolean.TRUE)),
-            StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+            StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 62e51f9de77b6a443865cd9b58ecc888360aceaa..021dde9da20346fc6610e50e5cf7ef3f502962b9 100644 (file)
@@ -29,7 +29,7 @@ public final class MaxElementsStatementSupport
         SubstatementValidator.builder(YangStmtMapping.MAX_ELEMENTS).build();
 
     public MaxElementsStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.MAX_ELEMENTS, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.MAX_ELEMENTS, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -37,11 +37,6 @@ public final class MaxElementsStatementSupport
         return "unbounded".equals(rawArgument) ? "unbounded" : rawArgument;
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected MaxElementsStatement createDeclared(final StmtContext<String, MaxElementsStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index b1880d3985ff036c9e94b40f95f3ed257d23b170..bc19dc3b0fb512fa913e91315dfcdb83b17ddbce 100644 (file)
@@ -29,7 +29,7 @@ public final class MinElementsStatementSupport
         SubstatementValidator.builder(YangStmtMapping.MIN_ELEMENTS).build();
 
     public MinElementsStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.MIN_ELEMENTS, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.MIN_ELEMENTS, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -41,11 +41,6 @@ public final class MinElementsStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected MinElementsStatement createDeclared(final Integer argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index acaff663b8d6c7b6a16e553176f6b008d1bf9e44..513966b340c9cb1b7d3c954ce6e43497fb399b8c 100644 (file)
@@ -31,7 +31,7 @@ public final class ModifierStatementSupport
         SubstatementValidator.builder(YangStmtMapping.MODIFIER).build();
 
     public ModifierStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.MODIFIER, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.MODIFIER, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -40,11 +40,6 @@ public final class ModifierStatementSupport
             "'%s' is not valid argument of modifier statement", value);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     public String internArgument(final String rawArgument) {
         return "invert-match".equals(rawArgument) ? "invert-match" : rawArgument;
index eed8b1b61cc3837d14fb7c7d81dc875120a30f26..680dadc03e878f1f7dffebb06b29a9fbca59d8cb 100644 (file)
@@ -41,7 +41,7 @@ public final class MustStatementSupport
 
     public MustStatementSupport(final XPathSupport xpathSupport, final YangParserConfiguration config) {
         // Note: if we end up binding expressions, this needs to become declaredCopy()
-        super(YangStmtMapping.MUST, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.MUST, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
         this.xpathSupport = requireNonNull(xpathSupport);
     }
 
@@ -50,11 +50,6 @@ public final class MustStatementSupport
         return xpathSupport.parseXPath(ctx, value);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected MustStatement createDeclared(final StmtContext<QualifiedBound, MustStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 0455399f5a1f29a5e5e97a5f2ab2f1c657af78af..4dc6f5b8df2e77c001eb3714ffa0ddee3ef18815 100644 (file)
@@ -32,7 +32,7 @@ public final class NamespaceStatementSupport
         SubstatementValidator.builder(YangStmtMapping.NAMESPACE).build();
 
     public NamespaceStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.NAMESPACE, StatementPolicy.reject(), config);
+        super(YangStmtMapping.NAMESPACE, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -44,11 +44,6 @@ public final class NamespaceStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected NamespaceStatement createDeclared(@NonNull final StmtContext<XMLNamespace, NamespaceStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index d445c9e4f9cacfc2de436a0cfac26ddb8d9517be..6476b32618295d187244bd9e55f5c4b3a73c0e55 100644 (file)
@@ -46,7 +46,7 @@ public final class OrderedByStatementSupport
         EffectiveStatements.createOrderedBy(EMPTY_USER_DECL);
 
     public OrderedByStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.ORDERED_BY, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.ORDERED_BY, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -69,11 +69,6 @@ public final class OrderedByStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected OrderedByStatement createDeclared(final StmtContext<Ordering, OrderedByStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 9c953d88ee3e35cc0c410f0bdf41d8199e0b59ce..339bd2c9e12d00e8dee885ce09f9f2da4106040e 100644 (file)
@@ -27,12 +27,7 @@ public final class OrganizationStatementSupport
         SubstatementValidator.builder(YangStmtMapping.ORGANIZATION).build();
 
     public OrganizationStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.ORGANIZATION, StatementPolicy.reject(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.ORGANIZATION, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index c45699555e16d22478e12e361939a185ce730c00..46de5c5e0f3c6f40b4c6643fd3ca60a4e68bebd4 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
-import static java.util.Objects.requireNonNull;
-
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
@@ -60,11 +58,8 @@ public final class OutputStatementSupport
         .addAny(YangStmtMapping.USES)
         .build();
 
-    private final SubstatementValidator validator;
-
     private OutputStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.OUTPUT, config, YangConstants::operationOutputQName);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.OUTPUT, config, validator, YangConstants::operationOutputQName);
     }
 
     public static @NonNull OutputStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -75,11 +70,6 @@ public final class OutputStatementSupport
         return new OutputStatementSupport(config, RFC7950_VALIDATOR);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected OutputStatement createDeclared(final StmtContext<QName, OutputStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 57ef79941bb97336cefe9e915863245164472d83..66f10df1dc9a491add1fcf6982cbf2f82db094cb 100644 (file)
@@ -30,7 +30,7 @@ public final class PositionStatementSupport
         SubstatementValidator.builder(YangStmtMapping.POSITION).build();
 
     public PositionStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.POSITION, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.POSITION, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -42,11 +42,6 @@ public final class PositionStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected PositionStatement createDeclared(final Uint32 argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 47164b0e40e664e88d09e335e123c8b38b6d6a1d..974699f5a30b0fe9aa9a50a425691109301e6a98 100644 (file)
@@ -29,12 +29,7 @@ public final class PrefixStatementSupport
         SubstatementValidator.builder(YangStmtMapping.PREFIX).build();
 
     public PrefixStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.PREFIX, StatementPolicy.reject(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.PREFIX, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 562fbacf0c1492b23236eafaa1ccd2801cdccc18..49b46022cbc3b71d26c18aa5d1e7bb7bae53066f 100644 (file)
@@ -29,12 +29,7 @@ public final class PresenceStatementSupport
         SubstatementValidator.builder(YangStmtMapping.PRESENCE).build();
 
     public PresenceStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.PRESENCE, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.PRESENCE, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 22b61e23bbc42d0e67c2ae119ef6ac475c6c3a72..a839d34a547df9c9b5bc9eb7d10cf895d5f7f942 100644 (file)
@@ -46,7 +46,7 @@ public final class RangeStatementSupport
             .build();
 
     public RangeStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.RANGE, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.RANGE, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -98,11 +98,6 @@ public final class RangeStatementSupport
         return EffectiveStatements.createRange(stmt.declared(), substatements);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     private static @NonNull Number parseDecimalConstraintValue(final @NonNull StmtContext<?, ?, ?> ctx,
             final @NonNull String value) {
         if ("max".equals(value)) {
index d627a168a3bdb59d55778ea6c9cc2a78ca9d302b..bf46fbc0bb8de960c1e981e8bbdd07573b41282e 100644 (file)
@@ -27,12 +27,7 @@ public final class ReferenceStatementSupport
         SubstatementValidator.builder(YangStmtMapping.REFERENCE).build();
 
     public ReferenceStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.REFERENCE, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.REFERENCE, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 844d5b919588fa6857b4840bceb3d87a7656310f..2530bb4c5842c393283263c7559a5cd7c865de88 100644 (file)
@@ -29,12 +29,7 @@ public final class RequireInstanceStatementSupport
     public RequireInstanceStatementSupport(final YangParserConfiguration config) {
         super(YangStmtMapping.REQUIRE_INSTANCE,
             EffectiveStatements.createRequireInstance(false), EffectiveStatements.createRequireInstance(true),
-            StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+            StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 1c94f62f95da780aa81e6f6884f9dfb1cd99ecbb..809ce341b587f55e1b5140620d8ac54593b7cbf5 100644 (file)
@@ -32,7 +32,7 @@ public final class RevisionDateStatementSupport
         SubstatementValidator.builder(YangStmtMapping.REVISION_DATE).build();
 
     public RevisionDateStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.REVISION_DATE, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.REVISION_DATE, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -44,11 +44,6 @@ public final class RevisionDateStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected RevisionDateStatement createDeclared(final StmtContext<Revision, RevisionDateStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index c1a160556182146b35e5256bcc069c41dc468fa7..b5fc20ab071ceb66e9d67a716adf1648a24d3783 100644 (file)
@@ -35,7 +35,7 @@ public final class RevisionStatementSupport
             .build();
 
     public RevisionStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.REVISION, StatementPolicy.reject(), config);
+        super(YangStmtMapping.REVISION, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -47,11 +47,6 @@ public final class RevisionStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected RevisionStatement createDeclared(final StmtContext<Revision, RevisionStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index b80538507fc2a5172367ba6e2935bcf0254125af..7a848fe98fe7512d162641cbd8b824d7235ae8d6 100644 (file)
@@ -58,7 +58,7 @@ public final class RpcStatementSupport extends AbstractSchemaTreeStatementSuppor
 
     public RpcStatementSupport(final YangParserConfiguration config, final InputStatementSupport implicitInput,
             final OutputStatementSupport implicitOutput) {
-        super(YangStmtMapping.RPC, StatementPolicy.reject(), config);
+        super(YangStmtMapping.RPC, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
         this.implicitInput = requireNonNull(implicitInput);
         this.implicitOutput = requireNonNull(implicitOutput);
     }
@@ -76,11 +76,6 @@ public final class RpcStatementSupport extends AbstractSchemaTreeStatementSuppor
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected RpcStatement createDeclared(final StmtContext<QName, RpcStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index e63141eb3233e11c3c7dbf4e8bc03ada66a2af85..f9be0030bb94e0f85614febb8964f19c50950c10 100644 (file)
@@ -31,7 +31,7 @@ public final class StatusStatementSupport
         SubstatementValidator.builder(YangStmtMapping.STATUS).build();
 
     public StatusStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.STATUS, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.STATUS, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -62,11 +62,6 @@ public final class StatusStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected StatusStatement createDeclared(final StmtContext<Status, StatusStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 0af44893412ff5fe01f5bca90f67de9667cc3952..b064a5fc97e37973c128f00fc2138a2c7bf53e7d 100644 (file)
@@ -55,7 +55,7 @@ public final class TypedefStatementSupport extends
         .build();
 
     public TypedefStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.TYPEDEF, StatementPolicy.exactReplica(), config);
+        super(YangStmtMapping.TYPEDEF, StatementPolicy.exactReplica(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -97,11 +97,6 @@ public final class TypedefStatementSupport extends
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected TypedefStatement createDeclared(final StmtContext<QName, TypedefStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 47a002035a0b01ba34135703549a5077bd232d4d..ff85bb7c1d88c08a5ede003b926f7bbccd71d564 100644 (file)
@@ -50,7 +50,7 @@ public final class UniqueStatementSupport
     public UniqueStatementSupport(final YangParserConfiguration config) {
         // FIXME: This reflects what the current implementation does. We really want to define an adaptArgumentValue(),
         //        but how that plays with the argument and expectations needs to be investigated.
-        super(YangStmtMapping.UNIQUE, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.UNIQUE, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -62,11 +62,6 @@ public final class UniqueStatementSupport
         return uniqueConstraints;
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected UniqueStatement createDeclared(final StmtContext<Set<Descendant>, UniqueStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index da73d409345085bd1e450485db46147c5f190c00..1cfd62eff9fc9e1e6f65354c85e0a527e8d753a4 100644 (file)
@@ -29,12 +29,7 @@ public final class UnitsStatementSupport
         SubstatementValidator.builder(YangStmtMapping.UNITS).build();
 
     public UnitsStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.UNITS, StatementPolicy.contextIndependent(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(YangStmtMapping.UNITS, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index 7ce4819f8100604d85f7dcff50e0b0ff1ca6e9f1..a7f2e2a4a3acc8496115a2fefd9323948fe4319f 100644 (file)
@@ -30,7 +30,7 @@ public final class ValueStatementSupport
         SubstatementValidator.builder(YangStmtMapping.VALUE).build();
 
     public ValueStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.VALUE, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.VALUE, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -43,11 +43,6 @@ public final class ValueStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected ValueStatement createDeclared(final Integer argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 3e34e32ee479e9c8d5fe6cfb0a23ad2930236703..7f8cbd44980fcd69e105a0114f91dcc290e3dcc0 100644 (file)
@@ -29,17 +29,17 @@ import org.opendaylight.yangtools.yang.xpath.api.YangXPathExpression.QualifiedBo
 
 public final class WhenStatementSupport
         extends AbstractStatementSupport<QualifiedBound, WhenStatement, WhenEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-        YangStmtMapping.WHEN)
-        .addOptional(YangStmtMapping.DESCRIPTION)
-        .addOptional(YangStmtMapping.REFERENCE)
-        .build();
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.WHEN)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .build();
 
     private final @NonNull XPathSupport xpathSupport;
 
     public WhenStatementSupport(final XPathSupport xpathSupport, final YangParserConfiguration config) {
         // Note: if we end up binding expressions, this needs to become declaredCopy()
-        super(YangStmtMapping.WHEN, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.WHEN, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
         this.xpathSupport = requireNonNull(xpathSupport);
     }
 
@@ -48,11 +48,6 @@ public final class WhenStatementSupport
         return xpathSupport.parseXPath(ctx, value);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected WhenStatement createDeclared(final StmtContext<QualifiedBound, WhenStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index a3f18faaca0867607dd9d695e084417631ebe663..b3f6aa850524eaa5aff92d98c6e162f8332cecc7 100644 (file)
@@ -32,7 +32,7 @@ public final class YangVersionStatementSupport
         SubstatementValidator.builder(YangStmtMapping.YANG_VERSION).build();
 
     public YangVersionStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.YANG_VERSION, StatementPolicy.reject(), config);
+        super(YangStmtMapping.YANG_VERSION, StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -46,11 +46,6 @@ public final class YangVersionStatementSupport
         stmt.setRootVersion(stmt.argument());
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected YangVersionStatement createDeclared(final StmtContext<YangVersion, YangVersionStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index f2ef06a2bc699ee34f0f7605a16ca3026ef76fa1..ec75fc9c34ee5a54b8596297298657ae2caed8ab 100644 (file)
@@ -23,19 +23,14 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class YinElementStatementSupport
         extends AbstractBooleanStatementSupport<YinElementStatement, YinElementEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-        YangStmtMapping.YIN_ELEMENT).build();
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.YIN_ELEMENT).build();
 
     public YinElementStatementSupport(final YangParserConfiguration config) {
         super(YangStmtMapping.YIN_ELEMENT,
             EffectiveStatements.createYinElement(DeclaredStatements.createYinElement(false)),
             EffectiveStatements.createYinElement(DeclaredStatements.createYinElement(true)),
-            StatementPolicy.reject(), config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+            StatementPolicy.reject(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index b05def018614cf4f94aafc72b5264acffd1c0875..9026d06136669c8a40397fee8914dc1bff137c87 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.module;
 
 import static com.google.common.base.Verify.verify;
 import static com.google.common.base.Verify.verifyNotNull;
-import static java.util.Objects.requireNonNull;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
 
 import com.google.common.annotations.Beta;
@@ -132,12 +131,10 @@ public final class ModuleStatementSupport
         .addOptional(OpenConfigStatements.OPENCONFIG_VERSION)
         .build();
 
-    private final SubstatementValidator validator;
     private final boolean semanticVersioning;
 
     private ModuleStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.MODULE, StatementPolicy.reject(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.MODULE, StatementPolicy.reject(), config, validator);
         semanticVersioning = config.importResolutionMode() == ImportResolutionMode.OPENCONFIG_SEMVER;
     }
 
@@ -220,11 +217,6 @@ public final class ModuleStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected ImmutableList<? extends EffectiveStatement<?, ?>> buildEffectiveSubstatements(
             final Current<UnqualifiedQName, ModuleStatement> stmt,
index 1586fb78993d206687897faf23f4ccdd53091f49..e0d9c201fb4d8b19cea5e5d2566fc8da3491d5e6 100644 (file)
@@ -24,12 +24,13 @@ import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractSchemaTreeStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
 abstract class AbstractNotificationStatementSupport
         extends AbstractSchemaTreeStatementSupport<NotificationStatement, NotificationEffectiveStatement> {
-    AbstractNotificationStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.NOTIFICATION, uninstantiatedPolicy(), config);
+    AbstractNotificationStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
+        super(YangStmtMapping.NOTIFICATION, uninstantiatedPolicy(), config, validator);
     }
 
     @Override
index bb6b82d5b1820be77b0eb10886e2ae64ae9f30a7..ef30bbe3413fa39cddbb387435e8e5e595f508b3 100644 (file)
@@ -12,29 +12,24 @@ import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class NotificationStatementRFC6020Support extends AbstractNotificationStatementSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-        YangStmtMapping.NOTIFICATION)
-        .addAny(YangStmtMapping.ANYXML)
-        .addAny(YangStmtMapping.CHOICE)
-        .addAny(YangStmtMapping.CONTAINER)
-        .addOptional(YangStmtMapping.DESCRIPTION)
-        .addAny(YangStmtMapping.GROUPING)
-        .addAny(YangStmtMapping.IF_FEATURE)
-        .addAny(YangStmtMapping.LEAF)
-        .addAny(YangStmtMapping.LEAF_LIST)
-        .addAny(YangStmtMapping.LIST)
-        .addOptional(YangStmtMapping.REFERENCE)
-        .addOptional(YangStmtMapping.STATUS)
-        .addAny(YangStmtMapping.TYPEDEF)
-        .addAny(YangStmtMapping.USES)
-        .build();
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.NOTIFICATION)
+            .addAny(YangStmtMapping.ANYXML)
+            .addAny(YangStmtMapping.CHOICE)
+            .addAny(YangStmtMapping.CONTAINER)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addAny(YangStmtMapping.GROUPING)
+            .addAny(YangStmtMapping.IF_FEATURE)
+            .addAny(YangStmtMapping.LEAF)
+            .addAny(YangStmtMapping.LEAF_LIST)
+            .addAny(YangStmtMapping.LIST)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .addOptional(YangStmtMapping.STATUS)
+            .addAny(YangStmtMapping.TYPEDEF)
+            .addAny(YangStmtMapping.USES)
+            .build();
 
     public NotificationStatementRFC6020Support(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(config, SUBSTATEMENT_VALIDATOR);
     }
 }
\ No newline at end of file
index 561a456354d385940ff8ea3b5de3d8576b958d10..eb207be7147affcd8b52a9e4456cbf068176c238 100644 (file)
@@ -49,7 +49,7 @@ public final class NotificationStatementRFC7950Support extends AbstractNotificat
         ImmutableSet.of(YangStmtMapping.NOTIFICATION, YangStmtMapping.RPC, YangStmtMapping.ACTION);
 
     public NotificationStatementRFC7950Support(final YangParserConfiguration config) {
-        super(config);
+        super(config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -63,9 +63,4 @@ public final class NotificationStatementRFC7950Support extends AbstractNotificat
 
         super.onStatementAdded(stmt);
     }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
 }
index 92856f5a5f9598c5346268552290045f06445edb..12139e3c4d454f569c0f66eaa9045c53bc65714e 100644 (file)
@@ -35,7 +35,7 @@ public final class PathStatementSupport
 
     private PathStatementSupport(final YangParserConfiguration config, final PathExpressionParser parser) {
         // TODO: can 'path' really be copied?
-        super(YangStmtMapping.PATH, StatementPolicy.contextIndependent(), config);
+        super(YangStmtMapping.PATH, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
         this.parser = requireNonNull(parser);
     }
 
@@ -52,11 +52,6 @@ public final class PathStatementSupport
         return parser.parseExpression(ctx, value);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected PathStatement createDeclared(final StmtContext<PathExpression, PathStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 96213d839ed56326da57c2bbaf44dc475b4fdadd..7ee798f1d0e0a18d5aaacaa8ac57c29bb2278d2c 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.pattern;
 
-import static java.util.Objects.requireNonNull;
-
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import java.util.regex.Pattern;
@@ -50,11 +48,8 @@ public final class PatternStatementSupport
             .addOptional(YangStmtMapping.REFERENCE)
             .build();
 
-    private final SubstatementValidator validator;
-
     private PatternStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.PATTERN, StatementPolicy.contextIndependent(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.PATTERN, StatementPolicy.contextIndependent(), config, validator);
     }
 
     public static @NonNull PatternStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -76,11 +71,6 @@ public final class PatternStatementSupport
         return PatternExpression.of(value, pattern);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected PatternStatement createDeclared(final StmtContext<PatternExpression, PatternStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 83010dd00efc17a122f5738614a94173a63209c3..ce26204b21c1a1ef221633f6e2e0c38335a7d7ad 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.refine;
 
 import static com.google.common.base.Verify.verifyNotNull;
-import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
@@ -58,11 +57,8 @@ public final class RefineStatementSupport
         .addOptional(YangStmtMapping.MAX_ELEMENTS)
         .build();
 
-    private final SubstatementValidator validator;
-
     private RefineStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.REFINE, StatementPolicy.reject(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.REFINE, StatementPolicy.reject(), config, validator);
     }
 
     public static @NonNull RefineStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -78,11 +74,6 @@ public final class RefineStatementSupport
         return ArgumentUtils.parseDescendantSchemaNodeIdentifier(ctx, value);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected RefineStatement createDeclared(final StmtContext<Descendant, RefineStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index f3dc64b77ca874c4567828f1925f2741ad12e1aa..b3846638d972b25b90c6a5215b3b7d30ff8b534d 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.submodule;
 
-import static java.util.Objects.requireNonNull;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.findFirstDeclaredSubstatement;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
 
@@ -101,11 +100,8 @@ public final class SubmoduleStatementSupport
             .addOptional(YangStmtMapping.YANG_VERSION)
             .build();
 
-    private final SubstatementValidator validator;
-
     private SubmoduleStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
-        super(YangStmtMapping.SUBMODULE, StatementPolicy.reject(), config);
-        this.validator = requireNonNull(validator);
+        super(YangStmtMapping.SUBMODULE, StatementPolicy.reject(), config, validator);
     }
 
     public static @NonNull SubmoduleStatementSupport rfc6020Instance(final YangParserConfiguration config) {
@@ -156,11 +152,6 @@ public final class SubmoduleStatementSupport
         stmt.addToNs(BelongsToPrefixToModuleName.class, prefix, belongsToModuleName);
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return validator;
-    }
-
     @Override
     protected SubmoduleStatement createDeclared(final StmtContext<UnqualifiedQName, SubmoduleStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index fd42b002bc891ae5a95393808a3e83e757ef1c33..44cad1f9e0c65dc632f69c1325265b5bdbb48e18 100644 (file)
@@ -119,14 +119,14 @@ abstract class AbstractTypeStatementSupport extends AbstractTypeSupport<TypeStat
     private final ImmutableMap<String, StatementSupport<?, ?, ?>> dynamicBuiltInTypes;
 
     AbstractTypeStatementSupport(final YangParserConfiguration config) {
-        super(config);
+        super(config, SUBSTATEMENT_VALIDATOR);
         dynamicBuiltInTypes = ImmutableMap.<String, StatementSupport<?, ?, ?>>builder()
             .put(TypeDefinitions.BITS.getLocalName(), new BitsSpecificationSupport(config))
             .put(TypeDefinitions.DECIMAL64.getLocalName(), new Decimal64SpecificationSupport(config))
             .put(TypeDefinitions.ENUMERATION.getLocalName(), new EnumSpecificationSupport(config))
-            .put(TypeDefinitions.IDENTITYREF.getLocalName(), new IdentityRefSpecificationRFC6020Support(config))
+            .put(TypeDefinitions.IDENTITYREF.getLocalName(), IdentityRefSpecificationSupport.rfc6020Instance(config))
             .put(TypeDefinitions.INSTANCE_IDENTIFIER.getLocalName(), new InstanceIdentifierSpecificationSupport(config))
-            .put(TypeDefinitions.LEAFREF.getLocalName(), new LeafrefSpecificationRFC6020Support(config))
+            .put(TypeDefinitions.LEAFREF.getLocalName(), LeafrefSpecificationSupport.rfc6020Instance(config))
             .put(TypeDefinitions.UNION.getLocalName(), new UnionSpecificationSupport(config))
             .build();
     }
@@ -176,11 +176,6 @@ abstract class AbstractTypeStatementSupport extends AbstractTypeSupport<TypeStat
         return dynamicBuiltInTypes.get(argument);
     }
 
-    @Override
-    protected final SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected final TypeStatement createDeclared(final StmtContext<QName, TypeStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index 0aba7c55abeecb13bb544caf69e5d1ed81e85eb7..73a3471bf720ab4d0af0630e3bd60d29255400d7 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import java.util.List;
@@ -19,6 +21,7 @@ import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 /**
  * Abstract base of all type-related statement support classes.
@@ -47,8 +50,8 @@ abstract class AbstractTypeSupport<T extends TypeStatement>
         TypeDefinitions.UNION),
         QName::getLocalName);
 
-    AbstractTypeSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.TYPE, StatementPolicy.exactReplica(), config);
+    AbstractTypeSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
+        super(YangStmtMapping.TYPE, StatementPolicy.exactReplica(), config, requireNonNull(validator));
     }
 
     @Override
index cccae5df12d6dafdb53b8006abe5f76774aba869..96dec62e10dd903a14f3f3dd26b246812b1279bf 100644 (file)
@@ -32,12 +32,7 @@ final class BitsSpecificationSupport extends AbstractTypeSupport<BitsSpecificati
         SubstatementValidator.builder(YangStmtMapping.TYPE).addMultiple(YangStmtMapping.BIT).build();
 
     BitsSpecificationSupport(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index b66184744d8fe742c17cd59a0acb4f793babc9ce..125f0a56065e8fe5965474c74a9e4f7b3ab64a89 100644 (file)
@@ -33,12 +33,7 @@ final class Decimal64SpecificationSupport extends AbstractTypeSupport<Decimal64S
             .build();
 
     Decimal64SpecificationSupport(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index f0cc35357dfefe6574b998ca7b55c1a45b77e301..0528f2c1feed7670f04b9699c077e0d753d98e5d 100644 (file)
@@ -29,15 +29,10 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
 final class EnumSpecificationSupport extends AbstractTypeSupport<EnumSpecification> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
-            SubstatementValidator.builder(YangStmtMapping.TYPE).addMultiple(YangStmtMapping.ENUM).build();
+        SubstatementValidator.builder(YangStmtMapping.TYPE).addMultiple(YangStmtMapping.ENUM).build();
 
     EnumSpecificationSupport(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/IdentityRefSpecificationRFC6020Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/IdentityRefSpecificationRFC6020Support.java
deleted file mode 100644 (file)
index d793fa1..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type;
-
-import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-
-final class IdentityRefSpecificationRFC6020Support extends AbstractIdentityRefSpecificationSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
-        SubstatementValidator.builder(YangStmtMapping.TYPE).addMandatory(YangStmtMapping.BASE).build();
-
-    IdentityRefSpecificationRFC6020Support(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-}
\ No newline at end of file
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/IdentityRefSpecificationRFC7950Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/IdentityRefSpecificationRFC7950Support.java
deleted file mode 100644 (file)
index 671d6f4..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2017 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type;
-
-import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-
-/**
- * Class providing necessary support for processing YANG 1.1 identityref statement.
- */
-final class IdentityRefSpecificationRFC7950Support extends AbstractIdentityRefSpecificationSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
-        SubstatementValidator.builder(YangStmtMapping.TYPE).addMultiple(YangStmtMapping.BASE).build();
-
-    IdentityRefSpecificationRFC7950Support(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-}
@@ -12,8 +12,10 @@ import static com.google.common.base.Verify.verifyNotNull;
 
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -31,16 +33,30 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
-abstract class AbstractIdentityRefSpecificationSupport
-        extends AbstractTypeSupport<IdentityRefSpecification> {
-    AbstractIdentityRefSpecificationSupport(final YangParserConfiguration config) {
-        super(config);
+final class IdentityRefSpecificationSupport extends AbstractTypeSupport<IdentityRefSpecification> {
+    private static final SubstatementValidator RFC6020_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.TYPE).addMandatory(YangStmtMapping.BASE).build();
+    private static final SubstatementValidator RFC7950_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.TYPE).addMultiple(YangStmtMapping.BASE).build();
+
+    private IdentityRefSpecificationSupport(final YangParserConfiguration config,
+            final SubstatementValidator validator) {
+        super(config, validator);
+    }
+
+    static @NonNull IdentityRefSpecificationSupport rfc6020Instance(final YangParserConfiguration config) {
+        return new IdentityRefSpecificationSupport(config, RFC6020_VALIDATOR);
+    }
+
+    static @NonNull IdentityRefSpecificationSupport rfc7950Instance(final YangParserConfiguration config) {
+        return new IdentityRefSpecificationSupport(config, RFC7950_VALIDATOR);
     }
 
     @Override
-    public final void onFullDefinitionDeclared(final Mutable<QName, IdentityRefSpecification,
+    public void onFullDefinitionDeclared(final Mutable<QName, IdentityRefSpecification,
             EffectiveStatement<QName, IdentityRefSpecification>> stmt) {
         super.onFullDefinitionDeclared(stmt);
 
@@ -56,7 +72,7 @@ abstract class AbstractIdentityRefSpecificationSupport
     }
 
     @Override
-    protected final IdentityRefSpecification createDeclared(final StmtContext<QName, IdentityRefSpecification, ?> ctx,
+    protected IdentityRefSpecification createDeclared(final StmtContext<QName, IdentityRefSpecification, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         if (substatements.isEmpty()) {
             throw noBase(ctx);
@@ -71,7 +87,7 @@ abstract class AbstractIdentityRefSpecificationSupport
     }
 
     @Override
-    protected final EffectiveStatement<QName, IdentityRefSpecification> createEffective(
+    protected EffectiveStatement<QName, IdentityRefSpecification> createEffective(
             final Current<QName, IdentityRefSpecification> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         if (substatements.isEmpty()) {
index bc525268eb71869d7043cbfe8b6d09ceb5010cb2..1e9956b3352a6d748874ebf4e7a1d9290ff4ac8f 100644 (file)
@@ -29,12 +29,7 @@ final class InstanceIdentifierSpecificationSupport
         SubstatementValidator.builder(YangStmtMapping.TYPE).addOptional(YangStmtMapping.REQUIRE_INSTANCE).build();
 
     InstanceIdentifierSpecificationSupport(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/LeafrefSpecificationRFC6020Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/LeafrefSpecificationRFC6020Support.java
deleted file mode 100644 (file)
index 001c28c..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type;
-
-import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-
-final class LeafrefSpecificationRFC6020Support extends AbstractLeafrefSpecificationSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
-        SubstatementValidator.builder(YangStmtMapping.TYPE).addMandatory(YangStmtMapping.PATH).build();
-
-    LeafrefSpecificationRFC6020Support(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-}
\ No newline at end of file
diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/LeafrefSpecificationRFC7950Support.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/LeafrefSpecificationRFC7950Support.java
deleted file mode 100644 (file)
index d0a331f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2017 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type;
-
-import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-
-/**
- * Class providing necessary support for processing YANG 1.1 leafref statement.
- */
-final class LeafrefSpecificationRFC7950Support extends AbstractLeafrefSpecificationSupport {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
-        SubstatementValidator.builder(YangStmtMapping.TYPE)
-            .addMandatory(YangStmtMapping.PATH)
-            .addOptional(YangStmtMapping.REQUIRE_INSTANCE)
-            .build();
-
-    LeafrefSpecificationRFC7950Support(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
-}
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type;
 
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -21,15 +22,32 @@ import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.spi.meta.CommonStmtCtx;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
-abstract class AbstractLeafrefSpecificationSupport extends AbstractTypeSupport<LeafrefSpecification> {
-    AbstractLeafrefSpecificationSupport(final YangParserConfiguration config) {
-        super(config);
+final class LeafrefSpecificationSupport extends AbstractTypeSupport<LeafrefSpecification> {
+    private static final SubstatementValidator RFC6020_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.TYPE).addMandatory(YangStmtMapping.PATH).build();
+    private static final SubstatementValidator RFC7950_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.TYPE)
+            .addMandatory(YangStmtMapping.PATH)
+            .addOptional(YangStmtMapping.REQUIRE_INSTANCE)
+            .build();
+
+    private LeafrefSpecificationSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
+        super(config, validator);
+    }
+
+    static LeafrefSpecificationSupport rfc6020Instance(final YangParserConfiguration config) {
+        return new LeafrefSpecificationSupport(config, RFC6020_VALIDATOR);
+    }
+
+    static LeafrefSpecificationSupport rfc7950Instance(final YangParserConfiguration config) {
+        return new LeafrefSpecificationSupport(config, RFC7950_VALIDATOR);
     }
 
     @Override
-    protected final LeafrefSpecification createDeclared(final StmtContext<QName, LeafrefSpecification, ?> ctx,
+    protected LeafrefSpecification createDeclared(final StmtContext<QName, LeafrefSpecification, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         if (substatements.isEmpty()) {
             throw noPath(ctx);
@@ -38,7 +56,7 @@ abstract class AbstractLeafrefSpecificationSupport extends AbstractTypeSupport<L
     }
 
     @Override
-    protected final LeafrefSpecification attachDeclarationReference(final LeafrefSpecification stmt,
+    protected LeafrefSpecification attachDeclarationReference(final LeafrefSpecification stmt,
             final DeclarationReference reference) {
         return new RefLeafrefSpecification(stmt, reference);
     }
index cae1df7aa87649de2ad29f382308a65e5112cde2..5afd2143cb23720434825a0c707d801eddb39062 100644 (file)
@@ -34,8 +34,8 @@ public final class TypeStatementRFC7950Support extends AbstractTypeStatementSupp
     public TypeStatementRFC7950Support(final YangParserConfiguration config) {
         super(config);
         argumentSpecificSupports = ImmutableMap.of(
-            TypeDefinitions.LEAFREF.getLocalName(), new LeafrefSpecificationRFC7950Support(config),
-            TypeDefinitions.IDENTITYREF.getLocalName(), new IdentityRefSpecificationRFC7950Support(config));
+            TypeDefinitions.LEAFREF.getLocalName(), LeafrefSpecificationSupport.rfc7950Instance(config),
+            TypeDefinitions.IDENTITYREF.getLocalName(), IdentityRefSpecificationSupport.rfc7950Instance(config));
     }
 
     @Override
index 3535b31aa4e50e567db638ad3181acc5f2d85627..5a792205c0cae1deabbec704c4d04e495bb11c54 100644 (file)
@@ -30,12 +30,7 @@ final class UnionSpecificationSupport extends AbstractTypeSupport<UnionSpecifica
         SubstatementValidator.builder(YangStmtMapping.TYPE).addMultiple(YangStmtMapping.TYPE).build();
 
     UnionSpecificationSupport(final YangParserConfiguration config) {
-        super(config);
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+        super(config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
index e461777ce45f25f38d1faee655faa32bfaa0ac4a..1718bc3218400b7439b401d42953e09ae200838f 100644 (file)
@@ -70,19 +70,19 @@ import org.slf4j.LoggerFactory;
 public final class UsesStatementSupport
         extends AbstractQNameStatementSupport<UsesStatement, UsesEffectiveStatement> {
     private static final Logger LOG = LoggerFactory.getLogger(UsesStatementSupport.class);
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-        .USES)
-        .addAny(YangStmtMapping.AUGMENT)
-        .addOptional(YangStmtMapping.DESCRIPTION)
-        .addAny(YangStmtMapping.IF_FEATURE)
-        .addAny(YangStmtMapping.REFINE)
-        .addOptional(YangStmtMapping.REFERENCE)
-        .addOptional(YangStmtMapping.STATUS)
-        .addOptional(YangStmtMapping.WHEN)
-        .build();
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.USES)
+            .addAny(YangStmtMapping.AUGMENT)
+            .addOptional(YangStmtMapping.DESCRIPTION)
+            .addAny(YangStmtMapping.IF_FEATURE)
+            .addAny(YangStmtMapping.REFINE)
+            .addOptional(YangStmtMapping.REFERENCE)
+            .addOptional(YangStmtMapping.STATUS)
+            .addOptional(YangStmtMapping.WHEN)
+            .build();
 
     public UsesStatementSupport(final YangParserConfiguration config) {
-        super(YangStmtMapping.USES, StatementPolicy.exactReplica(), config);
+        super(YangStmtMapping.USES, StatementPolicy.exactReplica(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -129,11 +129,6 @@ public final class UsesStatementSupport
         });
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected UsesStatement createDeclared(final StmtContext<QName, UsesStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
index af570f977f3308f395be2d5885dd1517330f0427..180b528e5be92ce9eac8ae4102960d00b226ce54 100644 (file)
@@ -17,12 +17,11 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSu
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class ThirdPartyExtensionSupport
         extends AbstractStringStatementSupport<ThirdPartyExtensionStatement, ThirdPartyExtensionEffectiveStatement> {
     public ThirdPartyExtensionSupport(final YangParserConfiguration config) {
-        super(ThirdPartyExtensionsMapping.THIRD_PARTY_EXTENSION, StatementPolicy.contextIndependent(), config);
+        super(ThirdPartyExtensionsMapping.THIRD_PARTY_EXTENSION, StatementPolicy.contextIndependent(), config, null);
     }
 
     @Override
@@ -32,11 +31,6 @@ public final class ThirdPartyExtensionSupport
         stmt.addToNs(ThirdPartyNamespace.class, Empty.getInstance(), "Third-party namespace test.");
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return null;
-    }
-
     @Override
     protected ThirdPartyExtensionStatement createDeclared(
             final StmtContext<String, ThirdPartyExtensionStatement, ?> ctx,
index 11405047bc7c8f34da066abb93149e7ed5e02a8c..7e8fd16dfcd4cac3ccbab8becde1bd5d3f355b0c 100644 (file)
@@ -12,6 +12,7 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
@@ -36,8 +37,8 @@ public abstract class AbstractBooleanStatementSupport<D extends DeclaredStatemen
 
     protected AbstractBooleanStatementSupport(final StatementDefinition publicDefinition,
             final E emptyEffectiveFalse, final E emptyEffectiveTrue, final StatementPolicy<Boolean, D> policy,
-            final YangParserConfiguration config) {
-        super(publicDefinition, policy, config);
+            final YangParserConfiguration config, final @Nullable SubstatementValidator validator) {
+        super(publicDefinition, policy, config, validator);
         this.emptyEffectiveFalse = requireNonNull(emptyEffectiveFalse);
         this.emptyEffectiveTrue = requireNonNull(emptyEffectiveTrue);
         emptyDeclaredFalse = requireNonNull(emptyEffectiveFalse.getDeclared());
index fe399206df073abf4cf18bb9407007f729d6d9bb..3b48c1e880b2d09695e17706d4d1b48b3dd7777d 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.yang.parser.spi.meta;
 
 import com.google.common.annotations.Beta;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.Empty;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -18,8 +19,9 @@ import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 public abstract class AbstractEmptyStatementSupport<D extends DeclaredStatement<Empty>,
         E extends EffectiveStatement<Empty, D>> extends AbstractStatementSupport<Empty, D, E> {
     protected AbstractEmptyStatementSupport(final StatementDefinition publicDefinition,
-            final StatementPolicy<Empty, D> policy, final YangParserConfiguration config) {
-        super(publicDefinition, policy, config);
+            final StatementPolicy<Empty, D> policy, final YangParserConfiguration config,
+            final @Nullable SubstatementValidator validator) {
+        super(publicDefinition, policy, config, validator);
     }
 
     @Override
index 572810af9b83e61221a68525a4409d9c41d9b209..5befc19bbdea89ce9d8ebc93187847167c5afd28 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
@@ -47,8 +48,9 @@ public abstract class AbstractInternedStatementSupport<A, D extends DeclaredStat
             });
 
     protected AbstractInternedStatementSupport(final StatementDefinition publicDefinition,
-            final StatementPolicy<A, D> policy, final YangParserConfiguration config) {
-        super(publicDefinition, policy, config);
+            final StatementPolicy<A, D> policy, final YangParserConfiguration config,
+            final @Nullable SubstatementValidator validator) {
+        super(publicDefinition, policy, config, validator);
     }
 
     @Override
index 819b401837352a8d49ed37dc5a5f80d9963f0377..8eecb3cadb6026dd6bc36773fb71aa2d971b0a96 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.yang.parser.spi.meta;
 
 import com.google.common.annotations.Beta;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
@@ -23,8 +24,9 @@ import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 public abstract class AbstractInternedStringStatementSupport<D extends DeclaredStatement<String>,
         E extends EffectiveStatement<String, D>> extends AbstractInternedStatementSupport<String, D, E> {
     protected AbstractInternedStringStatementSupport(final StatementDefinition publicDefinition,
-            final StatementPolicy<String, D> policy, final YangParserConfiguration config) {
-        super(publicDefinition, policy, config);
+            final StatementPolicy<String, D> policy, final YangParserConfiguration config,
+            final @Nullable SubstatementValidator validator) {
+        super(publicDefinition, policy, config, validator);
     }
 
     @Override
index b979fb46f6242b47e6871bff2a89e8a75384634d..a3ae4445a0de8b1f5c48b7a814e1fe2b7bbd44dc 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.yang.parser.spi.meta;
 
 import com.google.common.annotations.Beta;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -25,8 +26,9 @@ import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 public abstract class AbstractQNameStatementSupport<D extends DeclaredStatement<QName>,
         E extends EffectiveStatement<QName, D>> extends AbstractStatementSupport<QName, D, E> {
     protected AbstractQNameStatementSupport(final StatementDefinition publicDefinition,
-            final StatementPolicy<QName, D> policy, final YangParserConfiguration config) {
-        super(publicDefinition, policy, config);
+            final StatementPolicy<QName, D> policy, final YangParserConfiguration config,
+            final @Nullable SubstatementValidator validator) {
+        super(publicDefinition, policy, config, validator);
     }
 
     @Override
index ce2bb38e759413c9a1b39f88f875cb3b2fcc146d..2369ed24f919ba0c0752a71c46006532d5f6e42c 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.parser.spi.meta;
 import com.google.common.annotations.Beta;
 import java.util.Collection;
 import java.util.Objects;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.CopyableNode;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
@@ -64,8 +65,9 @@ public abstract class AbstractSchemaTreeStatementSupport<D extends DeclaredState
         StatementPolicy.copyDeclared(new SchemaTreeEquality<>());
 
     protected AbstractSchemaTreeStatementSupport(final StatementDefinition publicDefinition,
-            final StatementPolicy<QName, D> policy, final YangParserConfiguration config) {
-        super(publicDefinition, policy, config);
+            final StatementPolicy<QName, D> policy, final YangParserConfiguration config,
+            final @Nullable SubstatementValidator validator) {
+        super(publicDefinition, policy, config, validator);
     }
 
     /**
index 212acc5c1b69ab00d8b0e26675c86e495b445b05..86f9134a0f6dfd69f6549c6103e2d182fb369136 100644 (file)
@@ -36,12 +36,19 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 @Beta
 public abstract class AbstractStatementSupport<A, D extends DeclaredStatement<A>,
         E extends EffectiveStatement<A, D>> extends StatementSupport<A, D, E> {
+    private final SubstatementValidator substatementValidator;
     private final boolean retainDeclarationReference;
 
     protected AbstractStatementSupport(final StatementDefinition publicDefinition, final StatementPolicy<A, D> policy,
-            final YangParserConfiguration config) {
+            final YangParserConfiguration config, final @Nullable SubstatementValidator validator) {
         super(publicDefinition, policy);
         this.retainDeclarationReference = config.retainDeclarationReferences();
+        this.substatementValidator = validator;
+    }
+
+    @Override
+    protected final SubstatementValidator substatementValidator() {
+        return substatementValidator;
     }
 
     @Override
index 063ea45bb7cb139188e9efc2b5b64731bd1360de..fc9ad5f0b8468a8dd6c339030dbb23a2d0c23325 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.yang.parser.spi.meta;
 
 import com.google.common.annotations.Beta;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
@@ -24,8 +25,9 @@ import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 public abstract class AbstractStringStatementSupport<D extends DeclaredStatement<String>,
         E extends EffectiveStatement<String, D>> extends AbstractStatementSupport<String, D, E> {
     protected AbstractStringStatementSupport(final StatementDefinition publicDefinition,
-            final StatementPolicy<String, D> policy, final YangParserConfiguration config) {
-        super(publicDefinition, policy, config);
+            final StatementPolicy<String, D> policy, final YangParserConfiguration config,
+            final @Nullable SubstatementValidator validator) {
+        super(publicDefinition, policy, config, validator);
     }
 
     @Override
index 61f30ed0c8813320280e3d9831cd1c73a84d79a8..cdcfa44dfc1e28767e1cfd571a64c04da2998766 100644 (file)
@@ -92,8 +92,8 @@ public abstract class ForwardingStatementSupport<A, D extends DeclaredStatement<
     }
 
     @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return delegate.getSubstatementValidator();
+    protected SubstatementValidator substatementValidator() {
+        return delegate.substatementValidator();
     }
 
     @Override
index 6ea8fe59a273471778859c7ca9be9a69cc017159..0db910ffaf15505e09b0fbd35900aad05b493ca3 100644 (file)
@@ -325,7 +325,7 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
      *
      * <p>
      * Implementation may use method to perform actions on this event or register modification action using
-     * {@link StmtContext.Mutable#newInferenceAction(ModelProcessingPhase)}.
+     * {@link Mutable#newInferenceAction(ModelProcessingPhase)}.
      *
      * @param stmt Context of added statement.
      * @throws SourceException when an inconsistency is detected.
@@ -340,7 +340,7 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
      *
      * <p>
      * Implementation may use method to perform actions on this event or register modification action using
-     * {@link StmtContext.Mutable#newInferenceAction(ModelProcessingPhase)}.
+     * {@link Mutable#newInferenceAction(ModelProcessingPhase)}.
      *
      * @param stmt Context of added statement. Argument and statement parent is accessible.
      * @throws SourceException when an inconsistency is detected.
@@ -355,13 +355,13 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
      *
      * <p>
      * Implementation may use method to perform actions on this event or register modification action using
-     * {@link StmtContext.Mutable#newInferenceAction(ModelProcessingPhase)}.
+     * {@link Mutable#newInferenceAction(ModelProcessingPhase)}.
      *
      * @param stmt Context of added statement. Argument and statement parent is accessible.
      * @throws SourceException when an inconsistency is detected.
      */
-    public void onFullDefinitionDeclared(final StmtContext.Mutable<A, D, E> stmt) {
-        final SubstatementValidator validator = getSubstatementValidator();
+    public void onFullDefinitionDeclared(final Mutable<A, D, E> stmt) {
+        final SubstatementValidator validator = substatementValidator();
         if (validator != null) {
             validator.validate(stmt);
         }
@@ -372,8 +372,7 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
      *
      * @return substatement validator or null, if substatement validator is not defined
      */
-    // FIXME: rename to 'substatementValidator' and perhaps let it be passed in?
-    protected abstract @Nullable SubstatementValidator getSubstatementValidator();
+    protected abstract @Nullable SubstatementValidator substatementValidator();
 
     /**
      * Returns true if this support has argument specific supports.