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%2Fif_feature%2FIfFeatureStatementSupport.java;h=a1362b9c04bbfc8cee7e6572d877db200ba5294e;hb=223f7753e408b981b0f077d14ede44b8037425c8;hp=f99b0dde45113425e6bef9fae112cfec77801d38;hpb=c8668229ad6e73d5ae03a52f4b87e8e4d2a67c6e;p=yangtools.git diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/if_feature/IfFeatureStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/if_feature/IfFeatureStatementSupport.java index f99b0dde45..a1362b9c04 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/if_feature/IfFeatureStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/if_feature/IfFeatureStatementSupport.java @@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.if_feature; import static com.google.common.base.Verify.verifyNotNull; +import com.google.common.collect.ImmutableList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -17,11 +18,13 @@ import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.YangVersion; 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.IfFeatureEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureExpr; import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.FeatureNamespace; -import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException; import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder; import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder.InferenceAction; @@ -35,8 +38,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public final class IfFeatureStatementSupport extends AbstractStatementSupport> { +public final class IfFeatureStatementSupport + extends BaseStatementSupport { private static final Logger LOG = LoggerFactory.getLogger(IfFeatureStatementSupport.class); private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder( YangStmtMapping.IF_FEATURE) @@ -44,7 +47,7 @@ public final class IfFeatureStatementSupport extends AbstractStatementSupport> stmt) { + public void onFullDefinitionDeclared( + final Mutable stmt) { super.onFullDefinitionDeclared(stmt); final ModelActionBuilder verifyFeatures = stmt.newInferenceAction(ModelProcessingPhase.EFFECTIVE_MODEL); final Map, QName> backRef = new HashMap<>(); - for (QName feature : stmt.getStatementArgument().getReferencedFeatures()) { + for (QName feature : stmt.coerceStatementArgument().getReferencedFeatures()) { backRef.put(verifyFeatures.requiresCtx(stmt, FeatureNamespace.class, feature, ModelProcessingPhase.EFFECTIVE_MODEL), feature); } @@ -92,19 +95,33 @@ public final class IfFeatureStatementSupport extends AbstractStatementSupport ctx) { - return new IfFeatureStatementImpl(ctx); + protected SubstatementValidator getSubstatementValidator() { + return SUBSTATEMENT_VALIDATOR; } @Override - public EffectiveStatement createEffective( - final StmtContext> ctx) { - return new IfFeatureEffectiveStatementImpl(ctx); + protected IfFeatureStatement createDeclared(final StmtContext ctx, + final ImmutableList> substatements) { + return new RegularIfFeatureStatement(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument(), + substatements); } @Override - protected SubstatementValidator getSubstatementValidator() { - return SUBSTATEMENT_VALIDATOR; + protected IfFeatureStatement createEmptyDeclared(final StmtContext ctx) { + return new EmptyIfFeatureStatement(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument()); + } + + @Override + protected IfFeatureEffectiveStatement createEffective( + final StmtContext ctx, + final IfFeatureStatement declared, final ImmutableList> substatements) { + return new RegularIfFeatureEffectiveStatement(declared, substatements); + } + + @Override + protected IfFeatureEffectiveStatement createEmptyEffective( + final StmtContext ctx, + final IfFeatureStatement declared) { + return new EmptyIfFeatureEffectiveStatement(declared); } } \ No newline at end of file