private static void rangeCheck()

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 + ".");
        }
    }