Teach YANG parser to retain DeclarationReference
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / meta / CaseStatementSupport.java
index 4cbf7a9417d8bcbc7d6da200203b9fc05ffcb06d..a1751dacb674fc375cefd57550e113d3261a46cc 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementOrigin;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements;
 import org.opendaylight.yangtools.yang.model.ri.stmt.ImplicitStatements;
@@ -41,8 +42,7 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 @Beta
 public final class CaseStatementSupport
         extends AbstractImplicitStatementSupport<CaseStatement, CaseEffectiveStatement> {
-    private static final @NonNull CaseStatementSupport RFC6020_INSTANCE = new CaseStatementSupport(
-        SubstatementValidator.builder(YangStmtMapping.CASE)
+    private static final SubstatementValidator RFC6020_VALIDATOR = SubstatementValidator.builder(YangStmtMapping.CASE)
             .addAny(YangStmtMapping.ANYXML)
             .addAny(YangStmtMapping.CHOICE)
             .addAny(YangStmtMapping.CONTAINER)
@@ -55,9 +55,8 @@ public final class CaseStatementSupport
             .addOptional(YangStmtMapping.STATUS)
             .addAny(YangStmtMapping.USES)
             .addOptional(YangStmtMapping.WHEN)
-            .build());
-    private static final @NonNull CaseStatementSupport RFC7950_INSTANCE = new CaseStatementSupport(
-        SubstatementValidator.builder(YangStmtMapping.CASE)
+            .build();
+    private static final SubstatementValidator RFC7950_VALIDATOR = SubstatementValidator.builder(YangStmtMapping.CASE)
             .addAny(YangStmtMapping.ANYDATA)
             .addAny(YangStmtMapping.ANYXML)
             .addAny(YangStmtMapping.CHOICE)
@@ -71,21 +70,21 @@ public final class CaseStatementSupport
             .addOptional(YangStmtMapping.STATUS)
             .addAny(YangStmtMapping.USES)
             .addOptional(YangStmtMapping.WHEN)
-            .build());
+            .build();
 
     private final SubstatementValidator validator;
 
-    private CaseStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.CASE, instantiatedPolicy());
+    private CaseStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator) {
+        super(YangStmtMapping.CASE, instantiatedPolicy(), config);
         this.validator = requireNonNull(validator);
     }
 
-    public static @NonNull CaseStatementSupport rfc6020Instance() {
-        return RFC6020_INSTANCE;
+    public static @NonNull CaseStatementSupport rfc6020Instance(final YangParserConfiguration config) {
+        return new CaseStatementSupport(config, RFC6020_VALIDATOR);
     }
 
-    public static @NonNull CaseStatementSupport rfc7950Instance() {
-        return RFC7950_INSTANCE;
+    public static @NonNull CaseStatementSupport rfc7950Instance(final YangParserConfiguration config) {
+        return new CaseStatementSupport(config, RFC7950_VALIDATOR);
     }
 
     @Override