Centralize substatement validators
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / meta / FractionDigitsStatementSupport.java
index 0c739cdc443a68aba8a8643af677dc016ba0415c..c69037f6e9cb3db5cc880120642ea2db0b91a3c3 100644 (file)
@@ -12,12 +12,15 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMap.Builder;
 import org.eclipse.jdt.annotation.NonNull;
 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;
 import org.opendaylight.yangtools.yang.model.api.stmt.FractionDigitsEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.FractionDigitsStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatementDecorators;
 import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements;
+import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -28,7 +31,6 @@ public final class FractionDigitsStatementSupport
         extends AbstractStatementSupport<Integer, FractionDigitsStatement, FractionDigitsEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
             SubstatementValidator.builder(YangStmtMapping.FRACTION_DIGITS).build();
-    private static final FractionDigitsStatementSupport INSTANCE = new FractionDigitsStatementSupport();
 
     // FIXME: move this to yang-model-spi
     private static final ImmutableMap<FractionDigitsStatement, FractionDigitsEffectiveStatement> EMPTY_EFF;
@@ -42,12 +44,8 @@ public final class FractionDigitsStatementSupport
         EMPTY_EFF = effBuilder.build();
     }
 
-    private FractionDigitsStatementSupport() {
-        super(YangStmtMapping.FRACTION_DIGITS, StatementPolicy.contextIndependent());
-    }
-
-    public static FractionDigitsStatementSupport getInstance() {
-        return INSTANCE;
+    public FractionDigitsStatementSupport(final YangParserConfiguration config) {
+        super(YangStmtMapping.FRACTION_DIGITS, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -64,17 +62,18 @@ 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) {
         return DeclaredStatements.createFractionDigits(ctx.getArgument(), substatements);
     }
 
+    @Override
+    protected FractionDigitsStatement attachDeclarationReference(final FractionDigitsStatement stmt,
+            final DeclarationReference reference) {
+        return DeclaredStatementDecorators.decorateFractionDigits(stmt, reference);
+    }
+
     @Override
     protected FractionDigitsEffectiveStatement createEffective(final Current<Integer, FractionDigitsStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {