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;
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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public final class IfFeatureStatementSupport extends AbstractStatementSupport<IfFeatureExpr, IfFeatureStatement,
- EffectiveStatement<IfFeatureExpr, IfFeatureStatement>> {
+public final class IfFeatureStatementSupport
+ extends BaseStatementSupport<IfFeatureExpr, IfFeatureStatement, IfFeatureEffectiveStatement> {
private static final Logger LOG = LoggerFactory.getLogger(IfFeatureStatementSupport.class);
private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
YangStmtMapping.IF_FEATURE)
private static final IfFeatureStatementSupport INSTANCE = new IfFeatureStatementSupport();
private IfFeatureStatementSupport() {
- super(YangStmtMapping.IF_FEATURE);
+ super(YangStmtMapping.IF_FEATURE, CopyPolicy.CONTEXT_INDEPENDENT);
}
public static IfFeatureStatementSupport getInstance() {
}
@Override
- public void onFullDefinitionDeclared(final Mutable<IfFeatureExpr, IfFeatureStatement,
- EffectiveStatement<IfFeatureExpr, IfFeatureStatement>> stmt) {
+ public void onFullDefinitionDeclared(
+ final Mutable<IfFeatureExpr, IfFeatureStatement, IfFeatureEffectiveStatement> stmt) {
super.onFullDefinitionDeclared(stmt);
final ModelActionBuilder verifyFeatures = stmt.newInferenceAction(ModelProcessingPhase.EFFECTIVE_MODEL);
final Map<Prerequisite<?>, 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);
}
}
@Override
- public IfFeatureStatement createDeclared(final StmtContext<IfFeatureExpr, IfFeatureStatement, ?> ctx) {
- return new IfFeatureStatementImpl(ctx);
+ protected SubstatementValidator getSubstatementValidator() {
+ return SUBSTATEMENT_VALIDATOR;
}
@Override
- public EffectiveStatement<IfFeatureExpr, IfFeatureStatement> createEffective(
- final StmtContext<IfFeatureExpr, IfFeatureStatement,
- EffectiveStatement<IfFeatureExpr, IfFeatureStatement>> ctx) {
- return new IfFeatureEffectiveStatementImpl(ctx);
+ protected IfFeatureStatement createDeclared(final StmtContext<IfFeatureExpr, IfFeatureStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularIfFeatureStatement(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument(),
+ substatements);
}
@Override
- protected SubstatementValidator getSubstatementValidator() {
- return SUBSTATEMENT_VALIDATOR;
+ protected IfFeatureStatement createEmptyDeclared(final StmtContext<IfFeatureExpr, IfFeatureStatement, ?> ctx) {
+ return new EmptyIfFeatureStatement(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument());
+ }
+
+ @Override
+ protected IfFeatureEffectiveStatement createEffective(
+ final StmtContext<IfFeatureExpr, IfFeatureStatement, IfFeatureEffectiveStatement> ctx,
+ final IfFeatureStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new RegularIfFeatureEffectiveStatement(declared, substatements);
+ }
+
+ @Override
+ protected IfFeatureEffectiveStatement createEmptyEffective(
+ final StmtContext<IfFeatureExpr, IfFeatureStatement, IfFeatureEffectiveStatement> ctx,
+ final IfFeatureStatement declared) {
+ return new EmptyIfFeatureEffectiveStatement(declared);
}
}
\ No newline at end of file