Centralize substatement validators
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / meta / PositionStatementSupport.java
index 91c0255f6c9b234f85c9f5cfc9abd065d8f306c7..66f10df1dc9a491add1fcf6982cbf2f82db094cb 100644 (file)
@@ -10,12 +10,15 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta;
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.Uint32;
 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.PositionEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.PositionStatement;
+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;
@@ -23,16 +26,11 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 
 public final class PositionStatementSupport
         extends AbstractInternedStatementSupport<Uint32, PositionStatement, PositionEffectiveStatement> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
-        YangStmtMapping.POSITION).build();
-    private static final PositionStatementSupport INSTANCE = new PositionStatementSupport();
+    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+        SubstatementValidator.builder(YangStmtMapping.POSITION).build();
 
-    private PositionStatementSupport() {
-        super(YangStmtMapping.POSITION, StatementPolicy.contextIndependent());
-    }
-
-    public static PositionStatementSupport getInstance() {
-        return INSTANCE;
+    public PositionStatementSupport(final YangParserConfiguration config) {
+        super(YangStmtMapping.POSITION, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -44,11 +42,6 @@ public final class PositionStatementSupport
         }
     }
 
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
-
     @Override
     protected PositionStatement createDeclared(final Uint32 argument,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
@@ -57,7 +50,13 @@ public final class PositionStatementSupport
 
     @Override
     protected PositionStatement createEmptyDeclared(final Uint32 argument) {
-        return DeclaredStatements.createPosition(argument);
+        return DeclaredStatements.createPosition(argument, ImmutableList.of());
+    }
+
+    @Override
+    protected PositionStatement attachDeclarationReference(final PositionStatement stmt,
+            final DeclarationReference reference) {
+        return DeclaredStatementDecorators.decoratePosition(stmt, reference);
     }
 
     @Override
@@ -70,4 +69,4 @@ public final class PositionStatementSupport
     protected PositionEffectiveStatement createEmptyEffective(final PositionStatement declared) {
         return EffectiveStatements.createPosition(declared);
     }
-}
\ No newline at end of file
+}