Bug 6897: Adding getSubstatementValidator() method to AbstractStatementSupport 62/49462/4
authorPeter Kajsa <pkajsa@cisco.com>
Fri, 16 Dec 2016 09:14:35 +0000 (10:14 +0100)
committerRobert Varga <nite@hq.sk>
Sat, 17 Dec 2016 12:41:05 +0000 (12:41 +0000)
Change-Id: Ice3d198b83d3c1f533a918af4f9747331ff21c63
Signed-off-by: Peter Kajsa <pkajsa@cisco.com>
77 files changed:
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractStatementSupport.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AnyxmlSchemaLocationStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AnyxmlStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ArgumentStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AugmentStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/BaseStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/BelongsToStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/BitStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/BitsSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/CaseStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ChoiceStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ConfigStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ContactStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Decimal64SpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DefaultStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DescriptionStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviateStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviationStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/EnumSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/EnumStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ErrorAppTagStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ErrorMessageStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ExtensionStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/FeatureStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/FractionDigitsStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/GroupingStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/IdentityRefSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/IdentityStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/IfFeatureStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/InputStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/InstanceIdentifierSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/KeyStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafListStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafrefSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LengthStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ListStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/MandatoryStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/MaxElementsStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/MinElementsStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ModelDefinedStatementSupport.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/MustStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/NamespaceStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/NotificationStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/NumericalRestrictionsImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/OrderedByStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/OrganizationStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/OutputStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PathStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PatternStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PositionStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PrefixStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/PresenceStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RangeStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ReferenceStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RefineStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RequireInstanceStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionDateStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RevisionStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RpcStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SemanticVersionStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StatusStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StringRestrictionsImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/SubmoduleStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/TypeStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/TypedefStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UnionSpecificationImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UniqueStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UnitsStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UnknownStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/UsesStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ValueStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/WhenStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangVersionStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YinElementStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/AnydataStatementImpl.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/thirdparty/plugin/ThirdPartyExtensionStatementImpl.java

index 3fb3758f32fd40d56bce45c4f03bbafc6d3a9119..0330dbb57e7bcb57da2339856206f945c9b25c6d 100644 (file)
@@ -9,10 +9,12 @@ package org.opendaylight.yangtools.yang.parser.spi.meta;
 
 import com.google.common.base.Preconditions;
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 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;
+import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
 /**
@@ -34,7 +36,7 @@ public abstract class AbstractStatementSupport<A, D extends DeclaredStatement<A>
 
     private final StatementDefinition type;
 
-    protected AbstractStatementSupport(StatementDefinition publicDefinition) {
+    protected AbstractStatementSupport(final StatementDefinition publicDefinition) {
         Preconditions.checkArgument(publicDefinition != this);
         this.type = Preconditions.checkNotNull(publicDefinition);
     }
@@ -71,7 +73,7 @@ public abstract class AbstractStatementSupport<A, D extends DeclaredStatement<A>
     public abstract A parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) throws SourceException;
 
     @Override
-    public void onStatementAdded(StmtContext.Mutable<A, D, E> stmt) {
+    public void onStatementAdded(final StmtContext.Mutable<A, D, E> stmt) {
         // NOOP for most implementations
     }
 
@@ -85,7 +87,7 @@ public abstract class AbstractStatementSupport<A, D extends DeclaredStatement<A>
      *
      */
     @Override
-    public void onPreLinkageDeclared(StmtContext.Mutable<A, D, E> stmt) {
+    public void onPreLinkageDeclared(final StmtContext.Mutable<A, D, E> stmt) {
         // NOOP for most implementations
     }
 
@@ -99,7 +101,7 @@ public abstract class AbstractStatementSupport<A, D extends DeclaredStatement<A>
      *
      */
     @Override
-    public void onLinkageDeclared(StmtContext.Mutable<A, D, E> stmt) throws SourceException {
+    public void onLinkageDeclared(final StmtContext.Mutable<A, D, E> stmt) throws SourceException {
         // NOOP for most implementations
     }
 
@@ -113,7 +115,7 @@ public abstract class AbstractStatementSupport<A, D extends DeclaredStatement<A>
      *
      */
     @Override
-    public void onStatementDefinitionDeclared(StmtContext.Mutable<A, D, E> stmt) throws SourceException {
+    public void onStatementDefinitionDeclared(final StmtContext.Mutable<A, D, E> stmt) throws SourceException {
         // NOOP for most implementations
     }
 
@@ -127,7 +129,7 @@ public abstract class AbstractStatementSupport<A, D extends DeclaredStatement<A>
      *
      */
     @Override
-    public void onFullDefinitionDeclared(StmtContext.Mutable<A, D, E> stmt) throws SourceException {
+    public void onFullDefinitionDeclared(final StmtContext.Mutable<A, D, E> stmt) throws SourceException {
         // NOOP for most implementations
     }
 
@@ -135,4 +137,13 @@ public abstract class AbstractStatementSupport<A, D extends DeclaredStatement<A>
     public boolean isArgumentYinElement() {
         return getPublicView().isArgumentYinElement();
     }
+
+    /**
+     * Returns corresponding substatement validator of a statement support
+     *
+     * @return substatement validator or null, if substatement validator is not
+     *         defined
+     */
+    @Nullable
+    protected abstract SubstatementValidator getSubstatementValidator();
 }
index 315b2f6b858e30f506b9faa0817cc6f00e820d76..1337e288e0bf6694ab2c1aa0763153619a9b92ba 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.annotations.Beta;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -21,9 +22,11 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.AnyxmlSchem
 @Beta
 public final class AnyxmlSchemaLocationStatementImpl extends AbstractDeclaredStatement<SchemaNodeIdentifier> implements
         UnknownStatement<SchemaNodeIdentifier> {
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
+            SupportedExtensionsMapping.ANYXML_SCHEMA_LOCATION).build();
 
     AnyxmlSchemaLocationStatementImpl(
-            StmtContext<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>, ?> context) {
+            final StmtContext<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>, ?> context) {
         super(context);
     }
 
@@ -36,20 +39,21 @@ public final class AnyxmlSchemaLocationStatementImpl extends AbstractDeclaredSta
         }
 
         @Override
-        public SchemaNodeIdentifier parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public SchemaNodeIdentifier parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return Utils.nodeIdentifierFromPath(ctx, value);
         }
 
         @Override
         public void onFullDefinitionDeclared(
-                Mutable<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>, EffectiveStatement<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>>> stmt) {
+                final Mutable<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>, EffectiveStatement<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>>> stmt) {
+            getSubstatementValidator().validate(stmt);
             stmt.getParentContext().addToNs(AnyxmlSchemaLocationNamespace.class,
                     SupportedExtensionsMapping.ANYXML_SCHEMA_LOCATION, stmt);
         }
 
         @Override
         public UnknownStatement<SchemaNodeIdentifier> createDeclared(
-                StmtContext<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>, ?> ctx) {
+                final StmtContext<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>, ?> ctx) {
             return new AnyxmlSchemaLocationStatementImpl(ctx);
         }
 
@@ -58,6 +62,11 @@ public final class AnyxmlSchemaLocationStatementImpl extends AbstractDeclaredSta
                 final StmtContext<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>, EffectiveStatement<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>>> ctx) {
             return new AnyxmlSchemaLocationEffectiveStatementImpl(ctx);
         }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
