              Apache Commons Validator
                  Version 1.5.1
                 RELEASE NOTES

The Apache Commons Validator team is pleased to announce the release of Apache Commons Validator 1.5.1

Apache Commons Validator provides the building blocks for both client side validation and server side data validation.
It may be used standalone or with a framework like Struts.

This is a maintenance release.
All projects are encouraged to update to this release of Apache Commons Validator.

Commons Validator requires Java 1.6 or later.

IMPORTANT NOTES
===============

BREAKING CHANGES:

 * NONE.

DEPENDENCIES
============
The dependencies for Validator have not changed since the 1.4 release.
For the current list of dependencies, please see http://commons.apache.org/validator/dependencies.html

Changes in this version include:

New features:
o VALIDATOR-351:  DomainValidator - allow access to internal arrays

Fixed Bugs:
o VALIDATOR-392:  Mastercard Series 2 BIN ranges (active from October 2016) added to CreditCardValidator
                  To disable the new ranges, use option MASTERCARD_PRE_OCT2016 or validator MASTERCARD_VALIDATOR_PRE_OCT2016 Thanks to Tim Deboer.
o VALIDATOR-386:  org.apache.commons.validator.routines.DomainValidator.ArrayType is not public Thanks to Auke van Leeuwen.
o VALIDATOR-359:  EmailValidator does not catch invalid email address like dora@.com Thanks to Dora Kinghorn.
o VALIDATOR-384:  EmailValidator does not support escaped quotes in a quoted string Thanks to Kris Babic.

Changes:
o                 Updated to TLD list Version 2016041301, Last Updated Thu Apr 14 07:07:01 2016 UTC


For complete information on Apache Commons Validator, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Apache Commons Validator website:

http://commons.apache.org/proper/commons-validator/