              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

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

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

Enjoy!
-Apache Commons Validator team
