import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
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.stmt.ValueRange;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
import org.opendaylight.yangtools.yang.parser.spi.meta.QNameCacheNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.RangeConstraintEffectiveImpl;
/**
* Utility class for manipulating YANG base and extended types implementation.
}
}
- public static List<RangeConstraint> parseRangeListFromString(final StmtContext<?, ?, ?> ctx,
- final String rangeArgument) {
-
- final Optional<String> description = Optional.empty();
- final Optional<String> reference = Optional.empty();
-
- final List<RangeConstraint> rangeConstraints = new ArrayList<>();
+ public static List<ValueRange> parseRangeListFromString(final StmtContext<?, ?, ?> ctx,
+ final String rangeArgument) {
+ final List<ValueRange> ranges = new ArrayList<>();
for (final String singleRange : PIPE_SPLITTER.split(rangeArgument)) {
- final Iterator<String> boundaries = TWO_DOTS_SPLITTER.splitToList(singleRange).iterator();
+ final Iterator<String> boundaries = TWO_DOTS_SPLITTER.split(singleRange).iterator();
final Number min = parseDecimalConstraintValue(ctx, boundaries.next());
final Number max;
max = parseDecimalConstraintValue(ctx, boundaries.next());
// if min larger than max then error
- InferenceException.throwIf(compareNumbers(min, max) == 1, ctx.getStatementSourceReference(),
+ SourceException.throwIf(compareNumbers(min, max) == 1, ctx.getStatementSourceReference(),
"Range constraint %s has descending order of boundaries; should be ascending", singleRange);
-
SourceException.throwIf(boundaries.hasNext(), ctx.getStatementSourceReference(),
"Wrong number of boundaries in range constraint %s", singleRange);
} else {
}
// some of intervals overlapping
- if (rangeConstraints.size() > 1 && compareNumbers(min, Iterables.getLast(rangeConstraints).getMax()) != 1) {
- throw new InferenceException(ctx.getStatementSourceReference(),
- "Some of the ranges in %s are not disjoint", rangeArgument);
- }
-
- rangeConstraints.add(new RangeConstraintEffectiveImpl(min, max, description, reference));
+ InferenceException.throwIf(ranges.size() > 1
+ && compareNumbers(min, Iterables.getLast(ranges).upperBound()) != 1,
+ ctx.getStatementSourceReference(), "Some of the value ranges in %s are not disjoint",
+ rangeArgument);
+ ranges.add(ValueRange.of(min, max));
}
- return rangeConstraints;
+ return ranges;
}
public static List<ValueRange> parseLengthListFromString(final StmtContext<?, ?, ?> ctx,
// if min larger than max then error
SourceException.throwIf(compareNumbers(min, max) == 1, ctx.getStatementSourceReference(),
- "Length constraint %s has descending order of boundaries; should be ascending.",
- singleRange);
+ "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);
} else {
&& compareNumbers(min, Iterables.getLast(ranges).upperBound()) != 1,
ctx.getStatementSourceReference(), "Some of the length ranges in %s are not disjoint",
lengthArgument);
-
ranges.add(ValueRange.of(min, max));
}