Update yang-parser-api
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / pattern / PatternStatementSupport.java
index 26fb656a312bcb9d086d6a1464922a681d33d7d0..96213d839ed56326da57c2bbaf44dc475b4fdadd 100644 (file)
@@ -15,13 +15,16 @@ import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 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.PatternEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.PatternExpression;
 import org.opendaylight.yangtools.yang.model.api.stmt.PatternStatement;
+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;
@@ -31,35 +34,35 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 @Beta
 public final class PatternStatementSupport
         extends AbstractStatementSupport<PatternExpression, PatternStatement, PatternEffectiveStatement> {
-    private static final @NonNull PatternStatementSupport RFC6020_INSTANCE = new PatternStatementSupport(
+    private static final SubstatementValidator RFC6020_VALIDATOR =
         SubstatementValidator.builder(YangStmtMapping.PATTERN)
             .addOptional(YangStmtMapping.DESCRIPTION)
             .addOptional(YangStmtMapping.ERROR_APP_TAG)
             .addOptional(YangStmtMapping.ERROR_MESSAGE)
             .addOptional(YangStmtMapping.REFERENCE)
-            .build());
-    private static final @NonNull PatternStatementSupport RFC7950_INSTANCE = new PatternStatementSupport(
+            .build();
+    private static final SubstatementValidator RFC7950_VALIDATOR =
         SubstatementValidator.builder(YangStmtMapping.PATTERN)
             .addOptional(YangStmtMapping.DESCRIPTION)
             .addOptional(YangStmtMapping.ERROR_APP_TAG)
             .addOptional(YangStmtMapping.ERROR_MESSAGE)
             .addOptional(YangStmtMapping.MODIFIER)
             .addOptional(YangStmtMapping.REFERENCE)
-            .build());
+            .build();
 
     private final SubstatementValidator validator;
 
-    private PatternStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.PATTERN, StatementPolicy.contextIndependent());
+    private PatternStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
+        super(YangStmtMapping.PATTERN, StatementPolicy.contextIndependent(), config);
         this.validator = requireNonNull(validator);
     }
 
-    public static @NonNull PatternStatementSupport rfc6020Instance() {
-        return RFC6020_INSTANCE;
+    public static @NonNull PatternStatementSupport rfc6020Instance(final YangParserConfiguration config) {
+        return new PatternStatementSupport(config, RFC6020_VALIDATOR);
     }
 
-    public static @NonNull PatternStatementSupport rfc7950Instance() {
-        return RFC7950_INSTANCE;
+    public static @NonNull PatternStatementSupport rfc7950Instance(final YangParserConfiguration config) {
+        return new PatternStatementSupport(config, RFC7950_VALIDATOR);
     }
 
     @Override
@@ -85,9 +88,9 @@ public final class PatternStatementSupport
     }
 
     @Override
-    protected PatternStatement createEmptyDeclared(
-            final StmtContext<PatternExpression, PatternStatement, ?> ctx) {
-        return DeclaredStatements.createPattern(ctx.getArgument());
+    protected PatternStatement attachDeclarationReference(final PatternStatement stmt,
+            final DeclarationReference reference) {
+        return DeclaredStatementDecorators.decoratePattern(stmt, reference);
     }
 
     @Override