<?xml version="1.0"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<!--
This file is used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the
release process easy :-).

2.  Do a Jira search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits.  Set the project.properties' maven.changelog.range
property to the number of days since the last release.


To generate the release notes from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

then tweak the formatting if necessary
and commit

The <action> type attribute can be add,update,fix,remove.
-->

<document xmlns="http://maven.apache.org/changes/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/plugins/maven-changes-plugin/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Release Notes</title>
  </properties>

    <!-- NOTE:
    The description below is specially formatted so as to improve the layout of the generated release notes:
    The parsing process removes all line feeds, replacing them with a single space.
    The Velocity template in src/changes has been enhanced to replace pairs of adjacent spaces
    with a new-line in the release notes. (These spaces are ignored when displaying HTML).
    If the output is not quite correct, check for invisible trailing spaces!

    N.B. The release notes template groups actions by type, and only extracts data for the current release.
    The changes report outputs actions in the order they appear in this file.

    To regenerate the release notes:
    mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

    Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.
     -->

  <body>
  <release version="1.8" date="20YY-MM-DD" description="">
   <!-- FIX -->
    <action type="fix" dev="ggregory" due-to="Gennaro Napolitano">
      Update Javadoc for InetAddressValidator isValid #76
    </action>
   <!-- ADD -->
    <action issue="VALIDATOR-477" type="update" dev="sebb">
      Add IBAN validator for LY – Libya
    </action>
    <action  type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
      Add github/codeql-action.
    </action>
    <!-- UPDATE -->
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Bump Java from 7 to 8.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
      Bump actions/cache from 2 to 3.0.5 #71.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot">
      Bump actions/checkout from 2.3.1 to 3, #38, #47, #70.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
      Bump actions/setup-java from 1.4.0 to 3, #42, #72.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
      Bump junit from 4.13 to 4.13.2 #44.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot">
      Bump maven-pmd-plugin from 3.13.0 to 3.17.0 #69, #77.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Bump commons-parent from 52 to 53.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Bump japicmp-maven-plugin from 0.15.3 to 0.15.7.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot">
      Bump maven-antrun-plugin from 3.0.0 to 3.1.0 #74.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Bump commons-csv from 1.6 to 1.9.0.
    </action>
  </release>
  
  <release version="1.7" date="2020-08-07" description="
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
  ">
    <action type="update" dev="sebb">
    Drop Clirr and Cobertura in favour of JApiCmp and JaCoCo
    </action>
    <action issue="VALIDATOR-474" type="add" dev="sebb">
    DomainValidator should allow local overrides
    </action>
    <action issue="VALIDATOR-473" type="add" dev="sebb">
    Allow Email- and UrlValidator to use specified DomainValidator
    </action>
    <action issue="VALIDATOR-403" type="fix" dev="sebb" due-to="Tanya">
    Accept Discover cards of 17 digits long that start with 6011
    </action>
    <action issue="VALIDATOR-408" type="fix" dev="sebb" due-to="Raj Vaida">
    DISCOVER Card Validation Patterns
    </action>
    <action issue="VALIDATOR-472" type="fix" dev="sebb">
    UrlValidator should not be more lax than java.net.URI
    </action>
    <action issue="VALIDATOR-283" type="fix" dev="sebb" due-to="RC Johnson">
    URLValidator should check for illegal Hex characters
    </action>
    <action issue="VALIDATOR-445" type="fix" dev="sebb" due-to="devson">
    Inet6Address may also contain a scope id
    </action>
    <action issue="VALIDATOR-452" type="fix" dev="sebb" due-to="devson">
    Validation of URL containing IPv4-mapped IPv6 address
    </action>
    <action issue="VALIDATOR-471" type="add" dev="sebb">
    Allow DomainValidator overrides at run-time
    </action>
    <action issue="VALIDATOR-438" type="fix" dev="sebb" due-to="Simon Marti">
    IBANValidator fails for El Salvador
    Add definition
    </action>
    <action type="update" dev="sebb">
    IANA TLD lists: Updated to Version 2020073100, Last Updated Fri Jul 31 07:07:01 2020 UTC
    </action>
    <action issue="VALIDATOR-423" type="add" dev="sebb">
    Add ISINValidator
    </action>
    <action issue="VALIDATOR-428" type="update" dev="pschumacher" due-to="Matthew Zavislak">
    Update commons digester to 2.1
    </action>
    <action issue="VALIDATOR-434" type="fix" dev="kinow" due-to="emopers">
    Field does not synchronize iteration on synchronized list
    </action>
    <action issue="VALIDATOR-437" type="fix" dev="ggregory">
    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).
    </action>
    <action issue="VALIDATOR-460" type="fix" dev="ggregory" due-to="Jeff Schram">
    Update Apache Commons BeanUtils dependency from 1.9.3 to 1.9.4
    This picks up BEANUTILS-520: Mitigate CVE-2014-0114.
    </action>
    <action issue="VALIDATOR-455" type="add" dev="sebb" due-to="Eugen Hanussek">
    Add IBAN validator for VA – Vatican City State
    </action>
    <action issue="VALIDATOR-461" type="fix" dev="sebb" due-to="Nils Reischmann">
    Generic .gmbh top level domain is considered invalid
    </action>
    <action issue="VALIDATOR-444" type="fix" dev="sebb" due-to="Martin Scholz">
    LongValidator: numbers bigger than the maxvalue are Valid
    </action>
    <action issue="VALIDATOR-416" type="fix" dev="sebb">
    CreditCardValidator default ctor disagrees with Javadoc
    </action>
    <action issue="VALIDATOR-446" type="add" dev="sebb" due-to="Alex">
    ISSN Validator extract ISSN from EAN-13
    </action>
    <action issue="VALIDATOR-467" type="fix" dev="sebb" due-to="Ivan Larionov">
    URL validator fails if path starts with double slash and has underscores
    </action>
    <action issue="VALIDATOR-464" type="fix" dev="sebb" due-to="Sebastian Choina">
    UrlValidator says "file://bad ^ domain.com/label/test" is valid
    </action>
    <action issue="VALIDATOR-449" type="fix" dev="sebb" due-to="Frederic Boutin">
    Leading and trailing spaces in EmailValidator should not be valid
    </action>
    <action issue="VALIDATOR-302" type="fix" dev="sebb" due-to="Guido Zockoll">
    EMailValidator: Addresses with leading spaces must not be accepted
    </action>
    <action issue="VALIDATOR-468" type="fix" dev="sebb">
    DomainValidator.getTLDArray does not synch mutable arrays
    </action>
  </release>

  <release version="1.6" date="2017-02-21" description="
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
  ">
    <action issue="VALIDATOR-420" type="fix" dev="sebb" due-to="Marcin Gasior">
    Query params validator shouldn't accept whitespaces
    </action>
    <action issue="VALIDATOR-419" type="fix" dev="sebb" due-to="Denis Iskhakov">
    Invalid IPv6 addresses that are IPv4-mapped pass InetAddressValidator validation
    </action>
    <action issue="VALIDATOR-418" type="fix" dev="britter" due-to="Robert McGuigan">
    UrlValidatorTest: testIsValid() does not run all tests
    </action>
    <action issue="VALIDATOR-415" type="add" dev="sebb">
    Simplify building new CreditCard validators
    </action>
    <action issue="VALIDATOR-413" type="add" dev="sebb">
    Generic CreditCard validation
    </action>
    <action issue="VALIDATOR-379" type="fix" dev="sebb">
    CodeValidator unconditionally trim()s the input string - document the behavior
    </action>
    <action issue="VALIDATOR-387" type="fix" dev="sebb" due-to="Shumpei Akai">
    Userinfo without colon should be valid in UrlValidator
    </action>
    <action issue="VALIDATOR-394" type="add" dev="sebb" due-to="Niall Pemberton">
    General Modulus Ten Check Digit Implementation
    </action>
    <action issue="VALIDATOR-411" type="fix" dev="sebb">
    UrlValidator accepts ports above max limit of 16-bit unsigned integer
    </action>
    <action type="update" dev="sebb">
    IANA TLD lists: Updated to Version 2017020400, Last Updated Sat Feb  4 07:07:01 2017 UTC
    </action>
    <action type="update" dev="sebb">
    Update to version 73 of SWIFT IBAN list: added BY (Belarus) and IQ (Iraq); fixed Santa Lucia format
    </action>
    <action issue="VALIDATOR-407" type="fix" dev="sebb">
    Generic .shop top level domain is considered invalid
    </action>
    <action issue="VALIDATOR-405" type="fix" dev="sebb">
    IBANValidator - Costa Rica entry has been updated in SWIFT docs
    </action>
    <action issue="VALIDATOR-401" type="fix" dev="britter">
    IBANValidator fails for Seychelles and Ukraine
    </action>
    <action issue="VALIDATOR-391" type="fix" dev="sebb" due-to="Mark E. Scott, Jr. &amp; Jason Loomis">
    UrlValidator.isValid throws exception for FILEURLs
    Fixed code so it handles URLs with no authority field
    </action>
  </release>
  <release version="1.5.1" date="2016-04-30" description="
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
  ">
    <action issue="VALIDATOR-392" type="fix" dev="sebb" due-to="Tim Deboer">
    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
    </action>
    <action issue="VALIDATOR-386" type="fix" dev="sebb" due-to="Auke van Leeuwen">
    org.apache.commons.validator.routines.DomainValidator.ArrayType is not public
    </action>
    <action issue="VALIDATOR-359" type="fix" dev="sebb" due-to="Dora Kinghorn">
    EmailValidator does not catch invalid email address like dora@.com
    </action>
    <action issue="VALIDATOR-384" type="fix" dev="sebb" due-to="Kris Babic">
    EmailValidator does not support escaped quotes in a quoted string
    </action>
    <action issue="VALIDATOR-351" type="add" dev="sebb">
    DomainValidator - allow access to internal arrays
    </action>
    <action type="update" dev="sebb">
    Updated to TLD list Version 2016042500, Last Updated Mon Apr 25 07:07:01 2016 UTC
    </action>
  </release>
  <release version="1.5.0" date="2015-11-24" description="
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
  ">
    <action issue="VALIDATOR-364" type="fix" dev="sebb" due-to="teo bran">
    Email Validator does not support quoted/escaped character in the local part of the email address
    </action>
    <action issue="VALIDATOR-381" type="fix" dev="ggregory">
    Update commons-collections from 3.2.1 to 3.2.2.
    </action>
    <action issue="VALIDATOR-363" type="fix" dev="sebb">
    UrlValidator rejects path having two or more successive dots
    </action>
    <action issue="VALIDATOR-330" type="fix" dev="sebb">
    IBANCheckDigit.isValid() returns True for some invalid IBANs
    </action>
    <action issue="VALIDATOR-380" type="fix" dev="sebb">
    UrlValidator does not allow for optional port digits
    </action>
    <action issue="VALIDATOR-332" type="update" dev="sebb">
    IIBANCheckDigit.calculate does not enforce initial checksum value
    Checkdigit field is now unconditionally set to "00" to ensure correct generation
    </action>
    <action issue="VALIDATOR-353" type="update" dev="sebb">
    UrlValidator does not allow for optional userinfo in the authority
    </action>
    <action issue="VALIDATOR-321" type="add" dev="sebb">
    ISSN validator and converter to EAN-13
    </action>
    <action issue="VALIDATOR-325" type="add" dev="sebb">
    Improve IBAN validation with format checks
    </action>
    <action issue="VALIDATOR-369" type="fix" dev="sebb">
    DateValidatorTest.testCompare() fails with GMT-12
    </action>
    <action issue="VALIDATOR-372" type="add" dev="sebb">
    Validate 19 digit VPay (VISA)
    </action>
    <action issue="VALIDATOR-375" type="fix" dev="sebb">
    UrlValidator fails on IPv6 URL
    </action>
    <action issue="VALIDATOR-361" type="add" dev="sebb">
    UrlValidator rejects new gTLDs with more than 4 characters
    Added unit test to show that this has been fixed
    </action>
    <action issue="VALIDATOR-341" type="add" dev="sebb">
    Make TLD list configurable;
    both generic and country-code now support addition and removal
    </action>
    <action issue="VALIDATOR-374" type="fix">
    Email Validator : .school domain is being rejected
    Add Unit test to show it has been fixed
    </action>
    <action issue="VALIDATOR-376" type="fix" dev="rgoers">
      Revert EmailValidator to handle top level domains to the behavior prior to VALIDATOR-273. Allow an optional
      behavior to allow the behavior VALIDATOR-273 implemented. Note that this is a behavioral change for users
      of version 1.4.1, but not for anyone upgrading from a release prior to that.
    </action>
    <action issue="VALIDATOR-371" type="remove">Drop the Javascript code entirely</action>
    <action issue="VALIDATOR-362" dev="britter" type="fix" due-to="Teo Bran">
      Local part of the email address should not be longer than 64 bytes
    </action>
    <action issue="VALIDATOR-356" dev="sebb" type="fix" >
      IDN.toASCII drops trailing dot in Java 6 &amp; 7
    </action>
    <action issue="VALIDATOR-355" dev="britter" type="update" >
      Update to Java 6
    </action>
  </release>

  <release version="1.4.1" date="2014-01-13" description="1.4 Maintenance release">
    <action issue="VALIDATOR-342" dev="sebb" type="fix" due-to="Donal Murtagh">
     URLValidator returns false for http://example.rocks
    </action>
    <action issue="VALIDATOR-235" dev="sebb" type="fix" due-to="Brian Preuß">
     UrlValidator rejects url with Unicode characters in domain label or TLD
    </action>
    <action issue="VALIDATOR-339" dev="sebb" type="fix" due-to="Alex Blume">
     URLValidator fails validating domain names with a trailing period, which are valid.
    </action>
    <action issue="VALIDATOR-306" dev="sebb" type="fix" due-to="Jukka Timonen">
     DomainValidator accepts labels longer than 63 chars and domain name lengths exceeding 255 chars
    </action>
    <action issue="VALIDATOR-349" dev="sebb" type="update">
     TLD tables should be pre-sorted
    </action>
    <action issue="VALIDATOR-290" dev="sebb" type="update" due-to="Alexander Rytov">
     Create new url validation using rfc3986 and IDN - added new test
    </action>
    <action issue="VALIDATOR-350" dev="sebb" type="fix">
     Should "x.root" validate as a domain name?
     Removed "root" from TLD list.
     Also "um" and "yu" as they are currently "Not assigned"
    </action>
    <action issue="VALIDATOR-308" dev="sebb" type="fix" due-to="Til Boerner">
      Logical errors in util.Flags affecting check of multiple flags as well as flag 64
    </action>
    <action issue="VALIDATOR-344" dev="sebb" type="fix" >
      AbstractCheckDigit class does not fully test invalid strings
      Fix up the testCalculateInvalid() invalid method to allow for
      either invalid checksum or syntax (CheckDigitException) error
      when testing the entries in the invalid array.
    </action>
    <action issue="VALIDATOR-297" dev="sebb" type="fix">
      Punycode url is not valid
      Top-level domain regex matching was wrong; did not allow embedded "-" as per RFC2396
    </action>
    <action issue="VALIDATOR-334" dev="sebb" type="update">
      UrlValidator: isValidAuthority() returning true when supplied authority validator fails
    </action>
    <action issue="VALIDATOR-309" dev="sebb" type="fix" due-to="Rashid Rashidov">
      UrlValidator does not validate uppercase URL schemes
    </action>
    <action issue="VALIDATOR-343" dev="sebb" type="fix" due-to="Sam Cooley">
      Doc URL update for broken link
    </action>
    <action issue="VALIDATOR-346" dev="sebb" type="fix" >
      SedolCheckDigit fails to reject invalid (non-numeric) check digits
    </action>
    <action issue="VALIDATOR-345" dev="sebb" type="fix" >
      ISINCheckDigit fails to reject invalid (non-numeric) check digits
    </action>
    <action issue="VALIDATOR-336" dev="sebb" type="fix" >
      CUSIPCheckDigit thinks invalid CUSIP is valid
    </action>
    <action issue="VALIDATOR-348" dev="sebb" type="update" >
      Update TLD list to latest version (Version 2014123000)
    </action>
    <action issue="VALIDATOR-347" dev="sebb" type="fix" >
      toLowerCase() method is Locale-sensitive and should not be used
      Fixed 4 instances in DomainValidator
    </action>
    <action issue="VALIDATOR-307" dev="adrianc" type="update">
      isValid checks if the given address is only IPV4 address and not IPV6
    </action>
    <action  issue="VALIDATOR-337" dev="britter" type="update" due-to="Ben Ripkens" >
      Deprecate the JS part of commons validator
    </action>
    <action issue="VALIDATOR-266" dev="britter" type="fix" due-to="Bruce Collie" >
      DomainValidator uses an O(n) method where an O(1) would be more appropriate
    </action>
    <action issue="VALIDATOR-273" dev="britter" type="fix" due-to="Chris Lee" >
      EmailValidator does not support mailboxes at TLDs
    </action>
    <action  issue="VALIDATOR-317" dev="britter" type="fix" due-to="Arūnas Bendoraitis" >
      DomainValidator missing sTLD - "xxx"
    </action>
    <action issue="VALIDATOR-327" dev="britter" type="fix" due-to="Arūnas Bendoraitis" >
      Missing sx tld.
    </action>
    <action issue="VALIDATOR-305" dev="britter" type="fix" due-to="Arūnas Bendoraitis" >
      Some TLDs are missing from DomainValidator
    </action>
    <action issue="VALIDATOR-331" dev="sebb" type="fix">
      IBANCheckDigitTest.createInvalidCodes(String[] codes) uses wrong values
    </action>
  </release>

  <release version="1.4.0" date="2012-02-03" description="JDK 1.4 (minimum)">
    <action dev="simonetripodi" type="fix" issue="VALIDATOR-301" due-to="Jacob Zwiers">
      CheckStyle and FindBug Issues - inner classes and key sets
    </action>
    <action dev="nick" type="fix" issue="VALIDATOR-293" due-to="Will Glass-Husain">
      Email validation fails with dash or hyphen at end of local address
    </action>
    <action dev="nick" type="fix" issue="VALIDATOR-292">
      @localhost and @localhost.localdomain email addresses aren't correctly detected as valid
    </action>
    <action dev="nick" type="fix" issue="VALIDATOR-289" due-to="GM">
      UrlValidator.isValid does not properly validate *.travel domains
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-288" due-to="feroze daud">
      UrlValidator does not validate URL with simple domains (eg: http://hostname )
    </action>
    <action dev="nick" type="fix" issue="VALIDATOR-286">
      isValid method for EmailValidator should return false for domain with special characters only
    </action>
    <action dev="nick" type="fix" issue="VALIDATOR-282">
      formatDate(String value, Locale locale) in GenericTypeValidator uses DateFormat.SHORT instead of DateFormat.DEFAULT
    </action>
    <action dev="nick" type="fix" issue="VALIDATOR-276">
      isValidURL call returns false for file scheme/protocol when URL is correct
    </action>
    <action dev="nick" type="fix" issue="VALIDATOR-271" due-to="Ralf Hauser">
      gmail testing addresses do not validate
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-275" due-to="Adam Gordon">
      EmailValidator.isValid(String) follows RFC822 but violates RFC1034
    </action>
    <action dev="bspeakmon" type="update" issue="VALIDATOR-252" due-to="Makoto Uchino">
      Performance improvement of DomainValidator by change the regular expression
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-251" due-to="Meenal Gupta">
      url with brackets is not validated thru URLvalidator class.
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-250">
      Banking CheckDigit implementations: ABA, CUSIP, IBAN, ISIN and Sedol
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-249">
      Add Diners card validation to CreditCardValidator
    </action>
    <action dev="bspeakmon" type="update" issue="VALIDATOR-248" due-to="Sergey Nebolsin">
      Add an option to allow 'localhost' as a valid hostname part in the URL
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-247" due-to="bspeakmon">
      Move CreditCardValidator to routines package and refactor to use new CodeValidator
    </action>
    <action dev="bspeakmon" type="update" issue="VALIDATOR-242">
      Move EmailValidator to routines package
    </action>
    <action dev="bspeakmon" type="update" issue="VALIDATOR-241" due-to="niallp">
      New InetAdress Validator implementation
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-240" due-to="Webb Morris">
      Support the 65 prefix for Discover Card
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-234" due-to="Paul Benedict">
      Create 1.4 DTD
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-233" due-to="Paul Benedict">
      Switch to using Version 0.4.3 of the Dojo Compressor from the maven repo
    </action>
    <action dev="bspeakmon" type="update" issue="VALIDATOR-232" due-to="Paul Benedict">
      Add script attribute to control script generation
    </action>
    <action dev="nick" type="fix" issue="VALIDATOR-300" due-to="Jacob Zwiers">
      clirr Report - EmailValidator.isValidIpAddress() argument type change
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-226" due-to="Lian Ort">
      Null-Stream input to ValidatorResources leads to MalformedURLExceptions
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-224" due-to="Hasan Turksoy">
      validatorUtilities.js - replace colon characters in the function name (JSF/Shale)
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-223" due-to="Hasan Turksoy">
      Move the trim() function from validateRequired.js to validateUtilities.js
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-220" due-to="Adam Gordon">
      EmailValidator fails with ArrayIndexOutOfBoundsException on domain names longer than 10 segments
    </action>
    <action dev="bspeakmon" type="fix" issue="VALIDATOR-218" due-to="Stephen Chu">
      UrlValidator fail when path contains "(" / ")"
    </action>
    <action dev="bspeakmon" type="fix" issue="VALIDATOR-216" due-to="Kenji Matsuoka">
      UrlValidator rejects top-level domains (TLDs) with more than 4 characters
    </action>
    <action dev="niallp" type="add" issue="VALIDATOR-215">
      New generic CodeValidator that validates format, length and Check Digit for a code
    </action>
    <action dev="niallp" type="add" issue="VALIDATOR-214">
      New Regular Expression validator using JDK 1.4's Regex
    </action>
    <action dev="niallp" type="add" issue="VALIDATOR-213">
      Factor out Check Digit logic into separate implementations
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-211">
      Upgrade to Digester 1.8
    </action>
    <action dev="bspeakmon" type="update" issue="VALIDATOR-203" due-to="bayard">
      Refactor UrlValidator - especially the line 370-ish.
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-197">
      Copy remaining Validation Routines to the new routines package
    </action>
    <action dev="bspeakmon" type="update" issue="VALIDATOR-193" due-to="Matthias Wessendorf">
      Removing ORO dep. from GenericValidator
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-192" due-to="Matthias Wessendorf">
      Adding ISBNValidator to GenericValidator
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-191" due-to="Matthias Wessendorf">
      Remove the dependency on Jakarta ORO (move to JDK 1.4 regular expression support)
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-188" due-to="Gabriel Belingueres">
      Extend ISBN validator to support smooth transition to ISBN-13 / EAN-13 standard
    </action>
    <action dev="niallp" type="update">
      JDK 1.4 - change minimum dependency for validator to be JDK 1.4 (was 1.3). Primary reason
      for this is to use JDK 1.4+ built in regular expression support and remove the dependency
      on Jakarta ORO.
    </action>
  </release>

  <release version="1.3.1" date="2006-11-28" description="1.3 Maintenance Release.">
    <action dev="niallp" type="update">
      Dependencies for Validator 1.3.1 are unchanged since the 1.3.0 release.
      N.B. Jakarta ORO has now been marked as an optional dependency
      in the project.xml as it is only required by the Email, URL and Regular Expression validations.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-208" due-to="Leo Asanov">
    JavaScript function jcv_isFieldPresent() causes error in IE5 using "undefined".
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-190">
    EmailValidator allows control characters (ASCII 0-31 and 127).
    <dueto name="Cott"/>
    <dueto name="Gabriel Belingueres"/>
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-210" due-to="Neil Sherman">
    JavaScript Causes HTML Page to Contain Illegal HTML.
    </action>
    <action dev="niallp" type="update" issue="VALIDATOR-209" due-to="Craig McClanahan">
    Additional constructor for ValidatorResources that takes URL["> instead of String[">.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-195" due-to="Vijay Pandey">
    Fix loading of Digester rules for custom ValidatorResources implementations.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-19" due-to="Masahiro Honda">
    Validator incorrectly storing itself under the FORM_PARAM key rather than
    the Form.
    </action>
    <action dev="bayard" type="fix" issue="VALIDATOR-204" due-to="Ben">
    Urlvalidator returns false for a valid URL containing an underscore.
    </action>
    <action dev="bayard" type="fix" issue="VALIDATOR-202" due-to="Ben">
    Urlvalidator fails with an ArrayIndexOutOfBoundsException.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-199" due-to="Tim Mulligan">
    The ant build.xml doesn't include validator_1_1_3.dtd in the jar.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-198" due-to="Matthias Fischer">
    Example does not compile using ant build script.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-189" due-to="Thomas Bailey">
    Validating indexed properties fails when null.
    </action>
    <action dev="martinc" type="fix" issue="VALIDATOR-89" due-to="Takayuki Kaneko">
    Fix a thread safety issue in parameter initialization.
    </action>
  </release>

  <release version="1.3.0" date="2006-03-24" description="1.3 Release - New 'routines' package plus Bug fixes for 1.2.0">
    <action dev="niallp" type="fix" issue="VALIDATOR-49" due-to="bart vandendriessche">
     ValidatorResult only contains last run dependency for the field.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-20" due-to="Rostislav Palivoda">
     Validator argument - resource="false" ignored for arg0 - arg3.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-60" due-to="Yugandhar">
     Change JavaScript validators to cater for disabled being undefined (an issue in Netscape 4.7).
    </action>
    <action dev="niallp" type="add">
     <p>Add new routines package containing standard validations - first
      step in the process of clearly separating standard validation
      functions which can be used independantly, from the framework
      aspect of Commons Validator.</p>
     <p>New validators added for Date, Time, Calendar, Byte, Short,
      Integer, Long, Float, Double, BigInteger, BigDecimal,
      Currency and Percent.</p>
     <p>See <a href="apidocs/org/apache/commons/validator/routines/package-summary.html">
      Routines Package Javadocs</a></p>
    </action>
    <action dev="niallp" type="add" issue="VALIDATOR-30">
     Deprecate ValidatorResult's getActionMap() and add getActions()
     method to provide an Iterator of the set of action names.
    </action>
    <action dev="niallp" type="add" issue="VALIDATOR-142" due-to="Michael Rush">
     Use the Dojo/Rhino JavaScript compressor to created compressed
     versions of the static JavaScript files. Additionally create single
     file distros of all the static JavaScript in un-compressed and compressed
     format. See Dojo/Rhino Compressor.
    </action>
    <action dev="niallp" type="fix">
     Prefix remaining JavaScript utility methods with "jcv_" to reduce
     the likelihood of clashes with other libraries - validator still
     needs to be properly namespaced (as per Bug 38184).
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-163">
     Change JavaScript validators so that they don't fail when the
     field is not present on the form.
    <dueto name="Andrew Berridge"/>
    <dueto name="Paul Benedict"/>
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-25" due-to="Alan Olmanson">
     Fix min/max length validation for different line endings.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-50" due-to="Stephanie Codron">
     Fix email validator to not allow spaces at the end of the user
     component or start of the domain component.
    </action>
    <action dev="niallp" type="add" issue="VALIDATOR-77" due-to="Neale">
     Added validator_1_3_0.dtd and changed form rules so that a minimum
     of one field is no longer required (i.e. changed (field+) to (field*)
     for a form).
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-109" due-to="Philippe Mouawad">
     Resolve issue in JavaScript validation when the prototype library
     is used.
    </action>
    <action dev="niallp" type="fix">
     Re-factor JavaScript error handling into a common method and only
     set focus on fields which are not 'hidden' type or hidden by CSS.
    <fixes issue="VALIDATOR-97"/>
    <fixes issue="VALIDATOR-81"/>
    <dueto name="Matt Bathje"/>
    <dueto name="Paul Benedict"/>
    </action>
    <action dev="niallp" type="fix">
     Remove static Log instances to avoid problems if deployed via a shared
     classloader in a container. See
     <a href="http://wiki.apache.org/commons/Logging/StaticLog">here</a>
     for more details.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-39">
     Reverse change for to Credit Card Validator for visa card blue in France.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-18" due-to="Kristian L. Petersen">
     Fix JavaScript validation for Internet Explorer 5.0.
    </action>
  </release>

  <release version="1.2.0" date="2005-11-15"
     description="1.2 Release - see http://wiki.apache.org/commons/ValidatorVersion120">
    <action dev="dgraham" type="add" issue="VALIDATOR-145">
    Added ISBNValidator for validating book numbers.
    </action>
    <action dev="dgraham" type="update">
    Upgrade dependency versions to
    <a href="http://commons.apache.org/beanutils/">Commons BeanUtils</a> 1.7.0,
    <a href="http://commons.apache.org/digester/">Commons Digester</a> 1.6
    and <a href="http://commons.apache.org/logging/">Commons Logging</a> 1.0.4.
    Remove dependency on
    <a href="http://commons.apache.org/beanutils/">Commons Collections</a>
    (BeanUtils 1.7.0 has removed its dependency on Collections by including the
     few Collections classes required in its distribution).
    </action>
    <action dev="husted" type="add" issue="VALIDATOR-135">
    Add support for min or max numeric values.
    </action>
    <action dev="husted" type="add" issue="VALIDATOR-137">
    Allow validators to register errors for multiple fields.
    </action>
    <action dev="husted" type="fix" issue="VALIDATOR-85">
    Fixed EmailValidator failing on valid email addresses.
    </action>
    <action dev="rleland" type="add" issue="VALIDATOR-132">
    Allow forms to inherit validation rules from other forms.
    </action>
    <action dev="niallp" type="add" issue="VALIDATOR-166">
    Remove the need to specify an Arguement's position.
    </action>
    <action dev="dgraham" type="add" issue="VALIDATOR-185">
    Deprecated all FastHashMap usage and provided protected get
    methods that return generic Maps to be used by subclasses.
    </action>
    <action dev="mrdon" type="fix">
    Handling of float and double should use the locale object.
    Fixes <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=21282">21282</a>
    <fixes issue="VALIDATOR-124"/>
    </action>
    <action dev="mrdon" type="update" issue="VALIDATOR-181">
    More informative Exception message when validation method not found.
    </action>
    <action dev="mrdon" type="fix" issue="VALIDATOR-148">
    Client-side required validation inconsistent with server-side.
    </action>
    <action dev="mrdon" type="fix" issue="VALIDATOR-101">
    EmailValidator allows apostrophes in domain name.
    </action>
    <action dev="mrdon" type="fix">
    Changing the strategy for locating form name/id, now use a common utility
    function which works in both IE and Firefox.
    Fixes <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=35127">35127</a>
    and <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=35127">32760</a>
    </action>
    <action dev="mrdon" type="fix">
    Validation fails when "name" attribute in form not specified.
    <fixes issue="VALIDATOR-80"/>
    <fixes issue="VALIDATOR-73"/>
    </action>
    <action dev="mrdon" type="fix" issue="VALIDATOR-27">
    UrlValidator fails http://www.google.com.
    </action>
    <action dev="mrdon" type="fix">
    Email: inexisting dashes and TLD erroneously accepted.
    <fixes issue="VALIDATOR-114"/>
    <fixes issue="VALIDATOR-44"/>
    </action>
    <action dev="mrdon" type="fix" issue="VALIDATOR-1">
    Float validator can't validate the string with several dot.
    </action>
    <action dev="mrdon" type="fix" issue="VALIDATOR-39">
    CreditValidator does not handle Visa correctly.
    </action>
    <action dev="mrdon" type="fix" issue="VALIDATOR-32">
    datePattern not supported by JavaScript.
    </action>
    <action dev="mrdon" type="fix" issue="VALIDATOR-6">
    validateRequired on a single radio button.
    </action>
    <action dev="mrdon" type="fix" issue="VALIDATOR-158">
    Field.validate() cannot be invoked from user-defined code.
    </action>
    <action dev="mrdon" type="fix">
    Locale validation doesn't validate all fields.
    <fixes issue="VALIDATOR-61"/>
    <fixes issue="VALIDATOR-179"/>
    </action>
    <action dev="mrdon" type="fix" issue="VALIDATOR-161">
    XML file included into validation.xml via entity reference not found.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-117">
    Update maven build to Include DTDs and xdocs in the source distribution.
    </action>
    <action dev="niallp" type="fix">
    Remove logging of exceptions when the Date validation fails (correctly) with
    an invalid date.
    </action>
    <action dev="niallp" type="fix">
    Add version 1.1.3 of the DTD from the VALIDATOR_1_1_2_BRANCH and change
    digester rules so that the old arg0-arg3 values are not ignored for
    versions of the DTD prior to 1.2.0.
    </action>
    <action dev="niallp" type="add" issue="VALIDATOR-108">
    Add 'resource' and 'bundle' elements to the 1.2.0 DTD.
    </action>
    <action dev="niallp" type="add" issue="VALIDATOR-172">
    Provide access to the result object in ValidatorResult.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-75">
    Validation breaks on multiple validation.xml (eg. with Struts 1.3).
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-86">
    GenericTypeValidator does not accept negative Floats/Doubles.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-48">
    correct UrlValidator Javadoc.
    </action>
    <action dev="niallp" type="add" issue="VALIDATOR-3">
    Search the locale 'hierarchy' of formsets for a Form.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-59">
     Int validation in Java and Javascript have different semantics.
    </action>
    <action dev="niallp" type="fix" issue="VALIDATOR-33">
     Javascript Validation currently uses unsupported DOM method getAttributeNode().
    </action>
  </release>

  <release version="1.1.4" date="2004-11-12" description="1.1 Maintenance Release.">
    <action dev="niallp" type="add" issue="VALIDATOR-175">
    Added getMessage(key) and getMessages() methods to Field
    </action>
    <action dev="niallp" type="add">
    Added resource property (including getter/setter) to Msg to support
    the 'resource' attribute specified in the DTD.
    </action>
  </release>

  <release version="1.1.3" date="2004-08-25" description="1.1 Release">
    <action dev="dgraham" type="fix" issue="VALIDATOR-16">
    Fixed javascript file reading in Java WebStart environment.
    </action>
    <action dev="mrdon" type="fix" issue="VALIDATOR-54">
    Fixed javascript email domain length limited to 2 or 3 chars.
    </action>
  </release>

  <release version="1.1.2 (alpha)" date="2004-04-03" description="1.1 Alpha">
    <action dev="rleland" type="fix" issue="VALIDATOR-24">
    Javascript validation doesn't work if a form field is
    called "name".
    </action>
    <action dev="rleland" type="update">
    Allow multiple forms to be on the same page by
    generating a unique variable name based on form name.
    Fixes <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=17667">17667</a>
    </action>
    <action dev="rleland" type="add" issue="VALIDATOR-152">
    Validate file extensions for file uploads.
    </action>
    <action dev="rleland" type="add" issue="VALIDATOR-183">
    Add Support for hidden fields in javascript
    validations.
    </action>
    <action dev="dgraham" type="update" issue="VALIDATOR-14">
    The framework will convert checked exceptions into
    ValidatorExceptions so any ValidatorException thrown out
    of the framework indicates a 'system' exception that
    stops validation processing. If a pluggable validation
    method throws a ValidatorException it will be rethrown
    and passed out of the framework. Any other exception from
    a pluggable validation method is still considered a validation
    failure rather than a system exception to maintain backwards
    compatibility.
    </action>
    <action dev="dgraham" type="add" issue="VALIDATOR-174">
    Added a more flexible card validation system that doesn't
    require CreditCardValidator to support every brand of
    credit card.
    </action>
    <action dev="dgraham" type="update">
    Throw RuntimeException if clone fails instead of InternalError.
    </action>
    <action dev="dgraham" type="add">
     Added Flags.clear().
    </action>
  </release>

  <release version="1.1.1 (alpha)" date="2003-12-15" description="1.1 Alpha">
    <action dev="rleland" type="add">
    Add javadoc to javascript, and use
    <a href="http://jsdoc.sf.net"> jsdoc</a> to process it.
    </action>
    <action dev="rleland" type="fix">
    Ignore validation criteria when field is disabled for all field types.
    </action>
    <action dev="rleland" type="add">
    Add required check for single checkbox.
    </action>
    <action dev="rleland" type="add">
    Let max/min length also cover passwords fields. Don't use
    these for checking login pages, only when the user is
    modifying the password.
    </action>
    <action dev="dgraham" type="add">
    Added Field.getArgs(String) to make it easier to retrieve
    all of the Args for a given validator.
    </action>
    <action dev="rleland" type="fix">
    Modify javascript to honor datapattern option.
    </action>
    <action dev="rleland" type="add">
    Add ability of required to handle checkboxes, radio, select-one,
    and select-multiple field types.
    </action>
    <action dev="rleland" type="add">
    Add ability to use required condition on array types like checkboxes.
    </action>
  </release>

  <release version="1.1.0 (alpha)" date="2003-08-26" description="1.1 Alpha">
    <action dev="dgraham" type="update">
    Move Digester rule configuration to XML file and remove
    ValidatorResourcesInitializer. ValidatorResources now
    knows how to initialize itself.
    </action>
    <action dev="dgraham" type="update">
    Clean up scopes of methods and variables.
    </action>
    <action dev="dgraham" type="update">
    Make Arg system more flexible to allow any number of
    args in a message.
    </action>
    <action dev="dgraham" type="update">
    Validate validation.xml files while initializing a Validator
    to alert developers to configuration errors.
    </action>
    <action dev="dgraham" type="add">
    Refactored <code>GenericValidator</code> methods into reusable
    objects.  These include: CreditCardValidator, EmailValidator,
    DateValidator, and UrlValidator.
    </action>
    <action dev="dgraham" type="update">
    <p><strong>Backwards Incompatible Changes</strong></p>
    <ul>
      <li>
        &lt;msg&gt;'s name and key attributes are now required.  The Validator code was
        enforcing this constraint so now it's formally defined in the DTD.
      </li>
    </ul>
    </action>
    <action dev="dgraham" type="remove">
      <p>Deprecated items; see the javadoc for details and replacements.</p>
    <ul>
      <li>
         The &lt;arg0-3&gt; elements have been replaced with a single &lt;arg&gt; element
         with a new <code>position</code> attribute.  Setting position to 0 is the equivalent
         of an &lt;arg0&gt; element.
      </li>
      <li>
         <code>Arg.getResource()</code>
      </li>
      <li>
         <code>CreditCardValidator.isValidPrefix()</code>
      </li>
      <li>
         <code>Field.ARG_DEFAULT</code>
      </li>
      <li>
         <code>Field.hDependencies</code>
      </li>
      <li>
         <code>Field.hArg0 - Field.hArg3</code>
      </li>
      <li>
         <code>Field.addArg0() - Field.addArg3()</code>
      </li>
      <li>
         <code>Field.getArg0() - Field.getArg3()</code>
      </li>
      <li>
         <code>Field.addVarParam()</code>
      </li>
      <li>
         <code>Field.process()</code>
      </li>
      <li>
         <code>Field.processMessageComponents()</code>
      </li>
      <li>
         <code>Field.getDependencies()</code>
      </li>
      <li>
         <code>Form.getFieldMap()</code>
      </li>
      <li>
         <code>Form.process()</code>
      </li>
      <li>
         <code>FormSet.addConstant()</code>
      </li>
      <li>
         <code>FormSet.addConstantParam()</code>
      </li>
      <li>
         <code>FormSet.getForm(Object)</code>
      </li>
      <li>
         <code>FormSet.process()</code>
      </li>
      <li>
         <code>GenericValidator.REGEXP_DELIM</code>
      </li>
      <li>
         <code>GenericValidator.validateCreditCardLuhnCheck()</code>
      </li>
      <li>
         <code>GenericValidator.validateCreditCardPrefixCheck()</code>
      </li>
      <li>
         <code>GenericValidator.getDelimittedRegExp()</code>
      </li>
      <li>
         <code>Validator.BEAN_KEY</code>
      </li>
      <li>
         <code>Validator.VALIDATOR_ACTION_KEY</code>
      </li>
      <li>
         <code>Validator.FIELD_KEY</code>
      </li>
      <li>
         <code>Validator.VALIDATOR_KEY</code>
      </li>
      <li>
         <code>Validator.LOCALE_KEY</code>
      </li>
      <li>
         <code>Validator.hResources</code>
      </li>
      <li>
         <code>Validator.addResource()</code>
      </li>
      <li>
         <code>Validator.getResource()</code>
      </li>
      <li>
         <code>ValidatorAction.process()</code>
      </li>
      <li>
         <code>ValidatorAction.getDependencies()</code>
      </li>
      <li>
         <code>ValidatorResources.put()</code>
      </li>
      <li>
         <code>ValidatorResources.addConstant()</code>
      </li>
      <li>
         <code>ValidatorResources.addConstantParam()</code>
      </li>
      <li>
         <code>ValidatorResources.get()</code>
      </li>
      <li>
         <code>ValidatorResources.processForms()</code>
      </li>
      <li>
         <code>ValidatorResourcesInitializer</code>
      </li>
      <li>
         <code>ValidatorResult.getValid()</code>
      </li>
      <li>
         <code>ValidatorResults.empty()</code>
      </li>
      <li>
         <code>ValidatorResults.get()</code>
      </li>
      <li>
         <code>ValidatorResults.properties()</code>
      </li>
      <li>
         <code>ValidatorUtil</code>
      </li>
    </ul>
    </action>
  </release>

  <release version="1.0.2" date="2003-04-17" description="1.0 Maintenance Release">
    <action dev="turner" type="fix" issue="VALIDATOR-93" due-to="Scott Clasen">
    GenericValidaor.isEmail bug.
    </action>
    <action dev="dgraham" type="fix" issue="VALIDATOR-94" due-to="Jeremy Tan">
    NPE in Validator.java after upgrading to Struts 1.1b3.
    </action>
    <action dev="turner" type="fix" issue="VALIDATOR-62" due-to="Jeremy Tan">
    i18n issue, variant not being picked up by Validator.
    </action>
    <action dev="turner" type="fix" issue="VALIDATOR-53" due-to="Thomas Jacob">
    isEmail accepts Umlauts and other non-ASCII characters.
    </action>
    <action dev="dgraham" type="fix" issue="VALIDATOR-104" due-to="Erik Hatcher">
    Email address validation incorrectly accepts commas.
    </action>
    <action dev="dgraham" type="fix" issue="VALIDATOR-36" due-to="Didier Romelot">
    unknown host when loading app.
    </action>
  </release>

  <release version="1.0.1" date="2002-12-16" description="1.0 Maintenance Release">
    <action dev="martinc" type="fix" issue="VALIDATOR-84" due-to="Pierre Chardin">
    Serialization problem with org.apache.commons.validator.ValidatorResult$ResultStatus.
    </action>
    <action dev="turner" type="fix" issue="VALIDATOR-68" due-to="Bjorn-H. Moritz">
    ValidatorResources.get-method not working properly.
    </action>
  </release>

  <release version="1.0" date="2002-11-01" description="1.0 Release">
    <action type="add">
      First Release.
    </action>
  </release>

  </body>
</document>
