Split out yang-model-ri
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / must / MustStatementSupport.java
index 33ea81a6ba1bfd0fc99343d73d7256ac692259d8..7014a246e8cc9c6f35e5c784c07d056ff85cafc0 100644 (file)
@@ -16,15 +16,16 @@ 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.MustEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.MustStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
+import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
 import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.XPathSupport;
+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;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 import org.opendaylight.yangtools.yang.xpath.api.YangXPathExpression.QualifiedBound;
 
 public final class MustStatementSupport
-        extends BaseStatementSupport<QualifiedBound, MustStatement, MustEffectiveStatement> {
+        extends AbstractStatementSupport<QualifiedBound, MustStatement, MustEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
         .MUST)
         .addOptional(YangStmtMapping.DESCRIPTION)
@@ -36,7 +37,8 @@ public final class MustStatementSupport
     private final @NonNull XPathSupport xpathSupport;
 
     private MustStatementSupport(final XPathSupport xpathSupport) {
-        super(YangStmtMapping.MUST);
+        // Note: if we end up binding expressions, this needs to become declaredCopy()
+        super(YangStmtMapping.MUST, StatementPolicy.contextIndependent());
         this.xpathSupport = requireNonNull(xpathSupport);
     }
 
@@ -57,12 +59,12 @@ public final class MustStatementSupport
     @Override
     protected MustStatement createDeclared(final StmtContext<QualifiedBound, MustStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new RegularMustStatement(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument(), substatements);
+        return DeclaredStatements.createMust(ctx.getRawArgument(), ctx.getArgument(), substatements);
     }
 
     @Override
     protected MustStatement createEmptyDeclared(final StmtContext<QualifiedBound, MustStatement, ?> ctx) {
-        return new EmptyMustStatement(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument());
+        return DeclaredStatements.createMust(ctx.getRawArgument(), ctx.getArgument());
     }
 
     @Override