Centralize substatement validators
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / meta / MinElementsStatementSupport.java
index e549fddad96112bfd65419d8b6d1467c97c24dba..bc19dc3b0fb512fa913e91315dfcdb83b17ddbce 100644 (file)
@@ -9,12 +9,15 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 
 import com.google.common.collect.ImmutableList;
 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.MinElementsEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement;
+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.AbstractInternedStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
@@ -22,17 +25,11 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
 public final class MinElementsStatementSupport
         extends AbstractInternedStatementSupport<Integer, MinElementsStatement, MinElementsEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-        YangStmtMapping.MIN_ELEMENTS)
-        .build();
-    private static final MinElementsStatementSupport INSTANCE = new MinElementsStatementSupport();
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.MIN_ELEMENTS).build();
 
-    private MinElementsStatementSupport() {
-        super(YangStmtMapping.MIN_ELEMENTS, StatementPolicy.contextIndependent());
-    }
-
-    public static MinElementsStatementSupport getInstance() {
-        return INSTANCE;
+    public MinElementsStatementSupport(final YangParserConfiguration config) {
+        super(YangStmtMapping.MIN_ELEMENTS, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -44,17 +41,18 @@ public final class MinElementsStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected MinElementsStatement createDeclared(final Integer argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
         return DeclaredStatements.createMinElements(argument, substatements);
     }
 
+    @Override
+    protected MinElementsStatement attachDeclarationReference(final MinElementsStatement stmt,
+            final DeclarationReference reference) {
+        return DeclaredStatementDecorators.decorateMinElements(stmt, reference);
+    }
+
     @Override
     protected MinElementsStatement createEmptyDeclared(final Integer argument) {
         return DeclaredStatements.createMinElements(argument);
@@ -70,4 +68,4 @@ public final class MinElementsStatementSupport
     protected MinElementsEffectiveStatement createEmptyEffective(final MinElementsStatement declared) {
         return EffectiveStatements.createMinElements(declared);
     }
-}
\ No newline at end of file
+}