Split out yang-model-ri
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / mandatory / MandatoryStatementSupport.java
index 5564ff329dc31a247be9bf623da80ff7c0a3d60a..5fb06db43c7aeb963839ec60f56106f199a1b640 100644 (file)
@@ -7,22 +7,29 @@
  */
 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.model.ri.stmt.DeclaredStatements;
+import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractBooleanStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 public final class MandatoryStatementSupport extends
-        AbstractStatementSupport<Boolean, MandatoryStatement, EffectiveStatement<Boolean, MandatoryStatement>> {
+        AbstractBooleanStatementSupport<MandatoryStatement, MandatoryEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
         YangStmtMapping.MANDATORY).build();
     private static final MandatoryStatementSupport INSTANCE = new MandatoryStatementSupport();
 
     private MandatoryStatementSupport() {
-        super(YangStmtMapping.MANDATORY);
+        super(YangStmtMapping.MANDATORY,
+            EffectiveStatements.createMandatory(DeclaredStatements.createMandatory(Boolean.FALSE)),
+            EffectiveStatements.createMandatory(DeclaredStatements.createMandatory(Boolean.TRUE)),
+            StatementPolicy.contextIndependent());
     }
 
     public static MandatoryStatementSupport getInstance() {
@@ -30,40 +37,24 @@ public final class MandatoryStatementSupport extends
     }
 
     @Override
-    public Boolean parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
-        return ArgumentUtils.parseBoolean(ctx, value);
-    }
-
-    @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 DeclaredStatements.createMandatory(ctx.getArgument(), substatements);
     }
 
     @Override
-    public String internArgument(final String rawArgument) {
-        return ArgumentUtils.internBoolean(rawArgument);
+    protected MandatoryEffectiveStatement createEffective(final MandatoryStatement declared,
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        return EffectiveStatements.createMandatory(declared, substatements);
     }
 
     @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
+    protected MandatoryEffectiveStatement createEmptyEffective(final MandatoryStatement declared) {
+        return EffectiveStatements.createMandatory(declared);
     }
-}
\ No newline at end of file
+}