+        }
     }
 
     @Override
index ac23d8afff74590df578db9b972ac3f1f33fb0fe..8a411b1ce954e68c9519fdda113d71c77d19bbcf 100644 (file)
@@ -80,12 +80,12 @@ public class AnyxmlStatementImpl extends AbstractDeclaredStatement<QName> implem
         @Override
         public EffectiveStatement<QName, AnyxmlStatement> createEffective(
                 final StmtContext<QName, AnyxmlStatement, EffectiveStatement<QName, AnyxmlStatement>> ctx) {
-            Map<StatementDefinition, Mutable<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>, EffectiveStatement<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>>>> schemaLocations = ctx
+            final Map<StatementDefinition, Mutable<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>, EffectiveStatement<SchemaNodeIdentifier, UnknownStatement<SchemaNodeIdentifier>>>> schemaLocations = ctx
                     .getAllFromCurrentStmtCtxNamespace(AnyxmlSchemaLocationNamespace.class);
             if (schemaLocations != null && !schemaLocations.isEmpty()) {
-                SchemaNodeIdentifier anyXmlSchemaNodeIdentifier = schemaLocations.values().iterator().next()
+                final SchemaNodeIdentifier anyXmlSchemaNodeIdentifier = schemaLocations.values().iterator().next()
                         .getStatementArgument();
-                Optional<ContainerSchemaNode> anyXmlSchema = getAnyXmlSchema(ctx, anyXmlSchemaNodeIdentifier);
+                final Optional<ContainerSchemaNode> anyXmlSchema = getAnyXmlSchema(ctx, anyXmlSchemaNodeIdentifier);
                 if (anyXmlSchema.isPresent()) {
                     return new YangModeledAnyXmlEffectiveStatementImpl(ctx, anyXmlSchema.get());
                 }
@@ -97,7 +97,7 @@ public class AnyxmlStatementImpl extends AbstractDeclaredStatement<QName> implem
         public void onFullDefinitionDeclared(final Mutable<QName, AnyxmlStatement,
                 EffectiveStatement<QName, AnyxmlStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
         }
 
         private Optional<ContainerSchemaNode> getAnyXmlSchema(
@@ -112,6 +112,11 @@ public class AnyxmlStatementImpl extends AbstractDeclaredStatement<QName> implem
             }
             return Optional.absent();
         }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
+        }
     }
 
     @Nonnull
index 83ab7ddc561c9a626f06d98a7e81acb01038be26..12834004cd32a01f8a5ae9e9b21272860750e16a 100644 (file)
@@ -60,7 +60,12 @@ public class ArgumentStatementImpl extends AbstractDeclaredStatement<QName>
         public void onFullDefinitionDeclared(final StmtContext.Mutable<QName, ArgumentStatement,
                 EffectiveStatement<QName, ArgumentStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 7651bc0615ea3eb59e6e16128d84b808c81377d8..c3becf0ca6df17620038bc7d99631855b29a79e4 100644 (file)
@@ -109,7 +109,7 @@ public class AugmentStatementImpl extends AbstractDeclaredStatement<SchemaNodeId
                 return;
             }
 
-            SUBSTATEMENT_VALIDATOR.validate(augmentNode);
+            getSubstatementValidator().validate(augmentNode);
 
             if (StmtContextUtils.isInExtensionBody(augmentNode)) {
                 return;
@@ -355,6 +355,11 @@ public class AugmentStatementImpl extends AbstractDeclaredStatement<SchemaNodeId
                     || allowedAugmentTargets.contains(substatementCtx.getPublicDefinition());
         }
 
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
+        }
+
     }
 
     @Nonnull
