You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/03/19 20:31:34 UTC

[commons-validator] branch master updated (22265fbf -> 7ac02e53)

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/commons-validator.git


    from 22265fbf Remove legacy Subversion keyword substitution markers
     new 4f003b6f Javadoc: Convert package.html to package-info.java
     new 831202f3 Javadoc: Convert package.html to package-info.java
     new bc4d1e11 Javadoc: Convert package.html to package-info.java
     new 7ac02e53 Javadoc: Convert package.html to package-info.java

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/commons/validator/package-info.java | 223 ++++++
 .../java/org/apache/commons/validator/package.html | 244 ------
 .../routines/checkdigit/package-info.java}         |  19 +-
 .../validator/routines/checkdigit/package.html     |  29 -
 .../commons/validator/routines/package-info.java   | 741 ++++++++++++++++++
 .../apache/commons/validator/routines/package.html | 835 ---------------------
 .../commons/validator/util/package-info.java}      |  15 +-
 .../org/apache/commons/validator/util/package.html |  26 -
 8 files changed, 974 insertions(+), 1158 deletions(-)
 create mode 100644 src/main/java/org/apache/commons/validator/package-info.java
 delete mode 100644 src/main/java/org/apache/commons/validator/package.html
 copy src/{test/java/org/apache/commons/validator/ResultPair.java => main/java/org/apache/commons/validator/routines/checkdigit/package-info.java} (65%)
 delete mode 100644 src/main/java/org/apache/commons/validator/routines/checkdigit/package.html
 create mode 100644 src/main/java/org/apache/commons/validator/routines/package-info.java
 delete mode 100644 src/main/java/org/apache/commons/validator/routines/package.html
 copy src/{test/java/org/apache/commons/validator/ResultPair.java => main/java/org/apache/commons/validator/util/package-info.java} (65%)
 delete mode 100644 src/main/java/org/apache/commons/validator/util/package.html


[commons-validator] 04/04: Javadoc: Convert package.html to package-info.java

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-validator.git

commit 7ac02e5369d7b2437e4a7790a21063245dc3de5f
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Mar 19 16:31:30 2023 -0400

    Javadoc: Convert package.html to package-info.java
---
 .../org/apache/commons/validator/package-info.java | 223 +++++++++++++++++++
 .../java/org/apache/commons/validator/package.html | 244 ---------------------
 2 files changed, 223 insertions(+), 244 deletions(-)

