import java.util.Iterator;
import java.util.List;
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.RangeEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.RangeStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.UnresolvedNumber;
import org.opendaylight.yangtools.yang.model.api.stmt.ValueRange;
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.spi.meta.InferenceException;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
public final class RangeStatementSupport
- extends AbstractStatementSupport<List<ValueRange>, RangeStatement, RangeEffectiveStatement> {
+ extends BaseStatementSupport<List<ValueRange>, RangeStatement, RangeEffectiveStatement> {
private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
.RANGE)
.addOptional(YangStmtMapping.DESCRIPTION)
}
@Override
- public List<ValueRange> parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String rangeArgument) {
+ public ImmutableList<ValueRange> parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String rangeArgument) {
final List<ValueRange> ranges = new ArrayList<>();
for (final String singleRange : ArgumentUtils.PIPE_SPLITTER.split(rangeArgument)) {
}
@Override
- public RangeStatement createDeclared(final StmtContext<List<ValueRange>, RangeStatement, ?> ctx) {
- return new RangeStatementImpl(ctx);
+ protected RangeStatement createDeclared(final StmtContext<List<ValueRange>, RangeStatement, ?> ctx,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ return new RegularRangeStatement(ctx, substatements);
}
@Override
- public RangeEffectiveStatement createEffective(
- final StmtContext<List<ValueRange>, RangeStatement, RangeEffectiveStatement> ctx) {
- return new RangeEffectiveStatementImpl(ctx);
+ protected RangeStatement createEmptyDeclared(final StmtContext<List<ValueRange>, RangeStatement, ?> ctx) {
+ return new EmptyRangeStatement(ctx);
+ }
+
+ @Override
+ protected RangeEffectiveStatement createEffective(
+ final StmtContext<List<ValueRange>, RangeStatement, RangeEffectiveStatement> ctx,
+ final RangeStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new RegularRangeEffectiveStatement(declared, substatements);
+ }
+
+ @Override
+ protected RangeEffectiveStatement createEmptyEffective(
+ final StmtContext<List<ValueRange>, RangeStatement, RangeEffectiveStatement> ctx,
+ final RangeStatement declared) {
+ return new EmptyRangeEffectiveStatement(declared);
}
@Override