@Override
	public <E> ValidationError<E> validate(E rootEntity, Annotation annotation, Object objectValue) {
		if (objectValue == null) {
			return null;
		}
		if (annotation.annotationType() != DecimalMin.class && annotation.annotationType() != Min.class) {
			System.out.println(annotation.annotationType());
			throw new RuntimeException(
					"Internal error. DecimalMinValidator called with wrong type.");
		}
		BigDecimal minValue = null;
		boolean inclusive = true;
		if (annotation.annotationType() == DecimalMin.class) {  
			DecimalMin decimalMinConstraint = (DecimalMin) annotation;
			minValue = new BigDecimal(decimalMinConstraint.value());
			inclusive = decimalMinConstraint.inclusive();
		} else if (annotation.annotationType() == Min.class) {
			Min decimalMinConstraint = (Min) annotation;
			minValue = new BigDecimal(decimalMinConstraint.value());
		}
		
		BigDecimal value = null;
		try {
			value = getBigDecimalValue(objectValue);
		} catch (ParseException e) {
			ValidationError<E> error = new ValidationError<E>();
			error.setMessage("Unable to parse value for DecimalMin. value="
					+ objectValue);
			return error;
		}
		if (value.compareTo(minValue) < 0) {
			ValidationError<E> error = new ValidationError<E>();
			error.setMessage("Value less than "
					+ minValue);
			return error;
		}
		if (!inclusive && value.compareTo(minValue) == 0) {
			ValidationError<E> error = new ValidationError<E>();
			error.setMessage("Value must be greater than "
					+ minValue);
			return error;
		}
		return null;
	}