              Apache Commons Validator 1.6
                  RELEASE NOTES

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

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 primarily a maintenance release.
All projects are encouraged to update to this release of Apache Commons Validator.

Commons Validator requires Java 1.6 or later.
Main enhancements =================
* Modulus Ten Check Digit Implementation
* Generic CreditCard validation (syntax and checkdigit only; does not check IIN)
* CreditCard validation specification by numeric range
 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-415:  Simplify building new CreditCard validators
o VALIDATOR-413:  Generic CreditCard validation
o VALIDATOR-394:  General Modulus Ten Check Digit Implementation Thanks to Niall Pemberton.

Fixed Bugs:
o VALIDATOR-420:  Query params validator shouldn't accept whitespaces Thanks to Marcin Gasior.
o VALIDATOR-419:  Invalid IPv6 addresses that are IPv4-mapped pass InetAddressValidator validation Thanks to Denis Iskhakov.
o VALIDATOR-418:  UrlValidatorTest: testIsValid() does not run all tests Thanks to Robert McGuigan.
o VALIDATOR-379:  CodeValidator unconditionally trim()s the input string - document the behaviour
o VALIDATOR-387:  Userinfo without colon should be valid in UrlValidator Thanks to Shumpei Akai.
o VALIDATOR-411:  UrlValidator accepts ports above max limit of 16-bit unsigned integer
o VALIDATOR-407:  Generic .shop top level domain is considered invalid
o VALIDATOR-405:  IBANValidator - Costa Rica entry has been updated in SWIFT docs
o VALIDATOR-401:  IBANValidator fails for Seychelles and Ukraine
o VALIDATOR-391:  UrlValidator.isValid throws exception for FILEURLs
                  Fixed code so it handles URLs with no authority field Thanks to Mark E. Scott, Jr. & Jason Loomis.

Changes:
o                 IANA TLD lists: Updated to Version 2017020400, Last Updated Sat Feb  4 07:07:01 2017 UTC
o                 Update to version 73 of SWIFT IBAN list: added BY (Belarus) and IQ (Iraq); fixed Santa Lucia format


Historical list of changes: http://commons.apache.org/proper/commons-validator/changes-report.html

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/
