org.apache.commons.validator
Class ValidatorResources

java.lang.Object
  extended by org.apache.commons.validator.ValidatorResources
All Implemented Interfaces:
java.io.Serializable

public class ValidatorResources
extends java.lang.Object
implements java.io.Serializable

General purpose class for storing FormSet objects based on their associated Locale. Instances of this class are usually configured through a validation.xml file that is parsed in a constructor.

Note - Classes that extend this class must be Serializable so that instances may be used in distributable application server environments.

The use of FastHashMap is deprecated and will be replaced in a future release.

Version:
$Revision: 478473 $ $Date: 2006-11-23 05:42:30 +0000 (Thu, 23 Nov 2006) $
See Also:
Serialized Form

Field Summary
private static java.lang.String ARGS_PATTERN
           
protected  FormSet defaultFormSet
          This is the default FormSet (without locale).
protected static java.util.Locale defaultLocale
          The default locale on our server.
protected  org.apache.commons.collections.FastHashMap hActions
          Deprecated. Subclasses should use getActions() instead.
protected  org.apache.commons.collections.FastHashMap hConstants
          Deprecated. Subclasses should use getConstants() instead.
protected  org.apache.commons.collections.FastHashMap hFormSets
          Deprecated. Subclasses should use getFormSets() instead.
private  org.apache.commons.logging.Log log
           
private static java.lang.String[] REGISTRATIONS
          The set of public identifiers, and corresponding resource names, for the versions of the configuration file DTDs that we know about.
private static java.lang.String VALIDATOR_RULES
          Name of the digester validator rules file
 
Constructor Summary
ValidatorResources()
          Create an empty ValidatorResources object.
ValidatorResources(java.io.InputStream in)
          Create a ValidatorResources object from an InputStream.
ValidatorResources(java.io.InputStream[] streams)
          Create a ValidatorResources object from an InputStream.
ValidatorResources(java.lang.String uri)
          Create a ValidatorResources object from an uri
ValidatorResources(java.lang.String[] uris)
          Create a ValidatorResources object from several uris
ValidatorResources(java.net.URL url)
          Create a ValidatorResources object from a URL.
ValidatorResources(java.net.URL[] urls)
          Create a ValidatorResources object from several URL.
 
Method Summary
 void addConstant(java.lang.String name, java.lang.String value)
          Add a global constant to the resource.
 void addFormSet(FormSet fs)
          Add a FormSet to this ValidatorResources object.
private  void addOldArgRules(org.apache.commons.digester.Digester digester)
          Create a Rule to handle arg0-arg3 elements.
 void addValidatorAction(ValidatorAction va)
          Add a ValidatorAction to the resource.
protected  java.lang.String buildKey(FormSet fs)
          Builds a key to store the FormSet under based on it's language, country, and variant values.
private  java.lang.String buildLocale(java.lang.String lang, java.lang.String country, java.lang.String variant)
          Assembles a Locale code from the given parts.
protected  java.util.Map getActions()
          Returns a Map of String ValidatorAction names to their ValidatorAction.
protected  java.util.Map getConstants()
          Returns a Map of String constant names to their String values.
 Form getForm(java.util.Locale locale, java.lang.String formKey)
          Gets a Form based on the name of the form and the Locale that most closely matches the Locale passed in.
 Form getForm(java.lang.String language, java.lang.String country, java.lang.String variant, java.lang.String formKey)
          Gets a Form based on the name of the form and the Locale that most closely matches the Locale passed in.
(package private)  FormSet getFormSet(java.lang.String language, java.lang.String country, java.lang.String variant)
          Gets a FormSet based on the language, country and variant.
protected  java.util.Map getFormSets()
          Returns a Map of String locale keys to Lists of their FormSets.
private  org.apache.commons.logging.Log getLog()
          Accessor method for Log instance.
private  FormSet getParent(FormSet fs)
          Finds the given formSet's parent.
 ValidatorAction getValidatorAction(java.lang.String key)
          Get a ValidatorAction based on it's name.
 java.util.Map getValidatorActions()
          Get an unmodifiable Map of the ValidatorActions.
private  org.apache.commons.digester.Digester initDigester()
          Initialize the digester.
 void process()
          Process the ValidatorResources object.
