Centralize substatement validators
[yangtools.git] / yang / odlext-parser-support / src / main / java / org / opendaylight / yangtools / odlext / parser / ContextInstanceStatementSupport.java
index a10211e35d56e205f4fd98382793a5cc7a330362..b877f508db0d706df8c96aed46a942c782f16623 100644 (file)
@@ -13,17 +13,22 @@ import org.opendaylight.yangtools.odlext.model.api.ContextInstanceEffectiveState
 import org.opendaylight.yangtools.odlext.model.api.ContextInstanceStatement;
 import org.opendaylight.yangtools.odlext.model.api.OpenDaylightExtensionsStatements;
 import org.opendaylight.yangtools.yang.common.QName;
+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;
 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
@@ -32,6 +37,12 @@ public final class ContextInstanceStatementSupport
         return new ContextInstanceStatementImpl(ctx.getRawArgument(), ctx.getArgument(), substatements);
     }
 
+    @Override
+    protected ContextInstanceStatement attachDeclarationReference(final ContextInstanceStatement stmt,
+            final DeclarationReference reference) {
+        return new RefContextInstanceStatement(stmt, reference);
+    }
+
     @Override
     ContextInstanceEffectiveStatement createEffective(final ContextInstanceStatement declared,
             final IdentityEffectiveStatement identity,