<?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.9.0" date="YYYY-MM-DD" description="Maintenance and bug fix release.">
    <!-- ADD -->
    <action type="add" dev="ggregory" due-to="ashoknan2, Gary Gregory">ISINValidator: Add 9 additional exception country code #129.</action>
    <action type="add" dev="ggregory" due-to="Gary Gregory">ISINValidator: Add all codes from ISO 3166-1 alpha-2 except unassigned code elements.</action>
    <!-- FIX -->
    <action type="fix" issue="VALIDATOR-492" dev="ggregory" due-to="Tobias Wildgruber, Gary Gregory">ValidatorUtils.copyFastHashMap is broken.</action>
    <action type="fix" dev="ggregory" due-to="Sebb">DomainValidator: Changes from Version 2024040200, Apr 2 07:07:02 2024 UTC.</action>
    <!-- UPDATE -->
    <action type="update" dev="ggregory" due-to="Dependabot">Bump org.apache.commons:commons-parent from 65 to 69 #201.</action>
    <action type="update" dev="ggregory" due-to="Dependabot">Bump commons-logging:commons-logging from 1.3.0 to 1.3.1 #199.</action>
  </release>
  <release version="1.8.0" date="2023-12-02" description="Maintenance and bug fix release.">
    <!-- FIX -->
    <action type="fix" dev="ggregory" due-to="Gennaro Napolitano">
      Update Javadoc for InetAddressValidator isValid #76
    </action>
    <action issue ="VALIDATOR-479" type="fix" dev="ggregory" due-to="Gyoo">
      Fix typo in /routines/package-summary.html #79.
    </action>
    <action type="fix" dev="ggregory" due-to="John Patrick">
      Use JUnit 5 assertThrows() #92, #93, #94, #95.
    </action>
    <action type="fix" dev="ggregory" due-to="step-security-bot, Gary Gregory">
      [StepSecurity] ci: Harden GitHub Actions #136.
    </action>
    <action type="fix" dev="ggregory" due-to="Andrés Torres">
      Javadoc typos #144.
    </action>
    <action type="fix" dev="ggregory" due-to="Gary Gregory">
      Precompile regular expression in InetAddressValidator.isValidInet6Address(String).
    </action>
    <action type="fix" dev="ggregory" due-to="Gary Gregory">
      Fix SpotBugs [ERROR] Medium: Class org.apache.commons.validator.routines.CreditCardValidator$1 defines non-transient non-serializable instance field ccr [org.apache.commons.validator.routines.CreditCardValidator$1] In CreditCardValidator.java SE_BAD_FIELD.
    </action>
    <action type="fix" dev="ggregory" due-to="Gary Gregory">
      Fix SpotBugs [ERROR] High: Class org.apache.commons.validator.ValidatorAction defines non-transient non-serializable instance field validationMethod [org.apache.commons.validator.ValidatorAction] In ValidatorAction.java SE_BAD_FIELD.
    </action>
    <action type="fix" dev="ggregory" due-to="Gary Gregory">
      Fix SpotBugs [ERROR] High: Found reliance on default encoding in org.apache.commons.validator.ValidatorAction.readJavascriptFile(String): new java.io.InputStreamReader(InputStream) [org.apache.commons.validator.ValidatorAction] At ValidatorAction.java:[line 428] DM_DEFAULT_ENCODING.
    </action>
    <action type="fix" dev="ggregory" due-to="Gary Gregory">
      Fix SpotBugs [ERROR] Medium: Inconsistent synchronization of org.apache.commons.validator.ValidatorAction.jsFunction; locked 62% of time [org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.ValidatorAction] Unsynchronized access at ValidatorAction.java:[line 340]Unsynchronized access at ValidatorAction.java:[line 358]Synchronized access at ValidatorAction.java:[line 393]Synchronized access at ValidatorAction.java:[line 394]Synchronized access at ValidatorAction.java:[line 459]Synchronized access at ValidatorAction.java:[line 461]Synchronized access at ValidatorAction.java:[line 462] IS2_INCONSISTENT_SYNC.
    </action>
    <action type="fix" dev="ggregory" due-to="Gary Gregory">
      Port tests to JUnit 5. Exception: DomainValidatorStartupTest.
    </action>
    <action type="fix" dev="ggregory" due-to="Gary Gregory">
      Use singletons in org.apache.commons.validator.CreditCardValidator.
    </action>
    <!-- ADD -->
    <action type="add" dev="ggregory" due-to="Dependabot, Gary Gregory">
      Add github/codeql-action.
    </action>
    <action issue="VALIDATOR-477" type="adda" dev="sebb" due-to="sebb, homebeaver">
      Add IBAN validators for LY – Libya, SD, BI, #67.
    </action>
    <action issue="VALIDATOR-486" type="add" dev="ggregory" due-to="tatiana-scda, Gary Gregory">
      Add new countries to IBAN list: DJ, RU #88.
    </action>
    <action type="add" dev="ggregory" due-to="Arnaud Fournier, Gary Gregory">
      Add IBANValidator.Validator.getRegexValidator().
    </action>
    <action type="add" dev="ggregory" due-to="Arnaud Fournier, Gary Gregory">
      Add RegexValidator.getPatterns().
    </action>
    <action type="add" dev="ggregory" due-to="Gary Gregory, rossmills3, sebbASF">
      Add country codes listed as other countries and territories in the IBAN registry for Finland: AX.
    </action>
    <action type="add" dev="ggregory" due-to="Gary Gregory, rossmills3, sebbASF">
      Add country codes listed as other countries and territories in the IBAN registry for France: GF, GP, MQ, RE, PF, TF, YT, NC, BL, MF, PM, WF.
    </action>
    <action type="add" dev="ggregory" due-to="Gary Gregory, rossmills3, sebbASF">
      Add country codes listed as other countries and territories in the IBAN registry for United Kingdom: IM, JE, GG.
    </action>
    <action type="add" dev="ggregory" due-to="Gary Gregory">
      Add ValidatorAction.setClassName(String) and deprecate setClassname(String). 
    </action>
    <!-- REMOVE -->
    <action type="remove" dev="ggregory" due-to="John Patrick, Gary Gregory">
      Remove FindBugs, SpotBugs is in use #87.
    </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.11 #71, #84. #90, #91.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
      Bump actions/checkout from 2.3.1 to 3.0.2, #38, #47, #70.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
      Bump actions/setup-java from 1.4.0 to 3.6.0 #42, #72, #98.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot">
      Bump actions/upload-artifact from 3.1.0 to 3.1.1 #96.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">
      Bump junit from 4.13 to 5.9.1 Vintage #44.
    </action>
    <action type="update" dev="ggregory" due-to="Dependabot">
      Bump maven-pmd-plugin from 3.13.0 to 3.19.0 #69, #77, #80, #81.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">
      Bump commons-parent from 52 to 65 #83, #107, #111, #132.
    </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, Dependabot">
      Bump commons-csv from 1.6 to 1.10.0 #118.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Bump japicmp-maven-plugin from 0.15.7 to 0.16.0.
    </action>
    <action dev="ggregory" type="update" due-to="Gary Gregory">
      Bump commons-logging:commons-logging from 1.2 to 1.3.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 independently, 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>
