import java.util.Set;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
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.model.parser.api.YangParserConfiguration;
+import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatementDecorators;
+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.FeatureNamespace;
+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.InferenceException;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder;
import org.slf4j.LoggerFactory;
abstract class AbstractIfFeatureStatementSupport
- extends BaseStatementSupport<IfFeatureExpr, IfFeatureStatement, IfFeatureEffectiveStatement> {
+ extends AbstractStatementSupport<IfFeatureExpr, IfFeatureStatement, IfFeatureEffectiveStatement> {
private static final Logger LOG = LoggerFactory.getLogger(AbstractIfFeatureStatementSupport.class);
private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(
YangStmtMapping.IF_FEATURE)
.build();
- AbstractIfFeatureStatementSupport() {
- super(YangStmtMapping.IF_FEATURE, CopyPolicy.CONTEXT_INDEPENDENT);
+ AbstractIfFeatureStatementSupport(final YangParserConfiguration config) {
+ super(YangStmtMapping.IF_FEATURE, StatementPolicy.contextIndependent(), config);
}
@Override
unresolvedFeatures.add(verifyNotNull(backRef.get(prereq)));
}
- throw new InferenceException(stmt.sourceReference(),
- "Failed to resolve feature references %s in \"%s\"", unresolvedFeatures, stmt.rawArgument());
+ throw new InferenceException(stmt, "Failed to resolve feature references %s in \"%s\"",
+ unresolvedFeatures, stmt.rawArgument());
}
});
}
@Override
protected final IfFeatureStatement createDeclared(final StmtContext<IfFeatureExpr, IfFeatureStatement, ?> ctx,
final ImmutableList<? extends DeclaredStatement<?>> substatements) {
- return new RegularIfFeatureStatement(ctx.getRawArgument(), ctx.getArgument(), substatements);
+ return DeclaredStatements.createIfFeature(ctx.getRawArgument(), ctx.getArgument(), substatements);
}
@Override
- protected final IfFeatureStatement createEmptyDeclared(
- final StmtContext<IfFeatureExpr, IfFeatureStatement, ?> ctx) {
- return new EmptyIfFeatureStatement(ctx.getRawArgument(), ctx.getArgument());
+ protected final IfFeatureStatement attachDeclarationReference(final IfFeatureStatement stmt,
+ final DeclarationReference reference) {
+ return DeclaredStatementDecorators.decorateIfFeature(stmt, reference);
}
@Override
protected final IfFeatureEffectiveStatement createEffective(final Current<IfFeatureExpr, IfFeatureStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
- return substatements.isEmpty() ? new EmptyIfFeatureEffectiveStatement(stmt.declared())
- : new RegularIfFeatureEffectiveStatement(stmt.declared(), substatements);
+ return EffectiveStatements.createIfFeature(stmt.declared(), substatements);
}
}