in xmlschema-walker/src/main/java/org/apache/ws/commons/schema/docpath/XmlSchemaElementValidator.java [514:555]
private static void rangeCheck(String name, BigDecimal value,
Map<XmlSchemaRestriction.Type, List<XmlSchemaRestriction>> facets,
XmlSchemaRestriction.Type rangeType) throws ValidationException {
final List<XmlSchemaRestriction> rangeFacets = facets.get(rangeType);
boolean satisfied = true;
BigDecimal compareTo = null;
if ((rangeFacets != null) && !rangeFacets.isEmpty()) {
for (XmlSchemaRestriction rangeFacet : rangeFacets) {
compareTo = getBigDecimalOf(rangeFacet.getValue());
final int comparison = value.compareTo(compareTo);
switch (rangeType) {
case EXCLUSIVE_MIN:
satisfied = (comparison > 0);
break;
case INCLUSIVE_MIN:
satisfied = (comparison >= 0);
break;
case EXCLUSIVE_MAX:
satisfied = (comparison < 0);
break;
case INCLUSIVE_MAX:
satisfied = (comparison <= 0);
break;
default:
throw new ValidationException("Cannot perform a range check of type " + rangeType);
}
if (!satisfied) {
break;
}
}
}
if (!satisfied) {
throw new ValidationException(name + " value \"" + value + "\" violates the " + rangeType
+ " restriction of " + compareTo + ".");
}
}