Centralize substatement validators
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / meta / ErrorMessageStatementSupport.java
index 5743dc091317150019b4d5571bf0cd28ebcf7e3c..5a935e60de3572a5cff6d4f2b6606b82731f7ff9 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.ErrorMessageEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ErrorMessageStatement;
+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.AbstractStringStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
@@ -23,20 +26,10 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 public final class ErrorMessageStatementSupport
         extends AbstractStringStatementSupport<ErrorMessageStatement, ErrorMessageEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
-            SubstatementValidator.builder(YangStmtMapping.ERROR_MESSAGE).build();
-    private static final ErrorMessageStatementSupport INSTANCE = new ErrorMessageStatementSupport();
+        SubstatementValidator.builder(YangStmtMapping.ERROR_MESSAGE).build();
 
-    private ErrorMessageStatementSupport() {
-        super(YangStmtMapping.ERROR_MESSAGE, StatementPolicy.contextIndependent());
-    }
-
-    public static ErrorMessageStatementSupport getInstance() {
-        return INSTANCE;
-    }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+    public ErrorMessageStatementSupport(final YangParserConfiguration config) {
+        super(YangStmtMapping.ERROR_MESSAGE, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
     }
 
     @Override
@@ -46,8 +39,9 @@ public final class ErrorMessageStatementSupport
     }
 
     @Override
-    protected ErrorMessageStatement createEmptyDeclared(final StmtContext<String, ErrorMessageStatement, ?> ctx) {
-        return DeclaredStatements.createErrorMessage(ctx.getRawArgument());
+    protected ErrorMessageStatement attachDeclarationReference(final ErrorMessageStatement stmt,
+            final DeclarationReference reference) {
+        return DeclaredStatementDecorators.decorateErrorMessage(stmt, reference);
     }
 
     @Override