Enforce decimal64 fraction-digits in derived types
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / BaseStatementImpl.java
index 1d35d829614fbf66e917cc85cd58c7a16cc888b3..b810db4ffc8e51d9704ef074511623dbe7278184 100644 (file)
@@ -17,18 +17,19 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.BaseStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
 import org.opendaylight.yangtools.yang.parser.spi.IdentityNamespace;
-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.AbstractQNameStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.DerivedIdentitiesNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder.InferenceAction;
+import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder.InferenceContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder.Prerequisite;
 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.stmt.rfc6020.effective.BaseEffectiveStatementImpl;
 
 public class BaseStatementImpl extends AbstractDeclaredStatement<QName> implements BaseStatement {
@@ -40,7 +41,7 @@ public class BaseStatementImpl extends AbstractDeclaredStatement<QName> implemen
     }
 
     public static class Definition
-            extends AbstractStatementSupport<QName, BaseStatement, EffectiveStatement<QName, BaseStatement>> {
+            extends AbstractQNameStatementSupport<BaseStatement, EffectiveStatement<QName, BaseStatement>> {
 
         public Definition() {
             super(YangStmtMapping.BASE);
@@ -48,7 +49,7 @@ public class BaseStatementImpl extends AbstractDeclaredStatement<QName> implemen
 
         @Override
         public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
-            return Utils.qNameFromArgument(ctx, value);
+            return StmtContextUtils.qnameFromArgument(ctx, value);
         }
 
         @Override
@@ -78,11 +79,11 @@ public class BaseStatementImpl extends AbstractDeclaredStatement<QName> implemen
 
                 baseIdentityAction.apply(new InferenceAction() {
                     @Override
-                    public void apply() {
-                        List<StmtContext<?, ?, ?>> derivedIdentities =
-                                baseStmtCtx.getFromNamespace(DerivedIdentitiesNamespace.class, baseStmtCtx.getStatementArgument());
+                    public void apply(final InferenceContext ctx) {
+                        List<StmtContext<?, ?, ?>> derivedIdentities = baseStmtCtx.getFromNamespace(
+                            DerivedIdentitiesNamespace.class, baseStmtCtx.getStatementArgument());
                         if (derivedIdentities == null) {
-                            derivedIdentities = new ArrayList<>();
+                            derivedIdentities = new ArrayList<>(1);
                             baseStmtCtx.addToNs(DerivedIdentitiesNamespace.class, baseIdentityQName, derivedIdentities);
                         }
                         derivedIdentities.add(baseParentCtx);
@@ -98,13 +99,6 @@ public class BaseStatementImpl extends AbstractDeclaredStatement<QName> implemen
             }
         }
 
-        @Override
-        public void onFullDefinitionDeclared(
-                final Mutable<QName, BaseStatement, EffectiveStatement<QName, BaseStatement>> stmt) {
-            super.onFullDefinitionDeclared(stmt);
-            getSubstatementValidator().validate(stmt);
-        }
-
         @Override
         protected SubstatementValidator getSubstatementValidator() {
             return SUBSTATEMENT_VALIDATOR;