index e5f67a6e31ff7f7c05ca8210cdd3cba94e19a2f0..1d35d829614fbf66e917cc85cd58c7a16cc888b3 100644 (file)
@@ -102,7 +102,12 @@ public class BaseStatementImpl extends AbstractDeclaredStatement<QName> implemen
         public void onFullDefinitionDeclared(
                 final Mutable<QName, BaseStatement, EffectiveStatement<QName, BaseStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 0aa835b46c1f779bc1253ad2245d69b9fc7f616c..7207157bdb4d2b29209df105814141265f741cf3 100644 (file)
@@ -107,7 +107,12 @@ public class BelongsToStatementImpl extends AbstractDeclaredStatement<String>
         public void onFullDefinitionDeclared(final StmtContext.Mutable<String, BelongsToStatement,
                 EffectiveStatement<String, BelongsToStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index f5c713e2898b028c8e0bfeb26807556378f19f9c..c062ff10b2789fba5a8bcdd72cea073c648b86e7 100644 (file)
@@ -62,7 +62,12 @@ public class BitStatementImpl extends AbstractDeclaredStatement<QName> implement
         public void onFullDefinitionDeclared(final StmtContext.Mutable<QName, BitStatement,
                 EffectiveStatement<QName, BitStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 459697493da3055e8b9b98b4c67839fc6d35b93a..dd200733ec49f4c275df8ec8975cbe3ce2360d5c 100644 (file)
@@ -58,7 +58,12 @@ public class BitsSpecificationImpl extends AbstractDeclaredStatement<String> imp
         public void onFullDefinitionDeclared(final StmtContext.Mutable<String, BitsSpecification,
                 EffectiveStatement<String, BitsSpecification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 1b04a976bc9dbe55731878ce7d784755683c5de2..dd61581c6d0c6a6aac2b563ac031c8ac2c66e0e1 100644 (file)
@@ -78,7 +78,12 @@ public class CaseStatementImpl extends AbstractDeclaredStatement<QName> implemen
         public void onFullDefinitionDeclared(final Mutable<QName, CaseStatement,
                 EffectiveStatement<QName, CaseStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 56cf3bf2c6638a9ca3a9c135517134c1d3233a02..164231321cdbb120afb762fff4561542664b7432 100644 (file)
@@ -88,7 +88,12 @@ public class ChoiceStatementImpl extends AbstractDeclaredStatement<QName>
         public void onFullDefinitionDeclared(final Mutable<QName, ChoiceStatement,
                 EffectiveStatement<QName, ChoiceStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index d81a5401aac75289c4ee504a74ce71d7b3a04209..d4e0e611945deb0745eed4e402ec207fe7df5c28 100644 (file)
@@ -65,7 +65,12 @@ public class ConfigStatementImpl extends AbstractDeclaredStatement<Boolean> impl
         public void onFullDefinitionDeclared(final StmtContext.Mutable<Boolean, ConfigStatement,
                 EffectiveStatement<Boolean, ConfigStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index f49ded857d676af830f84a530d5584edaf77867a..baabab3f5441e5c170fc65a79cf12c9a25e5993e 100644 (file)
@@ -51,7 +51,12 @@ public class ContactStatementImpl extends AbstractDeclaredStatement<String> impl
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, ContactStatement,
                 EffectiveStatement<String, ContactStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index ae3df67117cc5a9687e82737ab494e5d7bb29fc3..1a7c1703fb3c677e8f9f334d725853d0abd72370 100644 (file)
@@ -57,7 +57,12 @@ public class Decimal64SpecificationImpl extends AbstractDeclaredStatement<String
         public void onFullDefinitionDeclared(final StmtContext.Mutable<String, Decimal64Specification,
                 EffectiveStatement<String, Decimal64Specification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 45aea06a3473624c09b675b4eaf82104005f4755..2103f0e895abb47186d6e49042100455b4b9a3d8 100644 (file)
@@ -53,7 +53,12 @@ public class DefaultStatementImpl extends AbstractDeclaredStatement<String> impl
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, DefaultStatement,
                 EffectiveStatement<String, DefaultStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 487f67cfca88092c2e6504be710ac9642c40a97f..7881487bee974b38643303f6d898418675ac3d75 100644 (file)
@@ -52,7 +52,12 @@ public class DescriptionStatementImpl extends AbstractDeclaredStatement<String>
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, DescriptionStatement,
                 EffectiveStatement<String, DescriptionStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index eba5b5e07116085c7b91c88e419a08f7e98e44cd..eae3c95c2e23437dbbcda8c7188ccafca31d46ef 100644 (file)
@@ -61,7 +61,12 @@ public class DeviateStatementImpl extends AbstractDeclaredStatement<DeviateKind>
         public void onFullDefinitionDeclared(final StmtContext.Mutable<DeviateKind, DeviateStatement,
                 EffectiveStatement<DeviateKind, DeviateStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index b66cfe572e4765835497988fd23d182f365ae576..da4d8d9f536596fe5b95cc1ea0551923d0a5b8cd 100644 (file)
@@ -56,7 +56,12 @@ public class DeviationStatementImpl extends AbstractDeclaredStatement<SchemaNode
         public void onFullDefinitionDeclared(final StmtContext.Mutable<SchemaNodeIdentifier, DeviationStatement,
                 EffectiveStatement<SchemaNodeIdentifier, DeviationStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index d9882984e026eb583343c7eabfb9e323fcac146d..9f222c7b703ec3cf5e9a8158a014e47ec36fe8fb 100644 (file)
@@ -58,7 +58,12 @@ public class EnumSpecificationImpl extends AbstractDeclaredStatement<String> imp
         public void onFullDefinitionDeclared(final StmtContext.Mutable<String, EnumSpecification,
                 EffectiveStatement<String, EnumSpecification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 796f8c718977729c08273b3f5b12567e80a01bdb..afa17be9b11ba6f6bf4fb29810610139c8a19a4b 100644 (file)
@@ -62,7 +62,12 @@ public class EnumStatementImpl extends AbstractDeclaredStatement<String> impleme
         public void onFullDefinitionDeclared(final StmtContext.Mutable<String, EnumStatement,
                 EffectiveStatement<String, EnumStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index a58131171ca5f0602b6491b7619c95f1d3b5edd6..d585bbff37d817f4bf01e3185623d9d06d615301 100644 (file)
@@ -57,7 +57,12 @@ public class ErrorAppTagStatementImpl extends AbstractDeclaredStatement<String>
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, ErrorAppTagStatement,
                 EffectiveStatement<String, ErrorAppTagStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 1bba5f5895654ed8ff7d466444b88256eec0635d..467b052cb1c603906eebf229cb24c8d4a3856f39 100644 (file)
@@ -57,7 +57,12 @@ public class ErrorMessageStatementImpl extends
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, ErrorMessageStatement,
                 EffectiveStatement<String, ErrorMessageStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index c09fcf5a836abb3b8afd835e2fd474dd7c4f56ac..3b33b742bb78eb23d3481b82461b2d8c3d7d7abf 100644 (file)
@@ -80,7 +80,12 @@ public class ExtensionStatementImpl extends AbstractDeclaredStatement<QName> imp
         public void onFullDefinitionDeclared(final StmtContext.Mutable<QName, ExtensionStatement,
                 EffectiveStatement<QName, ExtensionStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 4264f5fc2638c64af0b1fb9f2574a76812c2ac65..f11d913b8779854e29e6cbaa48392e09b86fa403 100644 (file)
@@ -67,7 +67,12 @@ public class FeatureStatementImpl extends AbstractDeclaredStatement<QName>
         public void onFullDefinitionDeclared(final StmtContext.Mutable<QName, FeatureStatement,
                 EffectiveStatement<QName, FeatureStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index d232d77288d1bd01a2fd075634623268dd7b4969..d960ea534cf34141b614eb973c4634fa23fbca9b 100644 (file)
@@ -70,7 +70,12 @@ public class FractionDigitsStatementImpl extends AbstractDeclaredStatement<Integ
         public void onFullDefinitionDeclared(final StmtContext.Mutable<Integer, FractionDigitsStatement,
                 EffectiveStatement<Integer, FractionDigitsStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index a5641dc22b0333fc55318575204cc4b77764d73e..e1a039882e2b410b2efbd836f72d0016b5d7b049 100644 (file)
@@ -77,13 +77,18 @@ public class GroupingStatementImpl extends AbstractDeclaredStatement<QName>
         @Override
         public void onFullDefinitionDeclared(final Mutable<QName, GroupingStatement,
                 EffectiveStatement<QName, GroupingStatement>> stmt) {
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
 
             if (stmt != null && stmt.getParentContext() != null) {
                 stmt.getParentContext().addContext(GroupingNamespace.class, stmt.getStatementArgument(), stmt);
             }
         }
 
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
+        }
+
     }
 
     @Nonnull
index ef1aad623a5052c52d81bfcf81a9157d6bbbe887..06016db5987cbc0b517f9504423bc93ecde439dc 100644 (file)
@@ -80,7 +80,12 @@ public class IdentityRefSpecificationImpl extends AbstractDeclaredStatement<Stri
         public void onStatementDefinitionDeclared(final StmtContext.Mutable<String, IdentityRefSpecification,
                 EffectiveStatement<String, IdentityRefSpecification>> stmt) {
             super.onStatementDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index beb5d58e6249c615f92438742856fd03e5201646..a4fa2a9e5acb0d3989633db88bf0263751ea2f5e 100644 (file)
@@ -70,7 +70,12 @@ public class IdentityStatementImpl extends AbstractDeclaredStatement<QName>
         public void onFullDefinitionDeclared(final StmtContext.Mutable<QName, IdentityStatement,
                 EffectiveStatement<QName, IdentityStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index fb2e5395e1e51691b98c809e3fd317e6168a3b1a..76ad6c3cfc408c24fe93aaffafefe9b59341d608 100644 (file)
@@ -58,7 +58,12 @@ public class IfFeatureStatementImpl extends AbstractDeclaredStatement<QName>
         public void onFullDefinitionDeclared(StmtContext.Mutable<QName, IfFeatureStatement,
                 EffectiveStatement<QName, IfFeatureStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index b8b656d0eee8abfde15bd435f0e6f5c3ef68763d..63fb8eba85d94dea6b83741008f9609f692fd87e 100644 (file)
@@ -76,7 +76,12 @@ public class InputStatementImpl extends AbstractDeclaredStatement<QName>
         public void onFullDefinitionDeclared(final Mutable<QName, InputStatement,
                 EffectiveStatement<QName, InputStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 1a5c50434a04905740b0f38f6e4a1901b68acdf9..780ea3012745c62e55c3e0490b0796e1ba94b2d0 100644 (file)
@@ -60,7 +60,12 @@ public class InstanceIdentifierSpecificationImpl extends
         public void onFullDefinitionDeclared(final StmtContext.Mutable<String, InstanceIdentifierSpecification,
                 EffectiveStatement<String, InstanceIdentifierSpecification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 74f968f312482e2864d5475744acccbca11705f1..51c7413c42cee62611363a6fcde5aac40b034ca8 100644 (file)
@@ -73,7 +73,12 @@ public class KeyStatementImpl extends AbstractDeclaredStatement<Collection<Schem
         public void onFullDefinitionDeclared(final StmtContext.Mutable<Collection<SchemaNodeIdentifier>, KeyStatement,
                 EffectiveStatement<Collection<SchemaNodeIdentifier>, KeyStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 }
index ae2b7ce85015b91246a4a97828dc5026d6377ca7..f050ead6582e3707158ef6c73eba5cce2d28c7c5 100644 (file)
@@ -92,7 +92,12 @@ public class LeafListStatementImpl extends AbstractDeclaredStatement<QName>
         public void onFullDefinitionDeclared(final Mutable<QName, LeafListStatement,
                 EffectiveStatement<QName, LeafListStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index fdfff3b76f27f5ae92b8b0642ae04a52ceb63590..783607a42058fa5eb4487f2409ca9d563903b292 100644 (file)
@@ -81,7 +81,12 @@ public class LeafStatementImpl extends AbstractDeclaredStatement<QName> implemen
         public void onFullDefinitionDeclared(final Mutable<QName, LeafStatement,
                 EffectiveStatement<QName, LeafStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 213132b33555c76a6ce4001b6da58e6100c2f585..263b8294078640208da4b42722b04660dc1b84c3 100644 (file)
@@ -60,7 +60,12 @@ public class LeafrefSpecificationImpl extends AbstractDeclaredStatement<String>
         public void onFullDefinitionDeclared(final StmtContext.Mutable<String, LeafrefSpecification,
                 EffectiveStatement<String, LeafrefSpecification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index f0831da66db3aa3e6ab256e99eca4b77cb7d467b..1fadef0bd63a3ff750067a05d3c19a109521af59 100644 (file)
@@ -64,7 +64,12 @@ public class LengthStatementImpl extends AbstractDeclaredStatement<List<LengthCo
         public void onFullDefinitionDeclared(final StmtContext.Mutable<List<LengthConstraint>,
                 LengthStatement, EffectiveStatement<List<LengthConstraint>, LengthStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 483f68cc71f62c0589905ecccecc6be69c7bd508..e1eeeeda14f473c48a8e069eafa3fbe2f012cf1b 100644 (file)
@@ -101,7 +101,12 @@ public class ListStatementImpl extends AbstractDeclaredStatement<QName>
         public void onFullDefinitionDeclared(final Mutable<QName, ListStatement,
                 EffectiveStatement<QName, ListStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index a905df4875193bea70f8267829165863d744c07b..fae5a1a0f0c339ce3792da2443565d4ac72561de 100644 (file)
@@ -65,7 +65,12 @@ public class MandatoryStatementImpl extends AbstractDeclaredStatement<Boolean> i
         public void onFullDefinitionDeclared(StmtContext.Mutable<Boolean, MandatoryStatement,
                 EffectiveStatement<Boolean, MandatoryStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 3d32ed361374fe295482263d7ee64e461ef16258..27fdc9962ebeb0197c05f894e6f8f3000e98287c 100644 (file)
@@ -57,7 +57,12 @@ public class MaxElementsStatementImpl extends AbstractDeclaredStatement<String>
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, MaxElementsStatement,
                 EffectiveStatement<String, MaxElementsStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 7a05bb9bd3104364ecd437cc160993ad81da6fd5..34057f7fcd37752675e2f88fc5b8cc0d6aca3aa6 100644 (file)
@@ -57,7 +57,12 @@ public class MinElementsStatementImpl extends
         public void onFullDefinitionDeclared(StmtContext.Mutable<Integer, MinElementsStatement,
                 EffectiveStatement<Integer, MinElementsStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 8f4842f0e60330085e25f20fb5d5f767bd696176..d1e269771b3ebb569801843c70e8afcf69e0d447 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
@@ -43,4 +44,9 @@ public final class ModelDefinedStatementSupport extends AbstractStatementSupport
     public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) throws SourceException {
         return definition.parseArgumentValue(ctx, value);
     }
+
+    @Override
+    protected SubstatementValidator getSubstatementValidator() {
+        return null;
+    }
 }
index 9345ef0e668e8d0ab25de78c1f418b7f806f1c8f..a33f45d72cab042dbbd48da77978a7d810ff4106 100644 (file)
@@ -63,7 +63,12 @@ public class MustStatementImpl extends AbstractDeclaredStatement<RevisionAwareXP
         public void onFullDefinitionDeclared(final StmtContext.Mutable<RevisionAwareXPath, MustStatement,
                 EffectiveStatement<RevisionAwareXPath, MustStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 907cd317e2cdd33b38ff95757cc9c826cc9ddf5e..0eee709600f317ba1f3408242b671d19062a7d6e 100644 (file)
@@ -48,7 +48,12 @@ public class NamespaceStatementImpl extends AbstractDeclaredStatement<URI> imple
         public void onFullDefinitionDeclared(StmtContext.Mutable<URI, NamespaceStatement,
                 EffectiveStatement<URI, NamespaceStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 05504cfdf3de2cb5d00ccf5f95e655bb6c47c0bb..792961d4e8bfa5070a11fa2412b1db1811b5a1fb 100644 (file)
@@ -86,7 +86,12 @@ public class NotificationStatementImpl extends AbstractDeclaredStatement<QName>
         public void onFullDefinitionDeclared(final Mutable<QName, NotificationStatement,
                 EffectiveStatement<QName, NotificationStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 24117d0b9adab98bfaa9d9e678b25a4ae87fac1e..810c48b5d1eff53673298136716fdc1ffd5477dc 100644 (file)
@@ -57,7 +57,12 @@ public class NumericalRestrictionsImpl extends AbstractDeclaredStatement<String>
         public void onFullDefinitionDeclared(final StmtContext.Mutable<String, NumericalRestrictions,
                 EffectiveStatement<String, NumericalRestrictions>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 01f788c3221f7f03890d0d86dd76146260377931..d4cdbad450328ccf43d4ebb90ea83e4645520763 100644 (file)
@@ -56,7 +56,12 @@ public class OrderedByStatementImpl extends AbstractDeclaredStatement<String>
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, OrderedByStatement,
                 EffectiveStatement<String, OrderedByStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 8f9b112f9b08bdf648c0a727995a5cf18447bceb..86b5252f402c202d4ac0767aca4643c8a858b3a7 100644 (file)
@@ -57,7 +57,12 @@ public class OrganizationStatementImpl extends
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, OrganizationStatement,
                 EffectiveStatement<String, OrganizationStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 2aeab3484192311b8679494892bc7b7eada8d744..9cf2652be1632b24ee066e087e19b0c61434faa2 100644 (file)
@@ -73,7 +73,12 @@ public class OutputStatementImpl extends AbstractDeclaredStatement<QName> implem
         public void onFullDefinitionDeclared(final Mutable<QName, OutputStatement,
                 EffectiveStatement<QName, OutputStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index b26f623e537c9aa7df92ad4a73747569eab9c852..bd805887d2185ea9a9ae4d27c06907787dc094fa 100644 (file)
@@ -54,7 +54,12 @@ public class PathStatementImpl extends AbstractDeclaredStatement<RevisionAwareXP
         public void onFullDefinitionDeclared(StmtContext.Mutable<RevisionAwareXPath, PathStatement,
                 EffectiveStatement<RevisionAwareXPath, PathStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index d01f2893160b1aa3ab9375ad34ff9d8cb41d8b8b..d1db29a9b1f3b53fa4b634b32af0cb7958bcdad7 100644 (file)
@@ -79,7 +79,12 @@ public class PatternStatementImpl extends AbstractDeclaredStatement<PatternConst
         public void onFullDefinitionDeclared(final StmtContext.Mutable<PatternConstraint, PatternStatement,
                 EffectiveStatement<PatternConstraint, PatternStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 3eacd1eed6e0b9beeec4fa1a01377d1d5d53a752..69a9ab6a3d35d51506d8882edbee9ed5cdc71b16 100644 (file)
@@ -57,7 +57,12 @@ public class PositionStatementImpl extends AbstractDeclaredStatement<Long> imple
         public void onFullDefinitionDeclared(
                 final StmtContext.Mutable<Long, PositionStatement, EffectiveStatement<Long, PositionStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index c6c1b5398ea5e806a5caec46822731bc97d8b85f..69a905d506e828ad777f6a5151841996ceca7d7b 100644 (file)
@@ -47,7 +47,12 @@ public class PrefixStatementImpl extends AbstractDeclaredStatement<String> imple
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, PrefixStatement,
                 EffectiveStatement<String, PrefixStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 4add7575f20a1838e8a1010107c15b2a42526e4f..71a91252cf54cbd5dcaa9d0096cbc8df9c4c75c0 100644 (file)
@@ -54,7 +54,12 @@ public class PresenceStatementImpl extends AbstractDeclaredStatement<String> imp
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, PresenceStatement,
                 EffectiveStatement<String, PresenceStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 15fc78ea56f4c05c64e32c64de536f6653ea3f30..a3e5c2c5c123d3325c6f1fedb30cfe35e7e18f5d 100644 (file)
@@ -70,7 +70,12 @@ public class RangeStatementImpl extends AbstractDeclaredStatement<List<RangeCons
         public void onFullDefinitionDeclared(final StmtContext.Mutable<List<RangeConstraint>, RangeStatement,
                 EffectiveStatement<List<RangeConstraint>, RangeStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 731947000aa1625273ac4073bf75113716b5c6d3..88922e89b86282e5c18d65a6c0c24de8d0a84171 100644 (file)
@@ -52,7 +52,12 @@ public class ReferenceStatementImpl extends AbstractDeclaredStatement<String> im
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, ReferenceStatement,
                 EffectiveStatement<String, ReferenceStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 33aa7b2abc287d60111a6bc8c06a42aec571227e..5da200a7e5b834721d9232bfe35bd66d42173f83 100644 (file)
@@ -66,7 +66,12 @@ public class RefineStatementImpl extends AbstractDeclaredStatement<SchemaNodeIde
         public void onFullDefinitionDeclared(final StmtContext.Mutable<SchemaNodeIdentifier, RefineStatement,
                 EffectiveStatement<SchemaNodeIdentifier, RefineStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 569a71dafe1eae3a63a979198641be8e4b8bab2a..352e7ac330c8a4163edae53be071119d1e746ee4 100644 (file)
@@ -52,7 +52,12 @@ public class RequireInstanceStatementImpl extends
         public void onFullDefinitionDeclared(final StmtContext.Mutable<Boolean, RequireInstanceStatement,
                 EffectiveStatement<Boolean, RequireInstanceStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 0b4c2e5df661d2f2c372337696cc0ad367869cb1..3d4b75ba1f268d4c225ad91fe78d774729466f12 100644 (file)
@@ -61,7 +61,12 @@ public class RevisionDateStatementImpl extends AbstractDeclaredStatement<Date> i
         public void onFullDefinitionDeclared(
                 final StmtContext.Mutable<Date, RevisionDateStatement, EffectiveStatement<Date, RevisionDateStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index b2aa6593110386e24f6a227611ffbdf4411f7069..54c2118aed357987e8892776edb67271c15fa9b5 100644 (file)
@@ -69,7 +69,12 @@ public class RevisionStatementImpl extends AbstractDeclaredStatement<Date>
         public void onFullDefinitionDeclared(
                 final StmtContext.Mutable<Date, RevisionStatement, EffectiveStatement<Date, RevisionStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index c11ec11ac77033fd2a84e81a4cfad709fb1283eb..59d1a7e5802ad25b2bb4a576c3bb778f778d0904 100644 (file)
@@ -80,7 +80,12 @@ public class RpcStatementImpl extends AbstractDeclaredStatement<QName>
         @Override
         public void onFullDefinitionDeclared(final Mutable<QName, RpcStatement, EffectiveStatement<QName, RpcStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index aea5d7ee6619fe0a505c1ed9352428be42ee05c5..ac12f906c02c1acbf2baa106bfe86e6aa33d84b8 100644 (file)
@@ -11,18 +11,23 @@ import com.google.common.annotations.Beta;
 import org.opendaylight.yangtools.concepts.SemVer;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace;
 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.source.SourceException;
 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.SemanticVersionEffectiveStatementImpl;
 
 @Beta
 public final class SemanticVersionStatementImpl extends AbstractDeclaredStatement<SemVer> implements
         UnknownStatement<SemVer> {
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
+            SupportedExtensionsMapping.SEMANTIC_VERSION).build();
 
     SemanticVersionStatementImpl(
-            StmtContext<SemVer, UnknownStatement<SemVer>, ?> context) {
+            final StmtContext<SemVer, UnknownStatement<SemVer>, ?> context) {
         super(context);
     }
 
@@ -35,18 +40,25 @@ public final class SemanticVersionStatementImpl extends AbstractDeclaredStatemen
         }
 
         @Override
-        public SemVer parseArgumentValue(StmtContext<?, ?, ?> ctx, String value) {
+        public SemVer parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
             return SemVer.valueOf(value) ;
         }
 
         @Override
-        public void onLinkageDeclared(StmtContext.Mutable<SemVer,UnknownStatement<SemVer>,EffectiveStatement<SemVer,UnknownStatement<SemVer>>> stmt) {
+        public void onLinkageDeclared(final StmtContext.Mutable<SemVer,UnknownStatement<SemVer>,EffectiveStatement<SemVer,UnknownStatement<SemVer>>> stmt) {
             stmt.addToNs(SemanticVersionNamespace.class, stmt.getParentContext(), stmt.getStatementArgument());
         }
 
+        @Override
+        public void onFullDefinitionDeclared(
+                final Mutable<SemVer, UnknownStatement<SemVer>, EffectiveStatement<SemVer, UnknownStatement<SemVer>>> stmt)
+                throws SourceException {
+            getSubstatementValidator().validate(stmt);
+        }
+
         @Override
         public UnknownStatement<SemVer> createDeclared(
-                StmtContext<SemVer, UnknownStatement<SemVer>, ?> ctx) {
+                final StmtContext<SemVer, UnknownStatement<SemVer>, ?> ctx) {
             return new SemanticVersionStatementImpl(ctx);
         }
 
@@ -55,6 +67,11 @@ public final class SemanticVersionStatementImpl extends AbstractDeclaredStatemen
                 final StmtContext<SemVer, UnknownStatement<SemVer>, EffectiveStatement<SemVer, UnknownStatement<SemVer>>> ctx) {
             return new SemanticVersionEffectiveStatementImpl(ctx);
         }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
+        }
     }
 
     @Override
index e7c688db64d278c9f370b201e8782464d4b4541a..2b4d8474877c83fa0a6bb89bda3986f4f8528c0a 100644 (file)
@@ -58,7 +58,12 @@ public class StatusStatementImpl extends AbstractDeclaredStatement<Status>
         public void onFullDefinitionDeclared(StmtContext.Mutable<Status, StatusStatement,
                 EffectiveStatement<Status, StatusStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index e6f9c39a07e13ca4a950bb5325e0bbc75d9af719..ba3f2ebf4e75ca88b367ba8138c05c0e429247b5 100644 (file)
@@ -61,7 +61,12 @@ public class StringRestrictionsImpl extends AbstractDeclaredStatement<String> im
         public void onFullDefinitionDeclared(final StmtContext.Mutable<String, StringRestrictions,
                 EffectiveStatement<String, StringRestrictions>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 4f78ac9c344a65ed2cd30887c35e66466153a174..41df22693da324c4f3b709a87dc514a78e2541ec 100644 (file)
@@ -117,7 +117,12 @@ public class SubmoduleStatementImpl extends AbstractRootStatement<SubmoduleState
         public void onFullDefinitionDeclared(final Mutable<String, SubmoduleStatement,
                 EffectiveStatement<String, SubmoduleStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 726d8a7ad216cd4865d4bdbe9bc8d742111ac16d..144d7ae6eb8478f6df28ffaeeaee8f45171004bc 100644 (file)
@@ -194,7 +194,7 @@ public class TypeStatementImpl extends AbstractDeclaredStatement<String>
         @Override
         public void onFullDefinitionDeclared(
                 final Mutable<String, TypeStatement, EffectiveStatement<String, TypeStatement>> stmt){
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
 
             // if it is yang built-in type, no prerequisite is needed, so simply return
             if (TypeUtils.isYangBuiltInTypeString(stmt.getStatementArgument())) {
@@ -224,6 +224,11 @@ public class TypeStatementImpl extends AbstractDeclaredStatement<String>
                 }
             });
         }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
+        }
     }
 
     @Nonnull
index 5fa261eee546b5bf8c380461dd69678e8b3794b4..9cae9923c8adb4fbc7e9f4daf56eae87be4382b5 100644 (file)
@@ -69,7 +69,7 @@ public class TypedefStatementImpl extends AbstractDeclaredStatement<QName> imple
         public void onFullDefinitionDeclared(final StmtContext.Mutable<QName, TypedefStatement,
                 EffectiveStatement<QName, TypedefStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
             if (stmt != null && stmt.getParentContext() != null) {
                 final StmtContext<?, TypedefStatement, TypedefEffectiveStatement> existing = stmt.getParentContext()
                         .getFromNamespace(TypeNamespace.class, stmt.getStatementArgument());
@@ -79,6 +79,11 @@ public class TypedefStatementImpl extends AbstractDeclaredStatement<QName> imple
                 stmt.getParentContext().addContext(TypeNamespace.class, stmt.getStatementArgument(), stmt);
             }
         }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
+        }
     }
 
     @Nullable
index 606008b6d62f7699f07612db78eb79418a223594..d21464cf7cc71a84de9719910c31c52357d49b89 100644 (file)
@@ -56,7 +56,12 @@ public class UnionSpecificationImpl extends AbstractDeclaredStatement<String>
         @Override
         public void onFullDefinitionDeclared(final StmtContext.Mutable<String, UnionSpecification, EffectiveStatement<String, UnionSpecification>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 8d7fe1c3f6913015dad610afcdecdf4d888b59a9..d46937f7ef8d32d07948bb3df694eadad952ce0c 100644 (file)
@@ -65,7 +65,12 @@ public class UniqueStatementImpl extends AbstractDeclaredStatement<Collection<Sc
         public void onFullDefinitionDeclared(StmtContext.Mutable<Collection<Relative>, UniqueStatement,
                 EffectiveStatement<Collection<Relative>, UniqueStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 6b81d0cd70a9ec88f6c1e1d511f4b8d43fedace9..962a163efea1abde84289457a29684f2a9f885e9 100644 (file)
@@ -56,7 +56,12 @@ public class UnitsStatementImpl extends AbstractDeclaredStatement<String>
         public void onFullDefinitionDeclared(StmtContext.Mutable<String, UnitsStatement,
                 EffectiveStatement<String, UnitsStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 341b915e31f2d399bc887657921f8dbffa6100dd..47e74fc20764dfe599ff4ce27f19fc719d0464b5 100644 (file)
@@ -11,6 +11,7 @@ import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -44,6 +45,11 @@ public class UnknownStatementImpl extends AbstractDeclaredStatement<String> impl
                 final StmtContext<String, UnknownStatement<String>, EffectiveStatement<String, UnknownStatement<String>>> ctx) {
             return new UnknownEffectiveStatementImpl(ctx);
         }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return null;
+        }
     }
 
     @Nullable
index fb77a237afa811d903f294aba13c8aa4c9044123..61860be3d3e0aa2fca750f41428d23e8b5cfdc95 100644 (file)
@@ -87,13 +87,13 @@ public class UsesStatementImpl extends AbstractDeclaredStatement<QName> implemen
                 return;
             }
 
-            SUBSTATEMENT_VALIDATOR.validate(usesNode);
+            getSubstatementValidator().validate(usesNode);
 
             if (StmtContextUtils.isInExtensionBody(usesNode)) {
                 return;
             }
 
-            ModelActionBuilder usesAction = usesNode.newInferenceAction(ModelProcessingPhase.EFFECTIVE_MODEL);
+            final ModelActionBuilder usesAction = usesNode.newInferenceAction(ModelProcessingPhase.EFFECTIVE_MODEL);
             final QName groupingName = usesNode.getStatementArgument();
 
             final Prerequisite<StmtContext<?, ?, ?>> sourceGroupingPre = usesAction.requiresCtx(usesNode,
@@ -105,13 +105,13 @@ public class UsesStatementImpl extends AbstractDeclaredStatement<QName> implemen
 
                 @Override
                 public void apply() {
-                    StatementContextBase<?, ?, ?> targetNodeStmtCtx = (StatementContextBase<?, ?, ?>) targetNodePre.get();
-                    StatementContextBase<?, ?, ?> sourceGrpStmtCtx = (StatementContextBase<?, ?, ?>) sourceGroupingPre.get();
+                    final StatementContextBase<?, ?, ?> targetNodeStmtCtx = (StatementContextBase<?, ?, ?>) targetNodePre.get();
+                    final StatementContextBase<?, ?, ?> sourceGrpStmtCtx = (StatementContextBase<?, ?, ?>) sourceGroupingPre.get();
 
                     try {
                         copyFromSourceToTarget(sourceGrpStmtCtx, targetNodeStmtCtx, usesNode);
                         resolveUsesNode(usesNode, targetNodeStmtCtx);
-                    } catch (SourceException e) {
+                    } catch (final SourceException e) {
                         LOG.warn(e.getMessage(), e);
                         throw e;
                     }
@@ -137,6 +137,11 @@ public class UsesStatementImpl extends AbstractDeclaredStatement<QName> implemen
             return new UsesEffectiveStatementImpl(ctx);
         }
 
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
+        }
+
     }
 
     @Nonnull
index 82a470a8234a36b239fd7e6a4fb7dece93f97780..63fee4c3bcb0568c1764608ae94340dd98654416 100644 (file)
@@ -62,7 +62,12 @@ public class ValueStatementImpl extends AbstractDeclaredStatement<Integer> imple
         public void onFullDefinitionDeclared(
                 final StmtContext.Mutable<Integer, ValueStatement, EffectiveStatement<Integer, ValueStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 4ecac6d7f9ca4221769eb20f4d16ff32b09d7f0e..553127e60696897e48252fab93740a51254bd590 100644 (file)
@@ -59,7 +59,12 @@ public class WhenStatementImpl extends AbstractDeclaredStatement<RevisionAwareXP
         public void onFullDefinitionDeclared(final StmtContext.Mutable<RevisionAwareXPath, WhenStatement,
                 EffectiveStatement<RevisionAwareXPath, WhenStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 2da245bcc642c8369ce581566e87ea714b71467d..3662667cb932ed5824840e5835485a4fe7f96848 100644 (file)
@@ -65,7 +65,12 @@ public class YangVersionStatementImpl extends AbstractDeclaredStatement<YangVers
         public void onFullDefinitionDeclared(final StmtContext.Mutable<YangVersion, YangVersionStatement,
                 EffectiveStatement<YangVersion, YangVersionStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index a194a26c94c46089fe12ec53fc253387d5818146..8ebf9361a81314d2bceac27228b6aefe5e79e456 100644 (file)
@@ -52,7 +52,12 @@ public class YinElementStatementImpl extends AbstractDeclaredStatement<Boolean>
         public void onFullDefinitionDeclared(final StmtContext.Mutable<Boolean, YinElementStatement,
                 EffectiveStatement<Boolean, YinElementStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index ab55a1e189935fbbd37410747afaf7a7abbe0318..b91731990dbd547e10edb54619f07a2604b194bf 100644 (file)
@@ -80,7 +80,12 @@ public class AnydataStatementImpl extends AbstractDeclaredStatement<QName> imple
         public void onFullDefinitionDeclared(final Mutable<QName, AnydataStatement,
                 EffectiveStatement<QName, AnydataStatement>> stmt) {
             super.onFullDefinitionDeclared(stmt);
-            SUBSTATEMENT_VALIDATOR.validate(stmt);
+            getSubstatementValidator().validate(stmt);
+        }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return SUBSTATEMENT_VALIDATOR;
         }
     }
 
index 2636da86e74785e6089a0bbc478796a951e1c6d3..cd94be8f0e8fd92671bbff44c45d16652e746fc2 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.thirdparty.plugin;
 
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
+import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -50,6 +51,11 @@ public class ThirdPartyExtensionStatementImpl extends AbstractDeclaredStatement<
                 final StmtContext<String, UnknownStatement<String>, EffectiveStatement<String, UnknownStatement<String>>> ctx) {
             return new ThirdPartyExtensionEffectiveStatementImpl(ctx);
         }
+
+        @Override
+        protected SubstatementValidator getSubstatementValidator() {
+            return null;
+        }
     }
 
     @Override