#8110 Validation is now done on the converted value
Added type to AbstractValidator and automatic type checking so sub
classes get the correct type automatically
Added a RangeValidator that work with any type that is Comparable
CompositeValidator no longer extends AbstractValidator as it does
not validate in the same way as AbstractValidator does
Eliminate the redundant method Validator.isValid(). Validator.validate()
does the same but throws an exception including the validation error
message.
Migration:
- replace implementations of isValid() with internalIsValid() in custom
subclasses of AbstractValidator
- use Validator.validate() and catch exceptions rather than call
Validator.isValid()
- note that AbstractField still provides an isValid() method that is
internally based on validate()