X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-rfc7950%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frfc7950%2Fstmt%2Fwhen%2FWhenStatementSupport.java;h=aaa3190c755cbd3ded00f9a918dbec792c7c2e52;hb=6a3d3bfeda9ac4337ac151b472244fc447b1efbb;hp=1d559170c518810112fa4ebec0402a54de1d160b;hpb=19efe56f8f20f5692a100e765a581fbc8f0b4aca;p=yangtools.git diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/when/WhenStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/when/WhenStatementSupport.java index 1d559170c5..aaa3190c75 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/when/WhenStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/when/WhenStatementSupport.java @@ -7,51 +7,66 @@ */ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.when; -import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; +import static java.util.Objects.requireNonNull; + +import com.google.common.collect.ImmutableList; +import org.eclipse.jdt.annotation.NonNull; 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.WhenEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement; -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.BaseStatementSupport; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.XPathSupport; +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 WhenStatementSupport extends AbstractStatementSupport> { +public final class WhenStatementSupport + extends BaseStatementSupport { private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder( YangStmtMapping.WHEN) .addOptional(YangStmtMapping.DESCRIPTION) .addOptional(YangStmtMapping.REFERENCE) .build(); - private static final WhenStatementSupport INSTANCE = new WhenStatementSupport(); - private WhenStatementSupport() { + private final @NonNull XPathSupport xpathSupport; + + private WhenStatementSupport(final XPathSupport xpathSupport) { super(YangStmtMapping.WHEN); + this.xpathSupport = requireNonNull(xpathSupport); } - public static WhenStatementSupport getInstance() { - return INSTANCE; + public static WhenStatementSupport createInstance(final XPathSupport xpathSupport) { + return new WhenStatementSupport(xpathSupport); } @Override - public RevisionAwareXPath parseArgumentValue(final StmtContext ctx, final String value) { - return ArgumentUtils.parseXPath(ctx, value); + public QualifiedBound parseArgumentValue(final StmtContext ctx, final String value) { + return xpathSupport.parseXPath(ctx, value); } @Override - public WhenStatement createDeclared(final StmtContext ctx) { - return new WhenStatementImpl(ctx); + protected SubstatementValidator getSubstatementValidator() { + return SUBSTATEMENT_VALIDATOR; } @Override - public EffectiveStatement createEffective( - final StmtContext> ctx) { - return new WhenEffectiveStatementImpl(ctx); + protected WhenStatement createDeclared(final StmtContext ctx, + final ImmutableList> substatements) { + return new RegularWhenStatement(ctx.getRawArgument(), ctx.getArgument(), substatements); } @Override - protected SubstatementValidator getSubstatementValidator() { - return SUBSTATEMENT_VALIDATOR; + protected WhenStatement createEmptyDeclared(final StmtContext ctx) { + return new EmptyWhenStatement(ctx.getRawArgument(), ctx.getArgument()); + } + + @Override + protected WhenEffectiveStatement createEffective(final Current stmt, + final ImmutableList> substatements) { + return substatements.isEmpty() ? new EmptyWhenEffectiveStatement(stmt.declared()) + : new RegularWhenEffectiveStatement(stmt.declared(), substatements); } -} \ No newline at end of file +}