Revert ChoiceSchemaNode.getCases() to return a Collection
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / mandatory / MandatoryStatementSupport.java
index 19e36561a0e58c47f1578e35757271fb1ee332f8..17d22f19f604a193f6cfe30fd8d4b55d065a9bfd 100644 (file)
@@ -7,58 +7,52 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.mandatory;
 
+import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+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.MandatoryEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ArgumentUtils;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseBooleanStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
-public class MandatoryStatementSupport extends
-        AbstractStatementSupport<Boolean, MandatoryStatement, EffectiveStatement<Boolean, MandatoryStatement>> {
+public final class MandatoryStatementSupport extends
+        BaseBooleanStatementSupport<MandatoryStatement, MandatoryEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
         YangStmtMapping.MANDATORY).build();
+    private static final MandatoryStatementSupport INSTANCE = new MandatoryStatementSupport();
 
-    public MandatoryStatementSupport() {
-        super(YangStmtMapping.MANDATORY);
+    private MandatoryStatementSupport() {
+        super(YangStmtMapping.MANDATORY,
+            new EmptyMandatoryEffectiveStatement(new EmptyMandatoryStatement(Boolean.FALSE)),
+            new EmptyMandatoryEffectiveStatement(new EmptyMandatoryStatement(Boolean.TRUE)));
     }
 
-    @Override
-    public Boolean parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
-        return ArgumentUtils.parseBoolean(ctx, value);
+    public static MandatoryStatementSupport getInstance() {
+        return INSTANCE;
     }
 
     @Override
-    public MandatoryStatement createDeclared(final StmtContext<Boolean, MandatoryStatement, ?> ctx) {
-        final MandatoryStatement ret = new MandatoryStatementImpl(ctx);
-        if (EmptyMandatoryStatement.FALSE.equals(ret)) {
-            return EmptyMandatoryStatement.FALSE;
-        } else if (EmptyMandatoryStatement.TRUE.equals(ret)) {
-            return EmptyMandatoryStatement.TRUE;
-        } else {
-            return ret;
-        }
+    protected SubstatementValidator getSubstatementValidator() {
+        return SUBSTATEMENT_VALIDATOR;
     }
 
     @Override
-    public EffectiveStatement<Boolean, MandatoryStatement> createEffective(
-            final StmtContext<Boolean, MandatoryStatement, EffectiveStatement<Boolean, MandatoryStatement>> ctx) {
-        final EffectiveStatement<Boolean, MandatoryStatement> ret = new MandatoryEffectiveStatementImpl(ctx);
-        final MandatoryStatement declared = ret.getDeclared();
-        if (declared instanceof EmptyMandatoryStatement && ret.effectiveSubstatements().isEmpty()) {
-            return ((EmptyMandatoryStatement)declared).toEffective();
-        }
-        return ret;
+    protected MandatoryStatement createDeclared(final StmtContext<Boolean, MandatoryStatement, ?> ctx,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return new RegularMandatoryStatement(ctx.coerceStatementArgument(), substatements);
     }
 
     @Override
-    public String internArgument(final String rawArgument) {
-        return ArgumentUtils.internBoolean(rawArgument);
+    protected MandatoryEffectiveStatement createEffective(
+            final StmtContext<Boolean, MandatoryStatement, MandatoryEffectiveStatement> ctx,
+            final MandatoryStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        return new RegularMandatoryEffectiveStatement(declared, substatements);
     }
 
     @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+    protected MandatoryEffectiveStatement createEmptyEffective(final MandatoryStatement declared) {
+        return new EmptyMandatoryEffectiveStatement(declared);
     }
-}
\ No newline at end of file
+}