import org.opendaylight.yangtools.yang.model.api.stmt.ValueRange;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ArgumentUtils;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStatementSupport;
+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.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
max = parseIntegerConstraintValue(ctx, boundaries.next());
// if min larger than max then error
- SourceException.throwIf(ArgumentUtils.compareNumbers(min, max) == 1, ctx.getStatementSourceReference(),
- "Length constraint %s has descending order of boundaries; should be ascending.", singleRange);
- SourceException.throwIf(boundaries.hasNext(), ctx.getStatementSourceReference(),
- "Wrong number of boundaries in length constraint %s.", singleRange);
+ SourceException.throwIf(ArgumentUtils.compareNumbers(min, max) == 1, ctx.sourceReference(),
+ "Length constraint %s has descending order of boundaries; should be ascending.", singleRange);
+ SourceException.throwIf(boundaries.hasNext(), ctx.sourceReference(),
+ "Wrong number of boundaries in length constraint %s.", singleRange);
} else {
max = min;
}
// some of intervals overlapping
InferenceException.throwIf(ranges.size() > 1
&& ArgumentUtils.compareNumbers(min, Iterables.getLast(ranges).upperBound()) != 1,
- ctx.getStatementSourceReference(), "Some of the length ranges in %s are not disjoint", value);
+ ctx.sourceReference(), "Some of the length ranges in %s are not disjoint", value);
ranges.add(ValueRange.of(min, max));
}
@Override
protected LengthStatement createDeclared(final StmtContext<List<ValueRange>, LengthStatement, ?> ctx,
final ImmutableList<? extends DeclaredStatement<?>> substatements) {
- return new RegularLengthStatement(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument(),
- substatements);
+ return new RegularLengthStatement(ctx.getRawArgument(), ctx.getArgument(), substatements);
}
@Override
protected LengthStatement createEmptyDeclared(final StmtContext<List<ValueRange>, LengthStatement, ?> ctx) {
- return new EmptyLengthStatement(ctx.coerceRawStatementArgument(), ctx.coerceStatementArgument());
+ return new EmptyLengthStatement(ctx.getRawArgument(), ctx.getArgument());
}
@Override
- protected LengthEffectiveStatement createEffective(
- final StmtContext<List<ValueRange>, LengthStatement, LengthEffectiveStatement> ctx,
- final LengthStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
- return new RegularLengthEffectiveStatement(declared, substatements);
- }
-
- @Override
- protected LengthEffectiveStatement createEmptyEffective(
- final StmtContext<List<ValueRange>, LengthStatement, LengthEffectiveStatement> ctx,
- final LengthStatement declared) {
- return new EmptyLengthEffectiveStatement(declared);
+ protected LengthEffectiveStatement createEffective(final Current<List<ValueRange>, LengthStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return substatements.isEmpty() ? new EmptyLengthEffectiveStatement(stmt.declared())
+ : new RegularLengthEffectiveStatement(stmt.declared(), substatements);
}
private static Number parseIntegerConstraintValue(final StmtContext<?, ?, ?> ctx, final String value) {
try {
return new BigInteger(value);
} catch (final NumberFormatException e) {
- throw new SourceException(ctx.getStatementSourceReference(), e, "Value %s is not a valid integer", value);
+ throw new SourceException(ctx.sourceReference(), e, "Value %s is not a valid integer", value);
}
}
}
\ No newline at end of file