diff --git a/src/main/java/org/apache/commons/validator/package-info.java b/src/main/java/org/apache/commons/validator/package-info.java
new file mode 100644
index 00000000..d8d7a990
--- /dev/null
+++ b/src/main/java/org/apache/commons/validator/package-info.java
@@ -0,0 +1,223 @@
+/*
+ * 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.
+ */
+
+/**
+ * The Validator package provides validation for JavaBeans based on an xml file.
+ *
+ * <a id="doc.Description"></a>
+ * <div>
+ * <a href="http://commons.apache.org/validator/dependencies.html">[Dependencies]</a>
+ * <a href="#doc.Intro">[Introduction]</a>
+ * <a href="#doc.Overview">[Overview]</a>
+ * <a href="#doc.Resources">[Resources]</a>
+ * <a href="#doc.Usage">[Usage Example]</a>
+ * </div>
+ * <a id="doc.Intro"></a>
+ * <h2>Introduction</h2>
+ * <p>A common issue when receiving data either electronically or from
+ * user input is verifying the integrity of the data.  This work is
+ * repetitive and becomes even more complicated when different sets
+ * of validation rules need to be applied to the same set of data based
+ * on locale for example.  Error messages may also vary by locale.
+ * This package attempts to address some of these issues and
+ * speed development and maintenance of validation rules.
+ * </p>
+ * <p>In order to use the Validator, the following basic steps are required:</p>
+ * <ul>
+ * <li>Create a new instance of the
+ * <code>org.apache.commons.validator.Validator</code> class.  Currently
+ * Validator instances may be safely reused if the current ValidatorResources
+ * are the same, as long as
+ * you have completed any previous validation, and you do not try to utilize
+ * a particular Validator instance from more than one thread at a time.</li>
+ * <li>Add any <a href="#doc.Resources">resources</a>
+ * needed to perform the validations.  Such as the JavaBean to validate.</li>
+ * <li>Call the validate method on <code>org.apache.commons.validator.Validator</code>.</li>
+ * </ul>
+ * <a id="doc.Overview"></a>
+ * <h2>Overview</h2>
+ * <p>
+ * The Commons Validator is a basic validation framework that
+ * lets you define validation rules for a JavaBean in an xml file.
+ * Validators, the validation definition, can also be defined in
+ * the xml file.  An example of a validator would be defining
+ * what method and class will be called to perform the validation
+ * for a required field.  Validation rules can be grouped together
+ * based on locale and a JavaBean/Form that the rules are associated
+ * with.  The framework has basic support for user defined constants
+ * which can be used in some field attributes.
+ * </p>
+ * <p>
+ * Validation rules can be defined in an xml file which keeps
+ * them abstracted from JavaBean you are validating.  The
+ * property reference to a field supports nested properties
+ * using the Apache Commons BeanUtils
+ * (http://commons.apache.org/beanutils/) package.
+ * Error messages and the arguments for error messages can be
+ * associated with a fields validation.
+ * </p>
+ * <a id="doc.Resources"></a>
+ * <h2>Resources</h2>
+ * <p>
+ * After a Validator instance is created, instances of
+ * classes can be added to it to be passed into
+ * validation methods by calling the setParameter()
+ * method.  Below is a list of reserved parameters (class names).
+ * </p>
+ * <table border="1">
+ * <caption>Reserved Parameters</caption>
+ * <tr>
+ * <th>Class Name</th>
+ * <th>Validator Contstant</th>
+ * <th>Description</th>
+ * </tr>
+ * <tr>
+ * <td>java.lang.Object</td>
+ * <td>Validator.BEAN_PARAM</td>
+ * <td>JavaBean that is being validated</td>
+ * </tr>
+ * <tr>
+ * <td>java.util.Locale</td>
+ * <td>Validator.LOCALE_PARAM</td>
+ * <td>
+ * Locale to use when retrieving a FormSet.
+ * The default locale will be used if one
+ * isn't specified.
+ * </td>
+ * </tr>
+ * <tr>
+ * <td>org.apache.commons.validator.ValidatorAction</td>
+ * <td>Validator.VALIDATOR_ACTION_PARAM</td>
+ * <td>
+ * This is automatically added to a Validator's
+ * resources as a validation is being processed.
+ * If this class name is used when defining
+ * a method signature for a pluggable validator,
+ * the current ValidatorAction will be passed into
+ * the validation method.
+ * </td>
+ * </tr>
+ * <tr>
+ * <td>org.apache.commons.validator.Field</td>
+ * <td>Validator.FIELD_PARAM</td>
+ * <td>
+ * This is automatically added to a Validator's
+ * resources as a validation is being processed.
+ * If this class name is used when defining
+ * a method signature for a pluggable validator,
+ * the current Field will be passed into
+ * the validation method.
+ * </td>
+ * </tr>
+ * </table>
+ * <a id="doc.Usage"></a>
+ * <h2>Usage Example</h2>
+ * <p>
+ * This is a basic example setting up a required validator for
+ * a name bean.  This example is a working unit test (reference
+ * <code>org.apache.commons.validator.RequiredNameTest</code> and
+ * validator-name-required.xml located under validator/src/test).
+ * </p>
+ * <p>
+ * Create an xml file with your validator and validation rules.
+ * Setup your required validator in your xml file.<br>
+ * <br>
+ * <a href="#doc.Usage.xml">XML Example</a><br>
+ * <a href="#doc.Usage.validator">Validator Example</a><br>
+ * <a href="#doc.Usage.pluggableValidator">Pluggable Validator Example</a>
+ * </p>
+ * <a id="doc.Usage.xml"></a>
+ * <h2>XML Example</h2>
+ * <p>
+ * Definition of a 'required' pluggable validator.<br>
+ * <pre>
+ * &lt;form-validation&gt;
+ * &lt;global&gt;
+ * &lt;validator name="required"
+ * classname="org.apache.commons.validator.TestValidator"
+ * method="validateRequired"
+ * methodParams="java.lang.Object, org.apache.commons.validator.Field"/&gt;
+ * &lt;/global&gt;
+ * &lt;formset&gt;
+ * &lt;/formset&gt;
+ * &lt;/form-validation&gt;
+ * </pre>
+ * <p>
+ * Add validation rules to require a first name and a last name.<br>
+ * <pre>
+ * &lt;form-validation&gt;
+ * &lt;global&gt;
+ * &lt;validator name="required"
+ * classname="org.apache.commons.validator.TestValidator"
+ * method="validateRequired"
+ * methodParams="java.lang.Object, org.apache.commons.validator.Field"/&gt;
+ * &lt;/global&gt;
+ * <b>
+ * &lt;formset&gt;
+ * &lt;form    name="nameForm"&gt;
+ * &lt;field property="firstName" depends="required"&gt;
+ * &lt;arg0 key="nameForm.firstname.displayname"/&gt;
+ * &lt;/field&gt;
+ * &lt;field property="lastName" depends="required"&gt;
+ * &lt;arg0 key="nameForm.lastname.displayname"/&gt;
+ * &lt;/field&gt;
+ * &lt;/form&gt;
+ * &lt;/formset&gt;
+ * </b>
+ * &lt;/form-validation&gt;
+ * </pre>
+ * <a id="doc.Usage.validator"></a>
+ * <h2>Validator Example</h2>
+ * <p>
+ * Excerpts from org.apache.commons.validator.RequiredNameTest
+ * </p>
+ * <pre>
+ * InputStream in = this.getClass().getResourceAsStream("validator-name-required.xml");
+ * // Create an instance of ValidatorResources to initialize from an xml file.
+ * ValidatorResources resources = new ValidatorResources(in);
+ * // Create bean to run test on.
+ * Name name = new Name();
+ * // Construct validator based on the loaded resources and the form key
+ * Validator validator = new Validator(resources, "nameForm");
+ * // add the name bean to the validator as a resource
+ * // for the validations to be performed on.
+ * validator.setParameter(Validator.BEAN_PARAM, name);
+ * // Get results of the validation.
+ * Map results;
+ * // throws ValidatorException (catch clause not shown here)
+ * results = validator.validate();
+ * if (results.get("firstName") == null) {
+ * // no error
+ * } else {
+ * // number of errors for first name
+ * int errors = ((Integer)results.get("firstName")).intValue();
+ * }
+ * </pre>
+ * <a id="doc.Usage.pluggableValidator"></a>
+ * <h2>Pluggable Validator Example</h2>
+ * <p>
+ * Validation method defined in the 'required' pluggable validator
+ * (excerpt from org.apache.commons.validator.TestValidator).
+ * </p>
+ * <pre>
+ * public static boolean validateRequired(Object bean, Field field) {
+ * String value = ValidatorUtil.getValueAsString(bean, field.getProperty());
+ * return GenericValidator.isBlankOrNull(value);
+ * }
+ * </pre>
+ */
+package org.apache.commons.validator;
diff --git a/src/main/java/org/apache/commons/validator/package.html b/src/main/java/org/apache/commons/validator/package.html
deleted file mode 100644
index 5f6647b8..00000000
--- a/src/main/java/org/apache/commons/validator/package.html
+++ /dev/null
@@ -1,244 +0,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.
--->
-<html>
-<head>
-   <title>Package Documentation for org.apache.commons.validator</title>
-</head>
-<body bgcolor="white">
-The Validator package provides validation for JavaBeans based on an xml file.
-<br><br>
-<a id="doc.Description"></a>
-<div>
-<a href="http://commons.apache.org/validator/dependencies.html">[Dependencies]</a>
-<a href="#doc.Intro">[Introduction]</a>
-<a href="#doc.Overview">[Overview]</a>
-<a href="#doc.Resources">[Resources]</a>
-<a href="#doc.Usage">[Usage Example]</a>
-</div>
-
-<a id="doc.Intro"></a>
-<h2>Introduction</h2>
-
-<p>A common issue when receiving data either electronically or from
-user input is verifying the integrity of the data.  This work is
-repetitive and becomes even more complicated when different sets
-of validation rules need to be applied to the same set of data based
-on locale for example.  Error messages may also vary by locale.
-This package attempts to address some of these issues and
-speed development and maintenance of validation rules.
-</p>
-
-<p>In order to use the Validator, the following basic steps are required:</p>
-<ul>
-   <li>Create a new instance of the
-       <code>org.apache.commons.validator.Validator</code> class.  Currently
-       Validator instances may be safely reused if the current ValidatorResources
-       are the same, as long as
-       you have completed any previous validation, and you do not try to utilize
-       a particular Validator instance from more than one thread at a time.</li>
-   <li>Add any <a href="#doc.Resources">resources</a>
-       needed to perform the validations.  Such as the JavaBean to validate.</li>
-   <li>Call the validate method on <code>org.apache.commons.validator.Validator</code>.</li>
-</ul>
-
-<a id="doc.Overview"></a>
-<h2>Overview</h2>
-<p>
-   The Commons Validator is a basic validation framework that
-   lets you define validation rules for a JavaBean in an xml file.
-   Validators, the validation definition, can also be defined in
-   the xml file.  An example of a validator would be defining
-   what method and class will be called to perform the validation
-   for a required field.  Validation rules can be grouped together
-   based on locale and a JavaBean/Form that the rules are associated
-   with.  The framework has basic support for user defined constants
-   which can be used in some field attributes.
-</p>
-<p>
-   Validation rules can be defined in an xml file which keeps
-   them abstracted from JavaBean you are validating.  The
-   property reference to a field supports nested properties
-   using the Apache Commons BeanUtils
-   (http://commons.apache.org/beanutils/) package.
-   Error messages and the arguments for error messages can be
-   associated with a fields validation.
-</p>
-
-<a id="doc.Resources"></a>
-<h2>Resources</h2>
-<p>
-   After a Validator instance is created, instances of
-   classes can be added to it to be passed into
-   validation methods by calling the setParameter()
-   method.  Below is a list of reserved parameters (class names).
-</p>
-
-<table border="1">
-   <caption>Reserved Parameters</caption>
-   <tr>
-      <th>Class Name</th>
-      <th>Validator Contstant</th>
-      <th>Description</th>
-   </tr>
-   <tr>
-      <td>java.lang.Object</td>
-      <td>Validator.BEAN_PARAM</td>
-      <td>JavaBean that is being validated</td>
-   </tr>
-   <tr>
-      <td>java.util.Locale</td>
-      <td>Validator.LOCALE_PARAM</td>
-      <td>
-         Locale to use when retrieving a FormSet.
-         The default locale will be used if one
-         isn't specified.
-      </td>
-   </tr>
-   <tr>
-      <td>org.apache.commons.validator.ValidatorAction</td>
-      <td>Validator.VALIDATOR_ACTION_PARAM</td>
-      <td>
-         This is automatically added to a Validator's
-         resources as a validation is being processed.
-         If this class name is used when defining
-         a method signature for a pluggable validator,
-         the current ValidatorAction will be passed into
-         the validation method.
-      </td>
-   </tr>
-   <tr>
-      <td>org.apache.commons.validator.Field</td>
-      <td>Validator.FIELD_PARAM</td>
-      <td>
-         This is automatically added to a Validator's
-         resources as a validation is being processed.
-         If this class name is used when defining
-         a method signature for a pluggable validator,
-         the current Field will be passed into
-         the validation method.
-      </td>
-   </tr>
-</table>
-
-
-<a id="doc.Usage"></a>
-<h2>Usage Example</h2>
-<p>
-   This is a basic example setting up a required validator for
-   a name bean.  This example is a working unit test (reference
-   <code>org.apache.commons.validator.RequiredNameTest</code> and
-   validator-name-required.xml located under validator/src/test).
-</p>
-<p>
-   Create an xml file with your validator and validation rules.
-   Setup your required validator in your xml file.<br>
-   <br>
-   <a href="#doc.Usage.xml">XML Example</a><br>
-   <a href="#doc.Usage.validator">Validator Example</a><br>
-   <a href="#doc.Usage.pluggableValidator">Pluggable Validator Example</a>
-</p>
-
-<a id="doc.Usage.xml"></a>
-<h2>XML Example</h2>
-<p>
-   Definition of a 'required' pluggable validator.<br>
-<pre>
-&lt;form-validation&gt;
-   &lt;global&gt;
-      &lt;validator name="required"
-         classname="org.apache.commons.validator.TestValidator"
-         method="validateRequired"
-         methodParams="java.lang.Object, org.apache.commons.validator.Field"/&gt;
-   &lt;/global&gt;
-   &lt;formset&gt;
-   &lt;/formset&gt;
-&lt;/form-validation&gt;
-</pre>
-
-<p>
-   Add validation rules to require a first name and a last name.<br>
-<pre>
-&lt;form-validation&gt;
-   &lt;global&gt;
-      &lt;validator name="required"
-         classname="org.apache.commons.validator.TestValidator"
-         method="validateRequired"
-         methodParams="java.lang.Object, org.apache.commons.validator.Field"/&gt;
-   &lt;/global&gt;
-<b>
-   &lt;formset&gt;
-      &lt;form    name="nameForm"&gt;
-         &lt;field property="firstName" depends="required"&gt;
-            &lt;arg0 key="nameForm.firstname.displayname"/&gt;
-         &lt;/field&gt;
-         &lt;field property="lastName" depends="required"&gt;
-            &lt;arg0 key="nameForm.lastname.displayname"/&gt;
-         &lt;/field&gt;
-      &lt;/form&gt;
-   &lt;/formset&gt;
-</b>
-&lt;/form-validation&gt;
-</pre>
-
-<a id="doc.Usage.validator"></a>
-<h2>Validator Example</h2>
-<p>
-Excerpts from org.apache.commons.validator.RequiredNameTest
-</p>
-<pre>
-InputStream in = this.getClass().getResourceAsStream("validator-name-required.xml");
-
-// Create an instance of ValidatorResources to initialize from an xml file.
-ValidatorResources resources = new ValidatorResources(in);
-// Create bean to run test on.
-Name name = new Name();
-
-// Construct validator based on the loaded resources and the form key
-Validator validator = new Validator(resources, "nameForm");
-// add the name bean to the validator as a resource
-// for the validations to be performed on.
-validator.setParameter(Validator.BEAN_PARAM, name);
-
-// Get results of the validation.
-Map results;
-
-// throws ValidatorException (catch clause not shown here)
-results = validator.validate();
-
-if (results.get("firstName") == null) {
-   // no error
-} else {
-   // number of errors for first name
-   int errors = ((Integer)results.get("firstName")).intValue();
-}
-</pre>
-
-<a id="doc.Usage.pluggableValidator"></a>
-<h2>Pluggable Validator Example</h2>
-<p>
-Validation method defined in the 'required' pluggable validator
-(excerpt from org.apache.commons.validator.TestValidator).
-</p>
-
-<pre>
-public static boolean validateRequired(Object bean, Field field) {
-   String value = ValidatorUtil.getValueAsString(bean, field.getProperty());
-      return GenericValidator.isBlankOrNull(value);
-}
-</pre>
-</body>
-</html>


[commons-validator] 02/04: Javadoc: Convert package.html to package-info.java

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-validator.git

commit 831202f33459f27eb67b99cae1f4bb33fdb10b2a
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Mar 19 16:31:18 2023 -0400

    Javadoc: Convert package.html to package-info.java
---
 .../commons/validator/routines/package-info.java   | 741 ++++++++++++++++++
 .../apache/commons/validator/routines/package.html | 835 ---------------------
 2 files changed, 741 insertions(+), 835 deletions(-)

diff --git a/src/main/java/org/apache/commons/validator/routines/package-info.java b/src/main/java/org/apache/commons/validator/routines/package-info.java
new file mode 100644
index 00000000..5a2becc6
--- /dev/null
+++ b/src/main/java/org/apache/commons/validator/routines/package-info.java
@@ -0,0 +1,741 @@
+/*
+ * 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 package contains <i>independent</i> validation routines.
+ * <h2>Table of Contents</h2>
+ * <ul>
+ * <li>1. <a href="#overview">Overview</a></li>
+ * <li>2. <a href="#date">Date and Time Validators</a>
+ * <ul>
+ * <li>2.1 <a href="#date.overview">Overview</a></li>
+ * <li>2.2 <a href="#date.validate">Validating a Date Value</a></li>
+ * <li>2.3 <a href="#date.format">Formatting</a></li>
+ * <li>2.4 <a href="#date.timezone">Time Zones</a></li>
+ * <li>2.5 <a href="#date.compare">Comparing Dates and Times</a></li>
+ * </ul>
+ * </li>
+ * <li>3. <a href="#numeric">Numeric Validators</a>
+ * <ul>
+ * <li>3.1 <a href="#numeric.overview">Overview</a></li>
+ * <li>3.2 <a href="#numeric.validate">Validating a Numeric Value</a></li>
+ * <li>3.3 <a href="#numeric.format">Formatting</a></li>
+ * <li>3.4 <a href="#numeric.compare">Comparing Numbers</a></li>
+ * <li>3.5 <a href="#numeric.currency">Currency Validation</a></li>
+ * <li>3.6 <a href="#numeric.percent">Percent Validation</a></li>
+ * </ul>
+ * </li>
+ * <li>4. <a href="#other">Other Validators</a>
+ * <ul>
+ * <li>4.1 <a href="#other.overview">Overview</a></li>
+ * <li>4.2 <a href="#other.regex">Regular Expression validation</a></li>
+ * <li>4.3 <a href="#other.checkdigit">Check Digit Validation/Calculation</a></li>
+ * <li>4.4 <a href="#other.code">General Code Validation</a></li>
+ * <li>4.5 <a href="#other.isbn">ISBN Validation</a></li>
+ * <li>4.6 <a href="#other.inet">IP Address Validation</a></li>
+ * <li>4.7 <a href="#other.email">Email Address Validation</a></li>
+ * <li>4.8 <a href="#other.url">URL Validation</a></li>
+ * <li>4.9 <a href="#other.domain">Domain Name Validation</a></li>
+ * </ul>
+ * </li>
+ * </ul>
+ * <a id="overview"></a>
+ * <h2>1. Overview</h2>
+ * <p>
+ * Commons Validator serves two purposes:
+ * </p>
+ * <ul>
+ * <li>To provide standard, independent validation routines/functions.</li>
+ * <li>To provide a <i>mini</i> framework for Validation.</li>
+ * </ul>
+ * <p>
+ * This package has been created, since version 1.3.0, in an attempt to clearly
+ * separate these two concerns and is the location for the standard, independent
+ * validation routines/functions in <em>Commons Validator</em>.
+ * </p>
+ * <p>
+ * The contents of this package have no dependencies on the framework aspect of
+ * Commons Validator and can be used on their own.
+ * </p>
+ * <a id="date"></a>
+ * <h2>2. Date and Time Validators</h2>
+ * <a id="date.overview"></a>
+ * <h2>2.1 Overview</h2>
+ * <p>
+ * The date and time validators either validate according to a specified <i>format</i>
+ * or use a standard <i>format</i> for a specified <code>Locale</code>.
+ * </p>
+ * <ul>
+ * <li><a href="DateValidator.html">Date Validator</a> - validates dates
+ * converting to a <code>java.util.Date</code> type.</li>
+ * <li><a href="CalendarValidator.html">Calendar Validator</a> - validates dates
+ * converting to a <code>java.util.Calendar</code> type.</li>
+ * <li><a href="TimeValidator.html">Time Validator</a> - validates times
+ * converting to a <code>java.util.Calendar</code> type.</li>
+ * </ul>
+ * <a id="date.validate"></a>
+ * <h2>2.2 Validating a Date Value</h2>
+ * <p>
+ * You can either use one of the <code>isValid()</code> methods to just determine
+ * if a date is valid, or use one of the <code>validate()</code> methods to
+ * validate a date and convert it to a <code>java.util.Date</code>...
+ * </p>
+ * <pre>
+ * // Get the Date validator
+ * DateValidator validator = DateValidator.getInstance();
+ * // Validate/Convert the date
+ * Date fooDate = validator.validate(fooString, "dd/MM/yyyy");
+ * if (fooDate == null) {
+ * // error...not a valid date
+ * return;
+ * }
+ * </pre>
+ * <p>The following methods are provided to validate a date/time (return a boolean result):
+ * </p>
+ * <ul>
+ * <li><code>isValid(<i>value</i>)</code></li>
+ * <li><code>isValid(<i>value</i>, <i>pattern</i>)</code></li>
+ * <li><code>isValid(<i>value</i>, Locale)</code></li>
+ * <li><code>isValid(<i>value</i>, <i>pattern</i>, Locale)</code></li>
+ * </ul>
+ * <p>The following methods are provided to validate a date/time and convert it to either a
+ * <code>java.util.Date</code> or <code>java.util.Calendar</code>:
+ * </p>
+ * <ul>
+ * <li><code>validate(<i>value</i>)</code></li>
+ * <li><code>validate(<i>value</i>, <i>pattern</i>)</code></li>
+ * <li><code>validate(<i>value</i>, Locale)</code></li>
+ * <li><code>validate(<i>value</i>, <i>pattern</i>, Locale)</code></li>
+ * </ul>
+ * <a id="date.format"></a>
+ * <h2>2.3 Formatting</h2>
+ * <p>
+ * Formatting and validating are two sides of the same coin. Typically
+ * <i>input</i> values which are converted from Strings according to a
+ * specified <i>format</i> also have to be rendered for <i>output</i> in
+ * the same format. These validators provide the mechanism for formatting from
+ * date/time objects to Strings. The following methods are provided to format
+ * date/time values as Strings:
+ * </p>
+ * <ul>
+ * <li><code>format(<i>date/calendar</i>)</code></li>
+ * <li><code>format(<i>date/calendar</i>, <i>pattern</i>)</code></li>
+ * <li><code>format(<i>date/calendar</i>, Locale)</code></li>
+ * <li><code>format(<i>date/calendar</i>, <i>pattern</i>, Locale)</code></li>
+ * </ul>
+ * <a id="date.timezone"></a>
+ * <h2>2.4 Time Zones</h2>
+ * <p>
+ * If the date being parsed relates to a different time zone than the
+ * system default, you can specify the <code>TimeZone</code> to use when
+ * validating/converting:
+ * </p>
+ * <pre>
+ * // Get the GMT time zone
+ * TimeZone GMT = TimeZone.getInstance("GMT");
+ * // Validate/Convert the date using GMT
+ * Date fooDate = validator.validate(fooString, "dd/MM/yyyy", GMT);
+ * </pre>
+ * <p>The following Time Zone <i>flavours</i> of the Validation/Conversion methods
+ * are provided:</p>
+ * <ul>
+ * <li><code>validate(<i>value</i>, TimeZone)</code></li>
+ * <li><code>validate(<i>value</i>, <i>pattern</i>, TimeZone)</code></li>
+ * <li><code>validate(<i>value</i>, Locale, TimeZone)</code></li>
+ * <li><code>validate(<i>value</i>, <i>pattern</i>, Locale, TimeZone)</code></li>
+ * </ul>
+ * <a id="date.compare"></a>
+ * <h2>2.5 Comparing Dates and Times</h2>
+ * <p>
+ * As well as validating that a value is a valid date or time, these validators
+ * also provide <i>date comparison</i> functions. The <code>DateValidator</code>
+ * and <code>CalendarValidator</code> provide functions for comparing years,
+ * quarters, months, weeks and dates and the <code>TimeValidator</code> provides
+ * functions for comparing hours, minutes, seconds and milliseconds.
+ * For example, to check that a date is in the current month, you could use
+ * the <code>compareMonths()</code> method, which compares the year and month
+ * components of a date:
+ * </p>
+ * <pre>
+ * // Check if the date is in the current month
+ * int compare = validator.compareMonths(fooDate, new Date(), null);
+ * if (compare == 0) {
+ * // do current month processing
+ * return;
+ * }
+ * // Check if the date is in the previous quarter
+ * compare = validator.compareQuarters(fooDate, new Date(), null);
+ * if (compare &lt; 0) {
+ * // do previous quarter processing
+ * return;
+ * }
+ * // Check if the date is in the next year
+ * compare = validator.compareYears(fooDate, new Date(), null);
+ * if (compare &gt; 0) {
+ * // do next year processing
+ * return;
+ * }
+ * </pre>
+ * <a id="numeric"></a>
+ * <h2>3 Numeric Validators</h2>
+ * <a id="numeric.overview"></a>
+ * <h2>3.1 Overview</h2>
+ * <p>
+ * The numeric validators either validate according to a specified <i>format</i>
+ * or use a standard <i>format</i> for a specified <code>Locale</code> or use
+ * a <i>custom</i> format for a specified <code>Locale</code>.
+ * </p>
+ * <ul>
+ * <li><a href="ByteValidator.html">Byte Validator</a> - validates numbers
+ * converting to a <code>java.lang.Byte</code> type.</li>
+ * <li><a href="ShortValidator.html">Short Validator</a> - validates numbers
+ * converting to a <code>java.lang.Short</code> type.</li>
+ * <li><a href="IntegerValidator.html">Integer Validator</a> - validates numbers
+ * converting to a <code>java.lang.Integer</code> type.</li>
+ * <li><a href="LongValidator.html">Long Validator</a> - validates numbers
+ * converting to a <code>java.lang.Long</code> type.</li>
+ * <li><a href="FloatValidator.html">Float Validator</a> - validates numbers
+ * converting to a <code>java.lang.Float</code> type.</li>
+ * <li><a href="DoubleValidator.html">Double Validator</a> - validates numbers
+ * converting to a <code>java.lang.Double</code> type.</li>
+ * <li><a href="BigIntegerValidator.html">BigInteger Validator</a> - validates numbers
+ * converting to a <code>java.math.BigInteger</code> type.</li>
+ * <li><a href="BigDecimalValidator.html">BigDecimal Validator</a> - validates numbers
+ * converting to a <code>java.math.BigDecimal</code> type.</li>
+ * </ul>
+ * <a id="numeric.validate"></a>
+ * <h2>3.2 Validating a Numeric Value</h2>
+ * <p>
+ * You can either use one of the <code>isValid()</code> methods to just determine
+ * if a number is valid, or use one of the <code>validate()</code> methods to
+ * validate a number and convert it to an appropriate type.
+ * </p>
+ * <p>
+ * The following example validates an integer against a custom pattern
+ * for the <i>German</i> locale. Please note the format is specified using
+ * the standard symbols for <code>java.text.DecimalFormat</code> so although
+ * the decimal separator is indicated as a period (".") in the format, the
+ * validator will check using the German decimal separator - which is a comma (",").
+ * </p>
+ * <pre>
+ * // Get the Integer validator
+ * IntegerValidator validator = IntegerValidator.getInstance();
+ * // Validate/Convert the number
+ * Integer fooInteger = validator.validate(fooString, "#,##0.00", Locale.GERMAN);
+ * if (fooInteger == null) {
+ * // error...not a valid Integer
+ * return;
+ * }
+ * </pre>
+ * <p>The following methods are provided to validate a number (return a boolean result):</p>
+ * <ul>
+ * <li><code>isValid(<i>value</i>)</code></li>
+ * <li><code>isValid(<i>value</i>, <i>pattern</i>)</code></li>
+ * <li><code>isValid(<i>value</i>, Locale)</code></li>
+ * <li><code>isValid(<i>value</i>, <i>pattern</i>, Locale)</code></li>
+ * </ul>
+ * <p>The following methods are provided to validate a number and convert it one of
+ * the <code>java.lang.Number</code> implementations:</p>
+ * <ul>
+ * <li><code>validate(<i>value</i>)</code></li>
+ * <li><code>validate(<i>value</i>, <i>pattern</i>)</code></li>
+ * <li><code>validate(<i>value</i>, Locale)</code></li>
+ * <li><code>validate(<i>value</i>, <i>pattern</i>, Locale)</code></li>
+ * </ul>
+ * <a id="numeric.format"></a>
+ * <h2>3.3 Formatting</h2>
+ * <p>
+ * Formatting and validating are two sides of the same coin. Typically
+ * <i>input</i> values which are converted from Strings according to a
+ * specified <i>format</i> also have to be rendered for <i>output</i> in
+ * the same format. These validators provide the mechanism for formatting from
+ * numeric objects to Strings. The following methods are provided to format
+ * numeric values as Strings:
+ * </p>
+ * <ul>
+ * <li><code>format(<i>number</i>)</code></li>
+ * <li><code>format(<i>number</i>, <i>pattern</i>)</code></li>
+ * <li><code>format(<i>number</i>, Locale)</code></li>
+ * <li><code>format(<i>number</i>, <i>pattern</i>, Locale)</code></li>
+ * </ul>
+ * <a id="numeric.compare"></a>
+ * <h2>3.4 Comparing Numbers</h2>
+ * <p>
+ * As well as validating that a value is a valid number, these validators
+ * also provide functions for validating the <i>minimum</i>, <i>maximum</i>
+ * and <i>range</i> of a value.
+ * </p>
+ * <pre>
+ * // Check the number is between 25 and 75
+ * if (validator.isInRange(fooInteger, 25, 75) {
+ * // valid...in the specified range
+ * return;
+ * }
+ * </pre>
+ * <a id="numeric.currency"></a>
+ * <h2>3.5 Currency Validation</h2>
+ * <p>
+ * A default <a href="CurrencyValidator.html">Currency Validator</a>
+ * implementation is provided, although all the <i>numeric</i> validators
+ * support currency validation. The default implementation converts
+ * currency amounts to a <code>java.math.BigDecimal</code> and additionally
+ * it provides <i>lenient</i> currency symbol validation. That is, currency
+ * amounts are valid with <i>or</i> without the currency symbol.
+ * </p>
+ * <pre>
+ * BigDecimalValidator validator = CurrencyValidator.getInstance();
+ * BigDecimal fooAmount = validator.validate("$12,500.00", Locale.US);
+ * if (fooAmount == null) {
+ * // error...not a valid currency amount
+ * return;
+ * }
+ * // Check the amount is a minimum of $1,000
+ * if (validator.minValue(fooAmount, 1000) {
+ * // valid...in the specified range
+ * return;
+ * }
+ * </pre>
+ * <p>
+ * If, for example, you want to use the <a href="IntegerValidator.html">Integer
+ * Validator</a> to validate a currency, then you can simply create a
+ * new instance with the appropriate <i>format style</i>. Note that
+ * the other validators do not support the <i>lenient</i> currency symbol
+ * validation.
+ * </p>
+ * <pre>
+ * IntegerValidator validator =
+ * new IntegerValidator(true, IntegerValidator.CURRENCY_FORMAT);
+ * String pattern = "#,###" + '\u00A4' + '\u00A4';  // Use international symbol
+ * Integer fooAmount = validator.validate("10.100EUR", pattern, Locale.GERMAN);
+ * if (fooAmount == null) {
+ * // error...not a valid currency amount
+ * return;
+ * }
+ * </pre>
+ * <a id="numeric.percent"></a>
+ * <h2>3.6 Percent Validation</h2>
+ * <p>
+ * A default <a href="PercentValidator.html">Percent Validator</a>
+ * implementation is provided, although the <i>Float</i>,
+ * <i>Double</i> and <i>BigDecimal</i> validators also support
+ * percent validation. The default implementation converts
+ * percent amounts to a <code>java.math.BigDecimal</code> and additionally
+ * it provides <i>lenient</i> percent symbol validation. That is, percent
+ * amounts are valid with <i>or</i> without the percent symbol.
+ * </p>
+ * <pre>
+ * BigDecimalValidator validator = PercentValidator.getInstance();
+ * BigDecimal fooPercent = validator.validate("20%", Locale.US);
+ * if (fooPercent == null) {
+ * // error...not a valid percent
+ * return;
+ * }
+ * // Check the percent is between 10% and 90%
+ * if (validator.isInRange(fooPercent, 0.1, 0.9) {
+ * // valid...in the specified range
+ * return;
+ * }
+ * </pre>
+ * <p>
+ * If, for example, you want to use the <a href="FloatValidator.html">Float
+ * Validator</a> to validate a percent, then you can simply create a
+ * new instance with the appropriate <i>format style</i>. Note that
+ * the other validators do not support the <i>lenient</i> percent symbol
+ * validation.
+ * </p>
+ * <pre>
+ * FloatValidator validator =
+ * new FloatValidator(true, FloatValidator.PERCENT_FORMAT);
+ * Float fooPercent = validator.validate("20%", "###%");
+ * if (fooPercent == null) {
+ * // error...not a valid percent
+ * return;
+ * }
+ * </pre>
+ * <p>
+ * <strong>Note</strong>: in theory the other numeric validators besides
+ * <i>Float</i>, <i>Double</i> and <i>BigDecimal</i> (i.e. <i>Byte</i>,
+ * <i>Short</i>, <i>Integer</i>, <i>Long</i> and <i>BigInteger</i>)
+ * also support percent validation. However, since they don't allow fractions
+ * they will only work with percentages greater than 100%.
+ * </p>
+ * <a id="other"></a>
+ * <h2>4. Other Validators</h2>
+ * <a id="other.overview"></a>
+ * <h2>4.1 Overview</h2>
+ * <p>
+ * This section lists other available validators.
+ * </p>
+ * <ul>
+ * <li><a href="#other.regex">Regular Expressions</a> - validates
+ * using Java 1.4+ regular expression support</li>
+ * <li><a href="#other.checkdigit">Check Digit</a> - validates/calculates
+ * check digits (i.e. EAN/UPC, credit card, ISBN).</li>
+ * <li><a href="#other.code">Code Validation</a> - provides generic
+ * code validation - format, minimum/maximum length and check digit.</li>
+ * <li><a href="#other.isbn">ISBN Validation</a> - provides ISBN-10
+ * and ISBN-13 validation.</li>
+ * <li><a href="#other.inet">IP Address Validation</a> - provides IPv4 address
+ * validation.</li>
+ * <li><a href="#other.email">Email Address Validation</a> - provides email
+ * address validation according to RFC 822 standards.</li>
+ * <li><a href="#other.url">URL Validation</a> - provides URL validation on
+ * scheme, domain, and authority.</li>
+ * <li><a href="#other.domain">Domain Name Validation</a> - provides domain
+ * name and IANA TLD validation.</li>
+ * </ul>
+ * <a id="other.regex"></a>
+ * <h2>4.2 Regular Expression Validation</h2>
+ * <p>
+ * Regular expression validation can be done either by using the <i>static</i>
+ * methods provied by <a href="RegexValidator.html">RegexValidator</a> or
+ * by creating a new instance, which caches and re-uses compiled Patterns.
+ * </p>
+ * <ul>
+ * <li><b>Method Flavours</b> - three <i>flavours</i> of validation metods are provided:</li>
+ * <li>
+ * <ul>
+ * <li><code>isValid()</code> methods return true/false to indicate
+ * whether validation was successful.</li>
+ * <li><code>validate()</code> methods return a <code>String</code>
+ * value of the matched <i>groups</i> aggregated together or
+ * <code>null</code> if invalid.</li>
+ * <li><code>match()</code> methods return a <code>String</code> array
+ * of the matched <i>groups</i> or <code>null</code> if invalid.</li>
+ * </ul>
+ * </li>
+ * <li><b>Case Sensitivity</b> - matching can be done in either a <i>case
+ * sensitive</i> or <i>case in-sensitive</i> way.</li>
+ * <li><b>Multiple Expressions</b> - instances of the
+ * <a href="RegexValidator.html">RegexValidator</a>
+ * can be created to either match against a single regular expression
+ * or set (String array) of regular expressions.</li>
+ * </ul>
+ * <p>
+ * Below is an example of using one of the static methods to validate,
+ * matching in a <i>case insensitive</i> manner and returning a String
+ * of the matched groups (which doesn't include the hyphen).
+ * </p>
+ * <pre>
+ * // set up the parameters
+ * boolean caseSensitive   = false;
+ * String regex            = "^([A-Z]*)(?:\\-)([A-Z]*)$";
+ * // validate - result should be a String of value "abcdef"
+ * String result = RegexValidator.validate("abc-def", regex, caseSensitive);
+ * </pre>
+ * <p>The following static methods are provided for regular expression validation:
+ * </p>
+ * <ul>
+ * <li><code>isValid(<i>value</i>, <i>regex</i>)</code></li>
+ * <li><code>isValid(<i>value</i>, <i>regex</i>, <i>caseSensitive</i>)</code></li>
+ * <li><code>validate(<i>value</i>, <i>regex</i>)</code></li>
+ * <li><code>validate(<i>value</i>, <i>regex</i>, <i>caseSensitive</i>)</code></li>
+ * <li><code>match(<i>value</i>, <i>regex</i>)</code></li>
+ * <li><code>match(<i>value</i>, <i>regex</i>, <i>caseSensitive</i>)</code></li>
+ * </ul>
+ * <p>
+ * Below is an example of creating an instance of
+ * <a href="RegexValidator.html">RegexValidator</a> matching in a <i>case insensitive</i>
+ * manner against a set of regular expressions:
+ * </p>
+ * <pre>
+ * // set up the parameters
+ * boolean caseSensitive = false;
+ * String regex1   = "^([A-Z]*)(?:\\-)([A-Z]*)*$"
+ * String regex2   = "^([A-Z]*)$";
+ * String[] regexs = new String[] {regex1, regex1};
+ * // Create the validator
+ * RegexValidator validator = new RegexValidator(regexs, caseSensitive);
+ * // Validate true/false
+ * boolean valid = validator.isValid("abc-def");
+ * // Validate and return a String
+ * String result = validator.validate("abc-def");
+ * // Validate and return a String[]
+ * String[] groups = validator.match("abc-def");
+ * </pre>
+ * <p>See the
+ * <a href="RegexValidator.html">RegexValidator</a> javadoc for a full list
+ * of the available constructors.
+ * </p>
+ * <a id="other.checkdigit"></a>
+ * <h2>4.3 Check Digit validation/calculation</h2>
+ * <p>
+ * <a href="checkdigit/CheckDigit.html">CheckDigit</a> defines a new
+ * type for the calculation and validation of check digits with the
+ * following methods:
+ * </p>
+ * <ul>
+ * <li><code>isValid(<i>code</i>)</code> - validates the check digit of a code,
+ * returning <code>true</code> or <code>false</code>.</li>
+ * <li><code>calculate(<i>code</i>)</code> - calulates the check digit for a code
+ * returning the check digit character.</li>
+ * </ul>
+ * <p>
+ * The following implementations are provided:
+ * </p>
+ * <ul>
+ * <li><a href="checkdigit/ABANumberheckDigit.html">ABANumberCheckDigit</a>
+ * for <b>ABA Number</b> (or <b>Routing Transit Number</b> (RTN)) check digit calculation.</li>
+ * <li><a href="checkdigit/CUSIPCheckDigit.html">CUSIPCheckDigit</a>
+ * for <b>CUSIP</b> (North American Securities) check digit calculation.</li>
+ * <li><a href="checkdigit/EAN13CheckDigit.html">EAN13CheckDigit</a>
+ * for <b>EAN-13</b>, <b>UPC</b>, <b>ISBN-13</b> check digit calculation.</li>
+ * <li><a href="checkdigit/ISBNCheckDigit.html">ISBNCheckDigit</a>
+ * for <b>ISBN-10</b> and <b>ISBN-13</b> check digit calculation.</li>
+ * <li><a href="checkdigit/ISBN10CheckDigit.html">ISBN10CheckDigit</a>
+ * for <b>ISBN-10</b> check digit calculation.</li>
+ * <li><a href="checkdigit/ISINCheckDigit.html">ISINCheckDigit</a>
+ * for <b>ISIN</b> International Securities Identifying Number check digit calculation.</li>
+ * <li><a href="checkdigit/LuhnCheckDigit.html">LuhnCheckDigit</a>
+ * for <b>Luhn</b> check digit calculation - used by <b>credit cards</b>.</li>
+ * <li><a href="checkdigit/ModulusCheckDigit.html">ModulusCheckDigit</a>
+ * - <b>abstract</b> class for custom <b>modulus</b> check digit
+ * implementations.</li>
+ * <li><a href="checkdigit/SedolCheckDigit.html">SedolCheckDigit</a>
+ * for <b>SEDOL</b> (UK Securities) check digit calculation.</li>
+ * <li><a href="checkdigit/VerhoeffCheckDigit.html">VerhoeffCheckDigit</a>
+ * for <b>Verhoeff</b> (Dihedral) check digit calculation.</li>
+ * </ul>
+ * <p>
+ * The following examples show validating the check digit of a code:
+ * </p>
+ * <pre>
+ * // Luhn check digit validation
+ * boolean valid = LuhnCheckDigit.INSTANCE.isValid(code);
+ * // EAN / UPC / ISBN-13 check digit validation
+ * boolean valid = EAN13CheckDigit.INSTANCE.isValid(code);
+ * // ISBN-10 check digit validation
+ * boolean valid = ISBNCheckDigit.ISBN10.isValid(code);
+ * boolean valid = ISBN10CheckDigit.INSTANCE.isValid(code);
+ * // ISBN-13 check digit validation
+ * boolean valid = ISBNCheckDigit.ISBN13.isValid(code);
+ * // ISBN-10 or ISBN-13 check digit validation
+ * boolean valid = ISBNCheckDigit.ISBN.isValid(code);
+ * </pre>
+ * <p>
+ * The following examples show calulating the check digit of a code:
+ * </p>
+ * <pre>
+ * // Luhn check digit validation
+ * char checkdigit = LuhnCheckDigit.INSTANCE.calculate(code);
+ * // EAN / UPC / ISBN-13 check digit validation
+ * char checkdigit = EAN13CheckDigit.INSTANCE.calculate(code);
+ * // ISBN-10 check digit validation
+ * char checkdigit = ISBNCheckDigit.ISBN10.isValid(code);
+ * char checkdigit = ISBN10CheckDigit.INSTANCE.calculate(code);
+ * // ISBN-13 check digit validation
+ * char checkdigit = ISBNCheckDigit.ISBN13.calculate(code);
+ * // ISBN-10 or ISBN-13 check digit validation
+ * char checkdigit = ISBNCheckDigit.ISBN.calculate(code);
+ * </pre>
+ * <a id="other.code"></a>
+ * <h2>4.4 General Code validation</h2>
+ * <p>
+ * <a href="CodeValidator.html">CodeValidator</a> provides a generic
+ * implementation for validating codes. It performs the following
+ * validations on a code:
+ * </p>
+ * <ul>
+ * <li><b>Format</b> - the format of the code is validated using
+ * a <i>regular expression</i> (see  <a href="RegexValidator.html">RegexValidator</a>).</li>
+ * <li><b>Length</b> - the minimum/maximum length of the code is
+ * checked - after being parsed by the regular expression - with which
+ * <i>format</i> characters can be removed with the use of
+ * <i>non-capturing</i> groups.</li>
+ * <li><b>Check Digit</b> - a <a href="checkdigit/CheckDigit.html">CheckDigit</a>
+ * routine checks that code's check digit is valid.</li>
+ * </ul>
+ * <p>
+ * For example to create a validator to validate EAN-13 codes (numeric,
+ * with a length of 13):
+ * </p>
+ * <pre>
+ * // Create an EAN-13 code validator
+ * CodeValidator validator = new CodeValidator("^[0-9]*$", 13, EAN13CheckDigit.INSTANCE);
+ * // Validate an EAN-13 code
+ * if (!validator.isValid(code)) {
+ * ... // invalid
+ * }
+ * </pre>
+ * <a id="other.isbn"></a>
+ * <h2>4.5 ISBN validation</h2>
+ * <p>
+ * <a href="ISBNValidator.html">ISBNValidator</a> provides ISBN-10
+ * and ISBN-13 validation and can <i>optionally</i> convert
+ * ISBN-10 codes to ISBN-13.
+ * </p>
+ * <ul>
+ * <li><b>ISBN-10</b> - validates using a
+ * <a href="CodeValidator.html">CodeValidator</a> with the
+ * <a href="checkdigit/ISBN10CheckDigit.html">ISBN10CheckDigit</a>
+ * routine.</li>
+ * <li>
+ * <ul>
+ * <li><code>isValidISBN10(<i>value</i>)</code> - returns a boolean</li>
+ * <li><code>validateISBN10(<i>value</i>)</code> - returns a reformatted ISBN-10 code</li>
+ * </ul>
+ * </li>
+ * <li><b>ISBN-13</b> - validates using a
+ * <a href="CodeValidator.html">CodeValidator</a> with the
+ * <a href="checkdigit/EAN13CheckDigit.html">EAN13CheckDigit</a>
+ * routine.</li>
+ * <li>
+ * <ul>
+ * <li><code>isValidISBN13(<i>value</i>)</code> - returns a boolean</li>
+ * <li><code>validateISBN13(<i>value</i>)</code> - returns a reformatted ISBN-13 code</li>
+ * </ul>
+ * </li>
+ * <li><b>ISBN-10</b> and <b>ISBN-13</b> - validates codes are either
+ * valid ISBN-10 or valid ISBN-13 - optionally can convert ISBN-10 codes to ISBN-13.</li>
+ * <li>
+ * <ul>
+ * <li><code>isValid(<i>value</i>)</code> - returns a boolean</li>
+ * <li><code>validate(<i>value</i>)</code> - returns a reformatted ISBN code
+ * (converts ISBN-10 to ISBN-13 if the <i>convert</i> option is <code>true</code>).</li>
+ * </ul>
+ * </li>
+ * </ul>
+ * <p>
+ * For example to validate
+ * </p>
+ * <pre>
+ * // Validate an ISBN-10 or ISBN-13 code
+ * if (!ISBNValidator.getInstance().isValid(code)) {
+ * ... // invalid
+ * }
+ * // Validate an ISBN-10 or ISBN-13 code (converting to ISBN-13)
+ * String code = ISBNValidator.getInstance().validate(code);
+ * // Validate an ISBN-10 or ISBN-13 code (not converting)
+ * String code = ISBNValidator.getInstance(false).validate(code);
+ * </pre>
+ * <a id="other.inet"></a>
+ * <h2>4.6 IP Address Validation</h2>
+ * <p>
+ * <a href="InetAddressValidator.html">InetAddressValidator</a> provides
+ * IPv4 address validation.
+ * </p>
+ * <p>
+ * For example:
+ * </p>
+ * <pre>
+ * // Get an InetAddressValidator
+ * InetAddressValidator validator = InetAddressValidator.getInstance();
+ * // Validate an IPv4 address
+ * if (!validator.isValid(candidateInetAddress)) {
+ * ... // invalid
+ * }
+ * </pre>
+ * <a id="other.email"></a>
+ * <h2>4.7 Email Address Validation</h2>
+ * <p>
+ * <a href="EmailValidator.html">EmailValidator</a> provides email address
+ * validation according to RFC 822 standards.
+ * </p>
+ * <p>
+ * For example:
+ * </p>
+ * <pre>
+ * // Get an EmailValidator
+ * EmailValidator validator = EmailValidator.getInstance();
+ * // Validate an email address
+ * boolean isAddressValid = validator.isValid("user@apache.org");
+ * // Validate a variable containing an email address
+ * if (!validator.isValid(addressFromUserForm)) {
+ * webController.sendRedirect(ERROR_REDIRECT, "Email address isn't valid");
+ * // etc.
+ * }
+ * </pre>
+ * <a id="other.url"></a>
+ * <h2>4.8 URL Validation</h2>
+ * <p>
+ * <a href="UrlValidator.html">UrlValidator</a> provides URL validation by
+ * checking the scheme, authority, path, query, and fragment in turn. Clients
+ * may specify valid schemes to be used in validating in addition to or instead of
+ * the default values (HTTP, HTTPS, FTP). The UrlValidator also supports options
+ * that change the parsing rules; for example, the ALLOW_2_SLASHES option instructs
+ * the Validator to allow consecutive slash characters in the path component, which
+ * is considered an error by default.
+ * For more information on the available options, see the UrlValidator documentation.
+ * </p>
+ * <p>
+ * For example:
+ * </p>
+ * <pre>
+ * // Get an UrlValidator
+ * UrlValidator defaultValidator = new UrlValidator(); // default schemes
+ * if (defaultValidator.isValid("http://www.apache.org")) {
+ * ... // valid
+ * }
+ * if (!defaultValidator.isValid("http//www.oops.com")) {
+ * ... // invalid
+ * }
+ * // Get an UrlValidator with custom schemes
+ * String[] customSchemes = { "sftp", "scp", "https" };
+ * UrlValidator customValidator = new UrlValidator(customSchemes);
+ * if (!customValidator.isValid("http://www.apache.org")) {
+ * ... // invalid due to insecure protocol
+ * }
+ * // Get an UrlValidator that allows double slashes in the path
+ * UrlValidator doubleSlashValidator = new UrlValidator(UrlValidator.ALLOW_2_SLASHES);
+ * if (doubleSlashValidator.isValid("http://www.apache.org//projects")) {
+ * ... // valid only in this Validator instance
+ * }
+ * </pre>
+ * <a id="other.domain"></a>
+ * <h2>4.9 Domain Name Validation</h2>
+ * <p>
+ * <a href="DomainValidator.html">DomainValidator</a> provides validation of Internet
+ * domain names as specified by RFC1034/RFC1123 and according to the IANA-recognized
+ * list of top-level domains (TLDs). Clients may validate an entire domain name, a
+ * TLD of any category, or a TLD within a specific category.
+ * </p>
+ * <p>
+ * For example:
+ * </p>
+ * <pre>
+ * // Get a DomainValidator
+ * DomainValidator validator = DomainValidator.getInstance();
+ * // Validate a domain name
+ * if (validator.isValid("www.apache.org")) {
+ * ... // valid
+ * }
+ * if (!validator.isValid("www.apache.wrong")) {
+ * ... // invalid
+ * }
+ * // Validate a TLD
+ * if (validator.isValidTld(".com")) {
+ * ... // valid
+ * }
+ * if (validator.isValidTld("org")) {
+ * ... // valid, the leading dot is optional
+ * }
+ * if (validator.isValidTld(".us")) {
+ * ... // valid, country code TLDs are also accepted
+ * }
+ * // Validate TLDs in categories
+ * if (validator.isValidGenericTld(".name")) {
+ * ... // valid
+ * }
+ * if (!validator.isValidGenericTld(".uk")) {
+ * ... // invalid, .uk is a country code TLD
+ * }
+ * if (!validator.isValidCountryCodeTld(".info")) {
+ * ... // invalid, .info is a generic TLD
+ * }
+ * </pre>
+ */
+package org.apache.commons.validator.routines;
\ No newline at end of file
diff --git a/src/main/java/org/apache/commons/validator/routines/package.html b/src/main/java/org/apache/commons/validator/routines/package.html
deleted file mode 100644
index 7edc7732..00000000
--- a/src/main/java/org/apache/commons/validator/routines/package.html
+++ /dev/null
@@ -1,835 +0,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.
--->
-<html>
-<head>
-<title>Package Documentation for org.apache.commons.validator.routines Package</title>
-</head>
-<body bgcolor="white">
-    <p>This package contains <i>independent</i> validation routines.</p>
-<h2>Table of Contents</h2>
-
-<ul>
-<li>1. <a href="#overview">Overview</a></li>
-<li>2. <a href="#date">Date and Time Validators</a>
-    <ul>
-    <li>2.1 <a href="#date.overview">Overview</a></li>
-    <li>2.2 <a href="#date.validate">Validating a Date Value</a></li>
-    <li>2.3 <a href="#date.format">Formatting</a></li>
-    <li>2.4 <a href="#date.timezone">Time Zones</a></li>
-    <li>2.5 <a href="#date.compare">Comparing Dates and Times</a></li>
-    </ul>
-</li>
-<li>3. <a href="#numeric">Numeric Validators</a>
-    <ul>
-    <li>3.1 <a href="#numeric.overview">Overview</a></li>
-    <li>3.2 <a href="#numeric.validate">Validating a Numeric Value</a></li>
-    <li>3.3 <a href="#numeric.format">Formatting</a></li>
-    <li>3.4 <a href="#numeric.compare">Comparing Numbers</a></li>
-    <li>3.5 <a href="#numeric.currency">Currency Validation</a></li>
-    <li>3.6 <a href="#numeric.percent">Percent Validation</a></li>
-    </ul>
-</li>
-<li>4. <a href="#other">Other Validators</a>
-    <ul>
-    <li>4.1 <a href="#other.overview">Overview</a></li>
-    <li>4.2 <a href="#other.regex">Regular Expression validation</a></li>
-    <li>4.3 <a href="#other.checkdigit">Check Digit Validation/Calculation</a></li>
-    <li>4.4 <a href="#other.code">General Code Validation</a></li>
-    <li>4.5 <a href="#other.isbn">ISBN Validation</a></li>
-    <li>4.6 <a href="#other.inet">IP Address Validation</a></li>
-    <li>4.7 <a href="#other.email">Email Address Validation</a></li>
-    <li>4.8 <a href="#other.url">URL Validation</a></li>
-    <li>4.9 <a href="#other.domain">Domain Name Validation</a></li>
-    </ul>
-</li>
-</ul>
-
-<a id="overview"></a>
-<h2>1. Overview</h2>
-<p>
-   Commons Validator serves two purposes:
-</p>
-    <ul>
-       <li>To provide standard, independent validation routines/functions.</li>
-       <li>To provide a <i>mini</i> framework for Validation.</li>
-    </ul>
-<p>
-   This package has been created, since version 1.3.0, in an attempt to clearly
-   separate these two concerns and is the location for the standard, independent
-   validation routines/functions in <em>Commons Validator</em>.
-</p>
-
-<p>
-   The contents of this package have no dependencies on the framework aspect of
-   Commons Validator and can be used on their own.
-</p>
-
-<a id="date"></a>
-<h2>2. Date and Time Validators</h2>
-
-<a id="date.overview"></a>
-<h2>2.1 Overview</h2>
-<p>
-   The date and time validators either validate according to a specified <i>format</i>
-   or use a standard <i>format</i> for a specified <code>Locale</code>.
-</p>
-<ul>
-   <li><a href="DateValidator.html">Date Validator</a> - validates dates
-       converting to a <code>java.util.Date</code> type.</li>
-   <li><a href="CalendarValidator.html">Calendar Validator</a> - validates dates
-       converting to a <code>java.util.Calendar</code> type.</li>
-   <li><a href="TimeValidator.html">Time Validator</a> - validates times
-       converting to a <code>java.util.Calendar</code> type.</li>
-</ul>
-
-<a id="date.validate"></a>
-<h2>2.2 Validating a Date Value</h2>
-<p>
-   You can either use one of the <code>isValid()</code> methods to just determine
-   if a date is valid, or use one of the <code>validate()</code> methods to
-   validate a date and convert it to a <code>java.util.Date</code>...
-</p>
-<pre>
-      // Get the Date validator
-      DateValidator validator = DateValidator.getInstance();
-
-      // Validate/Convert the date
-      Date fooDate = validator.validate(fooString, "dd/MM/yyyy");
-      if (fooDate == null) {
-          // error...not a valid date
-          return;
-      }
-</pre>
-
-<p>The following methods are provided to validate a date/time (return a boolean result):
-</p>
-<ul>
-    <li><code>isValid(<i>value</i>)</code></li>
-    <li><code>isValid(<i>value</i>, <i>pattern</i>)</code></li>
-    <li><code>isValid(<i>value</i>, Locale)</code></li>
-    <li><code>isValid(<i>value</i>, <i>pattern</i>, Locale)</code></li>
-</ul>
-<p>The following methods are provided to validate a date/time and convert it to either a 
-   <code>java.util.Date</code> or <code>java.util.Calendar</code>:
-</p>
-<ul>
-    <li><code>validate(<i>value</i>)</code></li>
-    <li><code>validate(<i>value</i>, <i>pattern</i>)</code></li>
-    <li><code>validate(<i>value</i>, Locale)</code></li>
-    <li><code>validate(<i>value</i>, <i>pattern</i>, Locale)</code></li>
-</ul>
-
-<a id="date.format"></a>
-<h2>2.3 Formatting</h2>
-<p>
-   Formatting and validating are two sides of the same coin. Typically
-   <i>input</i> values which are converted from Strings according to a
-   specified <i>format</i> also have to be rendered for <i>output</i> in
-   the same format. These validators provide the mechanism for formatting from
-   date/time objects to Strings. The following methods are provided to format
-   date/time values as Strings:
-</p>
-<ul>
-    <li><code>format(<i>date/calendar</i>)</code></li>
-    <li><code>format(<i>date/calendar</i>, <i>pattern</i>)</code></li>
-    <li><code>format(<i>date/calendar</i>, Locale)</code></li>
-    <li><code>format(<i>date/calendar</i>, <i>pattern</i>, Locale)</code></li>
-</ul>
-
-<a id="date.timezone"></a>
-<h2>2.4 Time Zones</h2>
-<p>
-   If the date being parsed relates to a different time zone than the
-   system default, you can specify the <code>TimeZone</code> to use when
-   validating/converting:
-</p>
-<pre>
-      // Get the GMT time zone
-      TimeZone GMT = TimeZone.getInstance("GMT");
-
-      // Validate/Convert the date using GMT
-      Date fooDate = validator.validate(fooString, "dd/MM/yyyy", GMT);
-</pre>
-
-<p>The following Time Zone <i>flavours</i> of the Validation/Conversion methods
-   are provided:</p>
-<ul>
-    <li><code>validate(<i>value</i>, TimeZone)</code></li>
-    <li><code>validate(<i>value</i>, <i>pattern</i>, TimeZone)</code></li>
-    <li><code>validate(<i>value</i>, Locale, TimeZone)</code></li>
-    <li><code>validate(<i>value</i>, <i>pattern</i>, Locale, TimeZone)</code></li>
-</ul>
-
-<a id="date.compare"></a>
-<h2>2.5 Comparing Dates and Times</h2>
-<p>
-   As well as validating that a value is a valid date or time, these validators
-   also provide <i>date comparison</i> functions. The <code>DateValidator</code>
-   and <code>CalendarValidator</code> provide functions for comparing years,
-   quarters, months, weeks and dates and the <code>TimeValidator</code> provides
-   functions for comparing hours, minutes, seconds and milliseconds.
-   For example, to check that a date is in the current month, you could use
-   the <code>compareMonths()</code> method, which compares the year and month
-   components of a date:
-</p>
-<pre>
-      // Check if the date is in the current month 
-      int compare = validator.compareMonths(fooDate, new Date(), null); 
-      if (compare == 0) { 
-          // do current month processing
-          return;
-      }
-
-      // Check if the date is in the previous quarter
-      compare = validator.compareQuarters(fooDate, new Date(), null);
-      if (compare &lt; 0) {
-          // do previous quarter processing
-          return;
-      }
-
-      // Check if the date is in the next year
-      compare = validator.compareYears(fooDate, new Date(), null);
-      if (compare &gt; 0) {
-          // do next year processing
-          return;
-      }
-</pre>
-
-
-<a id="numeric"></a>
-<h2>3 Numeric Validators</h2>
-
-<a id="numeric.overview"></a>
-<h2>3.1 Overview</h2>
-<p>
-   The numeric validators either validate according to a specified <i>format</i>
-   or use a standard <i>format</i> for a specified <code>Locale</code> or use
-   a <i>custom</i> format for a specified <code>Locale</code>.
-</p>
-<ul>
-    <li><a href="ByteValidator.html">Byte Validator</a> - validates numbers
-        converting to a <code>java.lang.Byte</code> type.</li>
-    <li><a href="ShortValidator.html">Short Validator</a> - validates numbers
-        converting to a <code>java.lang.Short</code> type.</li>
-    <li><a href="IntegerValidator.html">Integer Validator</a> - validates numbers
-        converting to a <code>java.lang.Integer</code> type.</li>
-    <li><a href="LongValidator.html">Long Validator</a> - validates numbers
-        converting to a <code>java.lang.Long</code> type.</li>
-    <li><a href="FloatValidator.html">Float Validator</a> - validates numbers
-        converting to a <code>java.lang.Float</code> type.</li>
-    <li><a href="DoubleValidator.html">Double Validator</a> - validates numbers
-        converting to a <code>java.lang.Double</code> type.</li>
-    <li><a href="BigIntegerValidator.html">BigInteger Validator</a> - validates numbers
-        converting to a <code>java.math.BigInteger</code> type.</li>
-    <li><a href="BigDecimalValidator.html">BigDecimal Validator</a> - validates numbers
-        converting to a <code>java.math.BigDecimal</code> type.</li>
-</ul>
-
-<a id="numeric.validate"></a>
-<h2>3.2 Validating a Numeric Value</h2>
-<p>
-   You can either use one of the <code>isValid()</code> methods to just determine
-   if a number is valid, or use one of the <code>validate()</code> methods to
-   validate a number and convert it to an appropriate type.
-</p>
-<p>
-   The following example validates an integer against a custom pattern
-   for the <i>German</i> locale. Please note the format is specified using
-   the standard symbols for <code>java.text.DecimalFormat</code> so although
-   the decimal separator is indicated as a period (".") in the format, the
-   validator will check using the German decimal separator - which is a comma (",").
-</p>
-<pre>
-      // Get the Integer validator
-      IntegerValidator validator = IntegerValidator.getInstance();
-
-      // Validate/Convert the number
-      Integer fooInteger = validator.validate(fooString, "#,##0.00", Locale.GERMAN);
-      if (fooInteger == null) {
-          // error...not a valid Integer
-          return;
-      }
-</pre>
-<p>The following methods are provided to validate a number (return a boolean result):</p>
-<ul>
-    <li><code>isValid(<i>value</i>)</code></li>
-    <li><code>isValid(<i>value</i>, <i>pattern</i>)</code></li>
-    <li><code>isValid(<i>value</i>, Locale)</code></li>
-    <li><code>isValid(<i>value</i>, <i>pattern</i>, Locale)</code></li>
-</ul>
-
-<p>The following methods are provided to validate a number and convert it one of 
-   the <code>java.lang.Number</code> implementations:</p>
-<ul>
-    <li><code>validate(<i>value</i>)</code></li>
-    <li><code>validate(<i>value</i>, <i>pattern</i>)</code></li>
-    <li><code>validate(<i>value</i>, Locale)</code></li>
-    <li><code>validate(<i>value</i>, <i>pattern</i>, Locale)</code></li>
-</ul>
-
-<a id="numeric.format"></a>
-<h2>3.3 Formatting</h2>
-<p>
-   Formatting and validating are two sides of the same coin. Typically
-   <i>input</i> values which are converted from Strings according to a
-   specified <i>format</i> also have to be rendered for <i>output</i> in
-   the same format. These validators provide the mechanism for formatting from
-   numeric objects to Strings. The following methods are provided to format
-   numeric values as Strings:
-</p>
-<ul>
-    <li><code>format(<i>number</i>)</code></li>
-    <li><code>format(<i>number</i>, <i>pattern</i>)</code></li>
-    <li><code>format(<i>number</i>, Locale)</code></li>
-    <li><code>format(<i>number</i>, <i>pattern</i>, Locale)</code></li>
-</ul>
-
-<a id="numeric.compare"></a>
-<h2>3.4 Comparing Numbers</h2>
-<p>
-   As well as validating that a value is a valid number, these validators
-   also provide functions for validating the <i>minimum</i>, <i>maximum</i> 
-   and <i>range</i> of a value.
-</p>
-<pre>
-      // Check the number is between 25 and 75
-      if (validator.isInRange(fooInteger, 25, 75) {
-          // valid...in the specified range
-          return;
-      }
-</pre>
-
-<a id="numeric.currency"></a>
-<h2>3.5 Currency Validation</h2>
-<p>
-   A default <a href="CurrencyValidator.html">Currency Validator</a> 
-   implementation is provided, although all the <i>numeric</i> validators
-   support currency validation. The default implementation converts
-   currency amounts to a <code>java.math.BigDecimal</code> and additionally
-   it provides <i>lenient</i> currency symbol validation. That is, currency
-   amounts are valid with <i>or</i> without the currency symbol.
-</p>
-<pre>
-      BigDecimalValidator validator = CurrencyValidator.getInstance();
-
-      BigDecimal fooAmount = validator.validate("$12,500.00", Locale.US);
-      if (fooAmount == null) {
-          // error...not a valid currency amount
-          return;
-      }
-
-      // Check the amount is a minimum of $1,000
-      if (validator.minValue(fooAmount, 1000) {
-          // valid...in the specified range
-          return;
-      }
-</pre>
-
-<p>
-   If, for example, you want to use the <a href="IntegerValidator.html">Integer
-   Validator</a> to validate a currency, then you can simply create a 
-   new instance with the appropriate <i>format style</i>. Note that
-   the other validators do not support the <i>lenient</i> currency symbol
-   validation.
-</p>
-
-<pre>
-      IntegerValidator validator = 
-          new IntegerValidator(true, IntegerValidator.CURRENCY_FORMAT);
-
-      String pattern = "#,###" + '\u00A4' + '\u00A4';  // Use international symbol
-
-      Integer fooAmount = validator.validate("10.100EUR", pattern, Locale.GERMAN);
-      if (fooAmount == null) {
-          // error...not a valid currency amount
-          return;
-      }
-</pre>
-
-<a id="numeric.percent"></a>
-<h2>3.6 Percent Validation</h2>
-<p>
-   A default <a href="PercentValidator.html">Percent Validator</a> 
-   implementation is provided, although the <i>Float</i>,
-   <i>Double</i> and <i>BigDecimal</i> validators also support
-   percent validation. The default implementation converts
-   percent amounts to a <code>java.math.BigDecimal</code> and additionally
-   it provides <i>lenient</i> percent symbol validation. That is, percent 
-   amounts are valid with <i>or</i> without the percent symbol.
-</p>
-
-<pre>
-      BigDecimalValidator validator = PercentValidator.getInstance();
-
-      BigDecimal fooPercent = validator.validate("20%", Locale.US);
-      if (fooPercent == null) {
-          // error...not a valid percent
-          return;
-      }
-
-      // Check the percent is between 10% and 90%
-      if (validator.isInRange(fooPercent, 0.1, 0.9) {
-          // valid...in the specified range
-          return;
-      }
-</pre>
-
-<p>
-   If, for example, you want to use the <a href="FloatValidator.html">Float
-   Validator</a> to validate a percent, then you can simply create a 
-   new instance with the appropriate <i>format style</i>. Note that
-   the other validators do not support the <i>lenient</i> percent symbol
-   validation.
-</p>
-
-<pre>
-      FloatValidator validator = 
-          new FloatValidator(true, FloatValidator.PERCENT_FORMAT);
-
-      Float fooPercent = validator.validate("20%", "###%");
-      if (fooPercent == null) {
-          // error...not a valid percent
-          return;
-      }
-
-</pre>
-<p>
-   <strong>Note</strong>: in theory the other numeric validators besides
-   <i>Float</i>, <i>Double</i> and <i>BigDecimal</i> (i.e. <i>Byte</i>, 
-   <i>Short</i>, <i>Integer</i>, <i>Long</i> and <i>BigInteger</i>)
-   also support percent validation. However, since they don't allow fractions
-   they will only work with percentages greater than 100%.
-</p>
-
-<a id="other"></a>
-<h2>4. Other Validators</h2>
-
-<a id="other.overview"></a>
-<h2>4.1 Overview</h2>
-<p>
-   This section lists other available validators.
-</p>
-<ul>
-   <li><a href="#other.regex">Regular Expressions</a> - validates
-       using Java 1.4+ regular expression support</li>
-   <li><a href="#other.checkdigit">Check Digit</a> - validates/calculates
-       check digits (i.e. EAN/UPC, credit card, ISBN).</li>
-   <li><a href="#other.code">Code Validation</a> - provides generic
-     code validation - format, minimum/maximum length and check digit.</li>
-   <li><a href="#other.isbn">ISBN Validation</a> - provides ISBN-10
-       and ISBN-13 validation.</li>
-   <li><a href="#other.inet">IP Address Validation</a> - provides IPv4 address
-       validation.</li>
-   <li><a href="#other.email">Email Address Validation</a> - provides email
-       address validation according to RFC 822 standards.</li>
-   <li><a href="#other.url">URL Validation</a> - provides URL validation on
-       scheme, domain, and authority.</li>
-   <li><a href="#other.domain">Domain Name Validation</a> - provides domain
-       name and IANA TLD validation.</li>
-</ul>
-
-<a id="other.regex"></a>
-<h2>4.2 Regular Expression Validation</h2>
-<p>
-   Regular expression validation can be done either by using the <i>static</i>
-   methods provied by <a href="RegexValidator.html">RegexValidator</a> or
-   by creating a new instance, which caches and re-uses compiled Patterns.
-</p>
-<ul>
-   <li><b>Method Flavours</b> - three <i>flavours</i> of validation metods are provided:</li>
-    <li>
-    <ul>
-        <li><code>isValid()</code> methods return true/false to indicate
-            whether validation was successful.</li>
-        <li><code>validate()</code> methods return a <code>String</code>
-            value of the matched <i>groups</i> aggregated together or
-            <code>null</code> if invalid.</li>
-        <li><code>match()</code> methods return a <code>String</code> array
-            of the matched <i>groups</i> or <code>null</code> if invalid.</li>
-    </ul>
-    </li>
-   <li><b>Case Sensitivity</b> - matching can be done in either a <i>case
-       sensitive</i> or <i>case in-sensitive</i> way.</li>
-   <li><b>Multiple Expressions</b> - instances of the
-       <a href="RegexValidator.html">RegexValidator</a>
-       can be created to either match against a single regular expression
-       or set (String array) of regular expressions.</li>
-</ul>
-<p>
-   Below is an example of using one of the static methods to validate,
-   matching in a <i>case insensitive</i> manner and returning a String
-   of the matched groups (which doesn't include the hyphen).
-</p>
-<pre>
-      // set up the parameters
-      boolean caseSensitive   = false;
-      String regex            = "^([A-Z]*)(?:\\-)([A-Z]*)$";
-
-      // validate - result should be a String of value "abcdef"
-      String result = RegexValidator.validate("abc-def", regex, caseSensitive);
-
-</pre>
-
-<p>The following static methods are provided for regular expression validation:
-</p>
-<ul>
-    <li><code>isValid(<i>value</i>, <i>regex</i>)</code></li>
-    <li><code>isValid(<i>value</i>, <i>regex</i>, <i>caseSensitive</i>)</code></li>
-    <li><code>validate(<i>value</i>, <i>regex</i>)</code></li>
-    <li><code>validate(<i>value</i>, <i>regex</i>, <i>caseSensitive</i>)</code></li>
-    <li><code>match(<i>value</i>, <i>regex</i>)</code></li>
-    <li><code>match(<i>value</i>, <i>regex</i>, <i>caseSensitive</i>)</code></li>
-</ul>
-<p>
-   Below is an example of creating an instance of
-   <a href="RegexValidator.html">RegexValidator</a> matching in a <i>case insensitive</i>
-   manner against a set of regular expressions:
-</p>
-<pre>
-      // set up the parameters
-      boolean caseSensitive = false;
-      String regex1   = "^([A-Z]*)(?:\\-)([A-Z]*)*$"
-      String regex2   = "^([A-Z]*)$";
-      String[] regexs = new String[] {regex1, regex1};
-
-      // Create the validator
-      RegexValidator validator = new RegexValidator(regexs, caseSensitive);
-
-      // Validate true/false
-      boolean valid = validator.isValid("abc-def");
-
-      // Validate and return a String
-      String result = validator.validate("abc-def");
-
-      // Validate and return a String[]
-      String[] groups = validator.match("abc-def");
-
-</pre>
-<p>See the
-   <a href="RegexValidator.html">RegexValidator</a> javadoc for a full list
-   of the available constructors.
-</p>
-
-<a id="other.checkdigit"></a>
-<h2>4.3 Check Digit validation/calculation</h2>
-<p>
-   <a href="checkdigit/CheckDigit.html">CheckDigit</a> defines a new
-   type for the calculation and validation of check digits with the 
-   following methods:
-</p>
-<ul>
-    <li><code>isValid(<i>code</i>)</code> - validates the check digit of a code,
-        returning <code>true</code> or <code>false</code>.</li>
-    <li><code>calculate(<i>code</i>)</code> - calulates the check digit for a code
-        returning the check digit character.</li>
-</ul>
-<p>
-   The following implementations are provided:
-</p>
-<ul>
-    <li><a href="checkdigit/ABANumberheckDigit.html">ABANumberCheckDigit</a>
-        for <b>ABA Number</b> (or <b>Routing Transit Number</b> (RTN)) check digit calculation.</li>
-    <li><a href="checkdigit/CUSIPCheckDigit.html">CUSIPCheckDigit</a>
-        for <b>CUSIP</b> (North American Securities) check digit calculation.</li>
-    <li><a href="checkdigit/EAN13CheckDigit.html">EAN13CheckDigit</a>
-        for <b>EAN-13</b>, <b>UPC</b>, <b>ISBN-13</b> check digit calculation.</li>
-    <li><a href="checkdigit/ISBNCheckDigit.html">ISBNCheckDigit</a>
-        for <b>ISBN-10</b> and <b>ISBN-13</b> check digit calculation.</li>
-    <li><a href="checkdigit/ISBN10CheckDigit.html">ISBN10CheckDigit</a>
-        for <b>ISBN-10</b> check digit calculation.</li>
-    <li><a href="checkdigit/ISINCheckDigit.html">ISINCheckDigit</a>
-        for <b>ISIN</b> International Securities Identifying Number check digit calculation.</li>
-    <li><a href="checkdigit/LuhnCheckDigit.html">LuhnCheckDigit</a>
-        for <b>Luhn</b> check digit calculation - used by <b>credit cards</b>.</li>
-    <li><a href="checkdigit/ModulusCheckDigit.html">ModulusCheckDigit</a>
-        - <b>abstract</b> class for custom <b>modulus</b> check digit
-        implementations.</li>
-    <li><a href="checkdigit/SedolCheckDigit.html">SedolCheckDigit</a>
-        for <b>SEDOL</b> (UK Securities) check digit calculation.</li>
-    <li><a href="checkdigit/VerhoeffCheckDigit.html">VerhoeffCheckDigit</a>
-        for <b>Verhoeff</b> (Dihedral) check digit calculation.</li>
-</ul>
-<p>
-   The following examples show validating the check digit of a code:
-</p>
-<pre>
-
-      // Luhn check digit validation
-      boolean valid = LuhnCheckDigit.INSTANCE.isValid(code);
-
-      // EAN / UPC / ISBN-13 check digit validation
-      boolean valid = EAN13CheckDigit.INSTANCE.isValid(code);
-
-      // ISBN-10 check digit validation
-      boolean valid = ISBNCheckDigit.ISBN10.isValid(code);
-      boolean valid = ISBN10CheckDigit.INSTANCE.isValid(code);
-
-      // ISBN-13 check digit validation
-      boolean valid = ISBNCheckDigit.ISBN13.isValid(code);
-
-      // ISBN-10 or ISBN-13 check digit validation
-      boolean valid = ISBNCheckDigit.ISBN.isValid(code);
-
-</pre>
-<p>
-   The following examples show calulating the check digit of a code:
-</p>
-<pre>
-
-      // Luhn check digit validation
-      char checkdigit = LuhnCheckDigit.INSTANCE.calculate(code);
-
-      // EAN / UPC / ISBN-13 check digit validation
-      char checkdigit = EAN13CheckDigit.INSTANCE.calculate(code);
-
-      // ISBN-10 check digit validation
-      char checkdigit = ISBNCheckDigit.ISBN10.isValid(code);
-      char checkdigit = ISBN10CheckDigit.INSTANCE.calculate(code);
-
-      // ISBN-13 check digit validation
-      char checkdigit = ISBNCheckDigit.ISBN13.calculate(code);
-
-      // ISBN-10 or ISBN-13 check digit validation
-      char checkdigit = ISBNCheckDigit.ISBN.calculate(code);
-
-</pre>
-
-
-<a id="other.code"></a>
-<h2>4.4 General Code validation</h2>
-<p>
-   <a href="CodeValidator.html">CodeValidator</a> provides a generic
-   implementation for validating codes. It performs the following
-   validations on a code:
-</p>
-<ul>
-    <li><b>Format</b> - the format of the code is validated using
-        a <i>regular expression</i> (see  <a href="RegexValidator.html">RegexValidator</a>).</li>
-    <li><b>Length</b> - the minimum/maximum length of the code is
-        checked - after being parsed by the regular expression - with which
-        <i>format</i> characters can be removed with the use of
-        <i>non-capturing</i> groups.</li>
-    <li><b>Check Digit</b> - a <a href="checkdigit/CheckDigit.html">CheckDigit</a>
-        routine checks that code's check digit is valid.</li>
-</ul>
-<p>
-   For example to create a validator to validate EAN-13 codes (numeric,
-   with a length of 13):
-</p>
-<pre>
-
-      // Create an EAN-13 code validator
-      CodeValidator validator = new CodeValidator("^[0-9]*$", 13, EAN13CheckDigit.INSTANCE);
-
-      // Validate an EAN-13 code
-      if (!validator.isValid(code)) {
-          ... // invalid
-      }
-
-</pre>
-
-<a id="other.isbn"></a>
-<h2>4.5 ISBN validation</h2>
-<p>
-   <a href="ISBNValidator.html">ISBNValidator</a> provides ISBN-10
-   and ISBN-13 validation and can <i>optionally</i> convert
-   ISBN-10 codes to ISBN-13.
-</p>
-<ul>
-    <li><b>ISBN-10</b> - validates using a
-        <a href="CodeValidator.html">CodeValidator</a> with the
-        <a href="checkdigit/ISBN10CheckDigit.html">ISBN10CheckDigit</a>
-        routine.</li>
-        <li>
-        <ul>
-            <li><code>isValidISBN10(<i>value</i>)</code> - returns a boolean</li>
-            <li><code>validateISBN10(<i>value</i>)</code> - returns a reformatted ISBN-10 code</li>
-        </ul>
-        </li>
-    <li><b>ISBN-13</b> - validates using a
-        <a href="CodeValidator.html">CodeValidator</a> with the
-        <a href="checkdigit/EAN13CheckDigit.html">EAN13CheckDigit</a>
-        routine.</li>
-        <li>
-        <ul>
-            <li><code>isValidISBN13(<i>value</i>)</code> - returns a boolean</li>
-            <li><code>validateISBN13(<i>value</i>)</code> - returns a reformatted ISBN-13 code</li>
-        </ul>
-        </li>
-    <li><b>ISBN-10</b> and <b>ISBN-13</b> - validates codes are either
-        valid ISBN-10 or valid ISBN-13 - optionally can convert ISBN-10 codes to ISBN-13.</li>
-        <li>
-        <ul>
-            <li><code>isValid(<i>value</i>)</code> - returns a boolean</li>
-            <li><code>validate(<i>value</i>)</code> - returns a reformatted ISBN code
-                (converts ISBN-10 to ISBN-13 if the <i>convert</i> option is <code>true</code>).</li>
-        </ul>
-        </li>
-</ul>
-<p>
-   For example to validate
-</p>
-<pre>
-
-      // Validate an ISBN-10 or ISBN-13 code
-      if (!ISBNValidator.getInstance().isValid(code)) {
-          ... // invalid
-      }
-
-      // Validate an ISBN-10 or ISBN-13 code (converting to ISBN-13)
-      String code = ISBNValidator.getInstance().validate(code);
-
-      // Validate an ISBN-10 or ISBN-13 code (not converting)
-      String code = ISBNValidator.getInstance(false).validate(code);
-
-</pre>
-
-<a id="other.inet"></a>
-<h2>4.6 IP Address Validation</h2>
-
-<p>
-    <a href="InetAddressValidator.html">InetAddressValidator</a> provides
-    IPv4 address validation.
-</p>
-<p>
-    For example:
-</p>
-<pre>
-
-      // Get an InetAddressValidator
-      InetAddressValidator validator = InetAddressValidator.getInstance();
-
-      // Validate an IPv4 address
-      if (!validator.isValid(candidateInetAddress)) {
-          ... // invalid
-      }
-
-</pre>
-
-<a id="other.email"></a>
-<h2>4.7 Email Address Validation</h2>
-
-<p>
-    <a href="EmailValidator.html">EmailValidator</a> provides email address
-    validation according to RFC 822 standards.
-</p>
-<p>
-    For example:
-</p>
-<pre>
-      // Get an EmailValidator
-      EmailValidator validator = EmailValidator.getInstance();
-
-      // Validate an email address
-      boolean isAddressValid = validator.isValid("user@apache.org");
-
-      // Validate a variable containing an email address
-      if (!validator.isValid(addressFromUserForm)) {
-          webController.sendRedirect(ERROR_REDIRECT, "Email address isn't valid");
-          // etc.
-      }
-</pre>
-
-<a id="other.url"></a>
-<h2>4.8 URL Validation</h2>
-
-<p>
-    <a href="UrlValidator.html">UrlValidator</a> provides URL validation by
-    checking the scheme, authority, path, query, and fragment in turn. Clients
-    may specify valid schemes to be used in validating in addition to or instead of
-    the default values (HTTP, HTTPS, FTP). The UrlValidator also supports options
-    that change the parsing rules; for example, the ALLOW_2_SLASHES option instructs
-    the Validator to allow consecutive slash characters in the path component, which
-    is considered an error by default.
-
-    For more information on the available options, see the UrlValidator documentation.
-</p>
-<p>
-    For example:
-</p>
-<pre>
-      // Get an UrlValidator
-      UrlValidator defaultValidator = new UrlValidator(); // default schemes
-      if (defaultValidator.isValid("http://www.apache.org")) {
-          ... // valid
-      }
-      if (!defaultValidator.isValid("http//www.oops.com")) {
-          ... // invalid
-      }
-
-      // Get an UrlValidator with custom schemes
-      String[] customSchemes = { "sftp", "scp", "https" };
-      UrlValidator customValidator = new UrlValidator(customSchemes);
-      if (!customValidator.isValid("http://www.apache.org")) {
-          ... // invalid due to insecure protocol
-      }
-
-      // Get an UrlValidator that allows double slashes in the path
-      UrlValidator doubleSlashValidator = new UrlValidator(UrlValidator.ALLOW_2_SLASHES);
-      if (doubleSlashValidator.isValid("http://www.apache.org//projects")) {
-          ... // valid only in this Validator instance
-      }
-</pre>
-
-<a id="other.domain"></a>
-<h2>4.9 Domain Name Validation</h2>
-
-<p>
-    <a href="DomainValidator.html">DomainValidator</a> provides validation of Internet
-    domain names as specified by RFC1034/RFC1123 and according to the IANA-recognized
-    list of top-level domains (TLDs). Clients may validate an entire domain name, a
-    TLD of any category, or a TLD within a specific category.
-</p>
-<p>
-    For example:
-</p>
-<pre>
-      // Get a DomainValidator
-      DomainValidator validator = DomainValidator.getInstance();
-
-      // Validate a domain name
-      if (validator.isValid("www.apache.org")) {
-          ... // valid
-      }
-      if (!validator.isValid("www.apache.wrong")) {
-          ... // invalid
-      }
-
-      // Validate a TLD
-      if (validator.isValidTld(".com")) {
-          ... // valid
-      }
-      if (validator.isValidTld("org")) {
-          ... // valid, the leading dot is optional
-      }
-      if (validator.isValidTld(".us")) {
-          ... // valid, country code TLDs are also accepted
-      }
-
-      // Validate TLDs in categories
-      if (validator.isValidGenericTld(".name")) {
-          ... // valid
-      }
-      if (!validator.isValidGenericTld(".uk")) {
-          ... // invalid, .uk is a country code TLD
-      }
-      if (!validator.isValidCountryCodeTld(".info")) {
-          ... // invalid, .info is a generic TLD
-      }
-</pre>
-</body>
-</html>


[commons-validator] 01/04: Javadoc: Convert package.html to package-info.java

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-validator.git

commit 4f003b6f2d3ff2ddcaf098316c7dc5a28aaf799e
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Mar 19 16:31:12 2023 -0400

    Javadoc: Convert package.html to package-info.java
---
 .../routines/checkdigit/package-info.java          | 25 +++++++++++++++++++
 .../validator/routines/checkdigit/package.html     | 29 ----------------------
 2 files changed, 25 insertions(+), 29 deletions(-)

diff --git a/src/main/java/org/apache/commons/validator/routines/checkdigit/package-info.java b/src/main/java/org/apache/commons/validator/routines/checkdigit/package-info.java
new file mode 100644
index 00000000..58a39bd5
--- /dev/null
+++ b/src/main/java/org/apache/commons/validator/routines/checkdigit/package-info.java
@@ -0,0 +1,25 @@
+/*
+ * 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 package contains <i>Check Digit</i> validation/calculation routines.
+ * <p>
+ * Note that these <b>do not validate</b> the input for length or syntax. Such validation is performed by the org.apache.commons.validator.routines.XYZValidator
+ * classes.
+ * </p>
+ */
+package org.apache.commons.validator.routines.checkdigit;
\ No newline at end of file
diff --git a/src/main/java/org/apache/commons/validator/routines/checkdigit/package.html b/src/main/java/org/apache/commons/validator/routines/checkdigit/package.html
deleted file mode 100644
index ffaf91bf..00000000
--- a/src/main/java/org/apache/commons/validator/routines/checkdigit/package.html
+++ /dev/null
@@ -1,29 +0,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.
--->
-<html>
-<head>
-<title>Package Documentation for org.apache.commons.validator.routines.checkdigit Package</title>
-</head>
-<body bgcolor="white">
-
-    <p>This package contains <i>Check Digit</i> validation/calculation routines.</p>
-    <p>Note that these <b>do not validate</b> the input for length or syntax.<br>
-       Such validation is performed by the org.apache.commons.validator.routines.XYZValidator classes.
-    </p>
-
-</body>
-</html>


[commons-validator] 03/04: Javadoc: Convert package.html to package-info.java

Posted by gg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-validator.git

commit bc4d1e11e255b0cb97f35613a61fb49d257684cc
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Mar 19 16:31:23 2023 -0400

    Javadoc: Convert package.html to package-info.java
---
 .../commons/validator/util/package-info.java       | 21 +++++++++++++++++
 .../org/apache/commons/validator/util/package.html | 26 ----------------------
 2 files changed, 21 insertions(+), 26 deletions(-)

diff --git a/src/main/java/org/apache/commons/validator/util/package-info.java b/src/main/java/org/apache/commons/validator/util/package-info.java
new file mode 100644
index 00000000..523c6580
--- /dev/null
+++ b/src/main/java/org/apache/commons/validator/util/package-info.java
@@ -0,0 +1,21 @@
+/*
+ * 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 package contains utility classes used by Commons Validator.
+ */
+package org.apache.commons.validator.util;
\ No newline at end of file
diff --git a/src/main/java/org/apache/commons/validator/util/package.html b/src/main/java/org/apache/commons/validator/util/package.html
deleted file mode 100644
index ce4613ba..00000000
--- a/src/main/java/org/apache/commons/validator/util/package.html
+++ /dev/null
@@ -1,26 +0,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.
--->
-<html>
-<head>
-<title>Package Documentation for org.apache.commons.validator.util Package</title>
-</head>
-<body bgcolor="white">
-<p>
-This package contains utility classes used by Commons Validator.
-</p>
-</body>
-</html>