              Apache Commons Validator 1.7
                  RELEASE NOTES

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

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 7 or later.

Main enhancements
=================

* CreditCard validation specification by numeric range
* DomainValidator instances can be created with instance overrides
* DomainValidator supports overrides of LOCAL TLDs

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

BREAKING CHANGES:

* Now requires Java 7
* N.B. Java 9 changed the way Locales are handled. This affects the output from some Date-related methods, and may cause some tests to break.

DEPENDENCIES
============

* Updates Apache Commons BeanUtils dependency from 1.9.2 to 1.9.4.
 This picks up BEANUTILS-482: Update commons-collections from 3.2.1 to 3.2.2 (CVE-2015-4852).

For the current list of dependencies, please see http://commons.apache.org/validator/dependencies.html

Changes in this version include:

New features:
o VALIDATOR-474:  DomainValidator should allow local overrides
o VALIDATOR-473:  Allow Email- and UrlValidator to use specified DomainValidator
o VALIDATOR-471:  Allow DomainValidator overrides at run-time
o VALIDATOR-423:  Add ISINValidator
o VALIDATOR-455:  Add IBAN validator for VA – Vatican City State Thanks to Eugen Hanussek.
o VALIDATOR-446:  ISSN Validator extract ISSN from EAN-13 Thanks to Alex.

Fixed Bugs:
o VALIDATOR-403:  Accept Discover cards of 17 digits long that start with 6011 Thanks to Tanya.
o VALIDATOR-408:  DISCOVER Card Validation Patterns Thanks to Raj Vaida.
o VALIDATOR-472:  UrlValidator should not be more lax than java.net.URI
o VALIDATOR-283:  URLValidator should check for illegal Hex characters Thanks to RC Johnson.
o VALIDATOR-445:  Inet6Address may also contain a scope id Thanks to devson.
o VALIDATOR-452:  Validation of URL containing IPv4-mapped IPv6 address Thanks to devson.
o VALIDATOR-438:  IBANValidator fails for El Salvador
                  Add definition Thanks to Simon Marti.
o VALIDATOR-434:  Field does not synchronize iteration on synchronized list Thanks to emopers.
o VALIDATOR-437:  Update Apache Commons BeanUtils dependency from 1.9.2 to 1.9.3.
                  This picks up BEANUTILS-482: Update commons-collections from 3.2.1 to 3.2.2 (CVE-2015-4852).
o VALIDATOR-460:  Update Apache Commons BeanUtils dependency from 1.9.3 to 1.9.4
                  This picks up BEANUTILS-520: Mitigate CVE-2014-0114. Thanks to Jeff Schram.
o VALIDATOR-461:  Generic .gmbh top level domain is considered invalid Thanks to Nils Reischmann.
o VALIDATOR-444:  LongValidator: numbers bigger than the maxvalue are Valid Thanks to Martin Scholz.
o VALIDATOR-416:  CreditCardValidator default ctor disagrees with Javadoc
o VALIDATOR-467:  URL validator fails if path starts with double slash and has underscores Thanks to Ivan Larionov.
o VALIDATOR-464:  UrlValidator says "file://bad ^ domain.com/label/test" is valid Thanks to Sebastian Choina.
o VALIDATOR-449:  Leading and trailing spaces in EmailValidator should not be valid Thanks to Frederic Boutin.
o VALIDATOR-302:  EMailValidator: Addresses with leading spaces must not be accepted Thanks to Guido Zockoll.
o VALIDATOR-468:  DomainValidator.getTLDArray does not synch mutable arrays

Changes:
o                 Drop Clirr and Cobertura in favour of JApiCmp and JaCoCo
o                 IANA TLD lists: Updated to Version 2020073100, Last Updated Fri Jul 31 07:07:01 2020 UTC
o VALIDATOR-428:  Update commons digester to 2.1 Thanks to Matthew Zavislak.


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/

Download page: http://commons.apache.org/proper/commons-validator/download_validator.cgi
