Update yang-parser-api
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / meta / ChoiceStatementSupport.java
index f328676517c6e32e7119d91970aa2dee40acb575..bc8fde8cb195f8ae8bf2ff7c5d3deb577ac6f0b1 100644 (file)
@@ -19,6 +19,7 @@ import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Status;
 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.meta.StatementDefinition;
@@ -27,12 +28,13 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DefaultEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement;
+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.model.spi.meta.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder;
 import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
+import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
 import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.YangValidationBundles;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.case_.CaseStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractSchemaTreeStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ImplicitParentAwareStatementSupport;
@@ -46,8 +48,7 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 public final class ChoiceStatementSupport
         extends AbstractSchemaTreeStatementSupport<ChoiceStatement, ChoiceEffectiveStatement>
         implements ImplicitParentAwareStatementSupport {
-    private static final @NonNull ChoiceStatementSupport RFC6020_INSTANCE = new ChoiceStatementSupport(
-        SubstatementValidator.builder(YangStmtMapping.CHOICE)
+    private static final SubstatementValidator RFC6020_VALIDATOR = SubstatementValidator.builder(YangStmtMapping.CHOICE)
             .addAny(YangStmtMapping.ANYXML)
             .addAny(YangStmtMapping.CASE)
             .addOptional(YangStmtMapping.CONFIG)
@@ -62,11 +63,9 @@ public final class ChoiceStatementSupport
             .addOptional(YangStmtMapping.REFERENCE)
             .addOptional(YangStmtMapping.STATUS)
             .addOptional(YangStmtMapping.WHEN)
-            .build(),
-        CaseStatementSupport.rfc6020Instance());
+            .build();
 
-    private static final @NonNull ChoiceStatementSupport RFC7950_INSTANCE = new ChoiceStatementSupport(
-        SubstatementValidator.builder(YangStmtMapping.CHOICE)
+    private static final SubstatementValidator RFC7950_VALIDATOR = SubstatementValidator.builder(YangStmtMapping.CHOICE)
             .addAny(YangStmtMapping.ANYDATA)
             .addAny(YangStmtMapping.ANYXML)
             .addAny(YangStmtMapping.CASE)
@@ -82,24 +81,26 @@ public final class ChoiceStatementSupport
             .addOptional(YangStmtMapping.REFERENCE)
             .addOptional(YangStmtMapping.STATUS)
             .addOptional(YangStmtMapping.WHEN)
-            .build(),
-        CaseStatementSupport.rfc7950Instance());
+            .build();
 
     private final SubstatementValidator validator;
     private final CaseStatementSupport implicitCase;
 
-    private ChoiceStatementSupport(final SubstatementValidator validator, final CaseStatementSupport implicitCase) {
-        super(YangStmtMapping.CHOICE, instantiatedPolicy());
+    private ChoiceStatementSupport(final YangParserConfiguration config, final SubstatementValidator validator,
+            final CaseStatementSupport implicitCase) {
+        super(YangStmtMapping.CHOICE, instantiatedPolicy(), config);
         this.validator = requireNonNull(validator);
         this.implicitCase = requireNonNull(implicitCase);
     }
 
-    public static @NonNull ChoiceStatementSupport rfc6020Instance() {
-        return RFC6020_INSTANCE;
+    public static @NonNull ChoiceStatementSupport rfc6020Instance(final YangParserConfiguration config,
+            final CaseStatementSupport implicitCase) {
+        return new ChoiceStatementSupport(config, RFC6020_VALIDATOR, implicitCase);
     }
 
-    public static @NonNull ChoiceStatementSupport rfc7950Instance() {
-        return RFC7950_INSTANCE;
+    public static @NonNull ChoiceStatementSupport rfc7950Instance(final YangParserConfiguration config,
+            final CaseStatementSupport implicitCase) {
+        return new ChoiceStatementSupport(config, RFC7950_VALIDATOR, implicitCase);
     }
 
     @Override
@@ -120,8 +121,9 @@ public final class ChoiceStatementSupport
     }
 
     @Override
-    protected ChoiceStatement createEmptyDeclared(@NonNull final StmtContext<QName, ChoiceStatement, ?> ctx) {
-        return DeclaredStatements.createChoice(ctx.getArgument());
+    protected ChoiceStatement attachDeclarationReference(final ChoiceStatement stmt,
+            final DeclarationReference reference) {
+        return DeclaredStatementDecorators.decorateChoice(stmt, reference);
     }
 
     @Override
@@ -182,4 +184,4 @@ public final class ChoiceStatementSupport
 
         return null;
     }
-}
\ No newline at end of file
+}