private  void processForms()
          Process the Form objects.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VALIDATOR_RULES

private static final java.lang.String VALIDATOR_RULES
Name of the digester validator rules file

See Also:
Constant Field Values

REGISTRATIONS

private static final java.lang.String[] REGISTRATIONS
The set of public identifiers, and corresponding resource names, for the versions of the configuration file DTDs that we know about. There MUST be an even number of Strings in this list!


log

private transient org.apache.commons.logging.Log log

hFormSets

protected org.apache.commons.collections.FastHashMap hFormSets
Deprecated. Subclasses should use getFormSets() instead.
Map of FormSets stored under a Locale key.


hConstants

protected org.apache.commons.collections.FastHashMap hConstants
Deprecated. Subclasses should use getConstants() instead.
Map of global constant values with the name of the constant as the key.


hActions

protected org.apache.commons.collections.FastHashMap hActions
Deprecated. Subclasses should use getActions() instead.
Map of ValidatorActions with the name of the ValidatorAction as the key.


defaultLocale

protected static java.util.Locale defaultLocale
The default locale on our server.


defaultFormSet

protected FormSet defaultFormSet
This is the default FormSet (without locale). (We probably don't need the defaultLocale anymore.)


ARGS_PATTERN

private static final java.lang.String ARGS_PATTERN
See Also:
Constant Field Values
Constructor Detail

ValidatorResources

public ValidatorResources()
Create an empty ValidatorResources object.


ValidatorResources

public ValidatorResources(java.io.InputStream in)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
Create a ValidatorResources object from an InputStream.

Parameters:
in - InputStream to a validation.xml configuration file. It's the client's responsibility to close this stream.
Throws:
java.io.IOException
org.xml.sax.SAXException - if the validation XML files are not valid or well formed.
java.io.IOException - if an I/O error occurs processing the XML files
Since:
Validator 1.1

ValidatorResources

public ValidatorResources(java.io.InputStream[] streams)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
Create a ValidatorResources object from an InputStream.

Parameters:
streams - An array of InputStreams to several validation.xml configuration files that will be read in order and merged into this object. It's the client's responsibility to close these streams.
Throws:
java.io.IOException
org.xml.sax.SAXException - if the validation XML files are not valid or well formed.
java.io.IOException - if an I/O error occurs processing the XML files
Since:
Validator 1.1

ValidatorResources

public ValidatorResources(java.lang.String uri)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
Create a ValidatorResources object from an uri

Parameters:
uri - The location of a validation.xml configuration file.
Throws:
java.io.IOException
org.xml.sax.SAXException - if the validation XML files are not valid or well formed.
java.io.IOException - if an I/O error occurs processing the XML files
Since:
Validator 1.2

ValidatorResources

public ValidatorResources(java.lang.String[] uris)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
Create a ValidatorResources object from several uris

Parameters:
uris - An array of uris to several validation.xml configuration files that will be read in order and merged into this object.
Throws:
java.io.IOException
org.xml.sax.SAXException - if the validation XML files are not valid or well formed.
java.io.IOException - if an I/O error occurs processing the XML files
Since:
Validator 1.2

ValidatorResources

public ValidatorResources(java.net.URL url)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
Create a ValidatorResources object from a URL.

Parameters:
url - The URL for the validation.xml configuration file that will be read into this object.
Throws:
java.io.IOException
org.xml.sax.SAXException - if the validation XML file are not valid or well formed.
java.io.IOException - if an I/O error occurs processing the XML files
Since:
Validator 1.3.1

ValidatorResources

public ValidatorResources(java.net.URL[] urls)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
Create a ValidatorResources object from several URL.

Parameters:
urls - An array of URL to several validation.xml configuration files that will be read in order and merged into this object.
Throws:
java.io.IOException
org.xml.sax.SAXException - if the validation XML files are not valid or well formed.
java.io.IOException - if an I/O error occurs processing the XML files
Since:
Validator 1.3.1
Method Detail

initDigester

private org.apache.commons.digester.Digester initDigester()
Initialize the digester.


addOldArgRules

private void addOldArgRules(org.apache.commons.digester.Digester digester)
Create a Rule to handle arg0-arg3 elements. This will allow validation.xml files that use the versions of the DTD prior to Validator 1.2.0 to continue working.


addFormSet

public void addFormSet(FormSet fs)
Add a FormSet to this ValidatorResources object. It will be associated with the Locale of the FormSet.

Parameters:
fs - The form set to add.
Since:
Validator 1.1

addConstant

public void addConstant(java.lang.String name,
                        java.lang.String value)
Add a global constant to the resource.

Parameters:
name - The constant name.
value - The constant value.

addValidatorAction

public void addValidatorAction(ValidatorAction va)
Add a ValidatorAction to the resource. It also creates an instance of the class based on the ValidatorActions classname and retrieves the Method instance and sets them in the ValidatorAction.

Parameters:
va - The validator action.

getValidatorAction

public ValidatorAction getValidatorAction(java.lang.String key)
Get a ValidatorAction based on it's name.

Parameters:
key - The validator action key.
Returns:
The validator action.

getValidatorActions

public java.util.Map getValidatorActions()
Get an unmodifiable Map of the ValidatorActions.

Returns:
Map of validator actions.

buildKey

protected java.lang.String buildKey(FormSet fs)
Builds a key to store the FormSet under based on it's language, country, and variant values.

Parameters:
fs - The Form Set.
Returns:
generated key for a formset.

buildLocale

private java.lang.String buildLocale(java.lang.String lang,
                                     java.lang.String country,
                                     java.lang.String variant)
Assembles a Locale code from the given parts.


getForm

public Form getForm(java.util.Locale locale,
                    java.lang.String formKey)

Gets a Form based on the name of the form and the Locale that most closely matches the Locale passed in. The order of Locale matching is:

  1. language + country + variant
  2. language + country
  3. language
  4. default locale

Parameters:
locale - The Locale.
formKey - The key for the Form.
Returns:
The validator Form.
Since:
Validator 1.1

getForm

public Form getForm(java.lang.String language,
                    java.lang.String country,
                    java.lang.String variant,
                    java.lang.String formKey)

Gets a Form based on the name of the form and the Locale that most closely matches the Locale passed in. The order of Locale matching is:

  1. language + country + variant
  2. language + country
  3. language
  4. default locale

Parameters:
language - The locale's language.
country - The locale's country.
variant - The locale's language variant.
formKey - The key for the Form.
Returns:
The validator Form.
Since:
Validator 1.1

process

public void process()
Process the ValidatorResources object. Currently sets the FastHashMap s to the 'fast' mode and call the processes all other resources. Note : The framework calls this automatically when ValidatorResources is created from an XML file. If you create an instance of this class by hand you must call this method when finished.


processForms

private void processForms()

Process the Form objects. This clones the Fields that don't exist in a FormSet compared to its parent FormSet.


getParent

private FormSet getParent(FormSet fs)
Finds the given formSet's parent. ex: A formSet with locale en_UK_TEST1 has a direct parent in the formSet with locale en_UK. If it doesn't exist, find the formSet with locale en, if no found get the defaultFormSet.

Parameters:
fs - the formSet we want to get the parent from
Returns:
fs's parent

getFormSet

FormSet getFormSet(java.lang.String language,
                   java.lang.String country,
                   java.lang.String variant)

Gets a FormSet based on the language, country and variant.

Parameters:
language - The locale's language.
country - The locale's country.
variant - The locale's language variant.
Returns:
The FormSet for a locale.
Since:
Validator 1.2

getFormSets

protected java.util.Map getFormSets()
Returns a Map of String locale keys to Lists of their FormSets.

Returns:
Map of Form sets
Since:
Validator 1.2.0

getConstants

protected java.util.Map getConstants()
Returns a Map of String constant names to their String values.

Returns:
Map of Constants
Since:
Validator 1.2.0

getActions

protected java.util.Map getActions()
Returns a Map of String ValidatorAction names to their ValidatorAction.

Returns:
Map of Validator Actions
Since:
Validator 1.2.0

getLog

private org.apache.commons.logging.Log getLog()
Accessor method for Log instance. The Log instance variable is transient and accessing it through this method ensures it is re-initialized when this instance is de-serialized.

Returns:
The Log instance.


Copyright (c) 2001-2004 Apache Software Foundation