com.opensymphony.xwork2.validator
Class DefaultActionValidatorManager

java.lang.Object
  extended by com.opensymphony.xwork2.validator.DefaultActionValidatorManager
All Implemented Interfaces:
ActionValidatorManager

public class DefaultActionValidatorManager
extends Object
implements ActionValidatorManager

This is the entry point into XWork's rule-based validation framework. Validation rules are specified in XML configuration files named "className-contextName-validation.xml" where className is the name of the class the configuration is for and -contextName is optional (contextName is an arbitrary key that is used to look up additional validation rules for a specific context).

Author:
Jason Carreira, Mark Woon, James House, Rainer Hermanns

Field Summary
private static Log LOG
           
protected static String VALIDATION_CONFIG_SUFFIX
          The file suffix for any validation file.
private static Map<String,List<ValidatorConfig>> validatorCache
           
private static Map<String,List<ValidatorConfig>> validatorFileCache
           
 
Constructor Summary
DefaultActionValidatorManager()
           
 
Method Summary
private  List<ValidatorConfig> buildAliasValidatorConfigs(Class aClass, String context, boolean checkFile)
           
private  List<ValidatorConfig> buildClassValidatorConfigs(Class aClass, boolean checkFile)
           
private  List<ValidatorConfig> buildValidatorConfigs(Class clazz, String context, boolean checkFile, Set checked)
          This method 'collects' all the validator configurations for a given action invocation.
protected static String buildValidatorKey(Class clazz, String context)
          Builds a key for validators - used when caching validators.
 List<Validator> getValidators(Class clazz, String context)
          Returns a list of validators for the given class and context.
 List<Validator> getValidators(Class clazz, String context, String method)
          Returns a list of validators for the given class, context, and method name.
private  List<ValidatorConfig> loadFile(String fileName, Class clazz, boolean checkFile)
           
 void validate(Object object, String context)
          Validates the given object using action and its context.
 void validate(Object object, String context, String method)
          Validates the given object using action, its context, and the name of the method being invoked on the action.
 void validate(Object object, String context, ValidatorContext validatorContext)
          Validates an action give its context and a validation context.
 void validate(Object object, String context, ValidatorContext validatorContext, String method)
          Validates an action give its context, a validation context, and the name of the method being invoked on the action.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VALIDATION_CONFIG_SUFFIX

protected static final String VALIDATION_CONFIG_SUFFIX
The file suffix for any validation file.

See Also:
Constant Field Values

validatorCache

private static final Map<String,List<ValidatorConfig>> validatorCache

validatorFileCache

private static final Map<String,List<ValidatorConfig>> validatorFileCache

LOG

private static final Log LOG
Constructor Detail

DefaultActionValidatorManager

public DefaultActionValidatorManager()
Method Detail

getValidators

public List<Validator> getValidators(Class clazz,
                                     String context)
Returns a list of validators for the given class and context. This is the primary lookup method for validators.

Specified by:
getValidators in interface ActionValidatorManager
Parameters:
clazz - the class to lookup.
context - the context of the action class - can be null.
Returns:
a list of all validators for the given class and context.

getValidators

public List<Validator> getValidators(Class clazz,
                                     String context,
                                     String method)
Returns a list of validators for the given class, context, and method name. This is the primary lookup method for validators.

Specified by:
getValidators in interface ActionValidatorManager
Parameters:
clazz - the class to lookup.
context - the context of the action class - can be null.
method - the name of the method being invoked on the action - can be null.
Returns:
a list of all validators for the given class and context.

validate

public void validate(Object object,
                     String context)
              throws ValidationException
Validates the given object using action and its context.

Specified by:
validate in interface ActionValidatorManager
Parameters:
object - the action to validate.
context - the action's context.
Throws:
ValidationException - if an error happens when validating the action.

validate

public void validate(Object object,
                     String context,
                     String method)
              throws ValidationException
Validates the given object using action, its context, and the name of the method being invoked on the action.

Specified by:
validate in interface ActionValidatorManager
Parameters:
object - the action to validate.
context - the action's context.
method - the name of the method being invoked on the action.
Throws:
ValidationException - if an error happens when validating the action.

validate

public void validate(Object object,
                     String context,
                     ValidatorContext validatorContext)
              throws ValidationException
Validates an action give its context and a validation context.

Specified by:
validate in interface ActionValidatorManager
Parameters:
object - the action to validate.
context - the action's context.
validatorContext -
Throws:
ValidationException - if an error happens when validating the action.

validate

public void validate(Object object,
                     String context,
                     ValidatorContext validatorContext,
                     String method)
              throws ValidationException
Validates an action give its context, a validation context, and the name of the method being invoked on the action.

Specified by:
validate in interface ActionValidatorManager
Parameters:
object - the action to validate.
context - the action's context.
validatorContext -
method - the name of the method being invoked on the action.
Throws:
ValidationException - if an error happens when validating the action.

buildValidatorKey

protected static String buildValidatorKey(Class clazz,
                                          String context)
Builds a key for validators - used when caching validators.

Parameters:
clazz - the action.
context - the action's context.
Returns:
a validator key which is the class name plus context.

buildAliasValidatorConfigs

private List<ValidatorConfig> buildAliasValidatorConfigs(Class aClass,
                                                         String context,
                                                         boolean checkFile)

buildClassValidatorConfigs

private List<ValidatorConfig> buildClassValidatorConfigs(Class aClass,
                                                         boolean checkFile)

buildValidatorConfigs

private List<ValidatorConfig> buildValidatorConfigs(Class clazz,
                                                    String context,
                                                    boolean checkFile,
                                                    Set checked)

This method 'collects' all the validator configurations for a given action invocation.

It will traverse up the class hierarchy looking for validators for every super class and directly implemented interface of the current action, as well as adding validators for any alias of this invocation. Nifty!

Given the following class structure:

   interface Thing;
   interface Animal extends Thing;
   interface Quadraped extends Animal;
   class AnimalImpl implements Animal;
   class QuadrapedImpl extends AnimalImpl implements Quadraped;
   class Dog extends QuadrapedImpl;
 

This method will look for the following config files for Dog:

   Animal
   Animal-context
   AnimalImpl
   AnimalImpl-context
   Quadraped
   Quadraped-context
   QuadrapedImpl
   QuadrapedImpl-context
   Dog
   Dog-context
 

Note that the validation rules for Thing is never looked for because no class in the hierarchy directly implements Thing.

Parameters:
clazz - the Class to look up validators for.
context - the context to use when looking up validators.
checkFile - true if the validation config file should be checked to see if it has been updated.
checked - the set of previously checked class-contexts, null if none have been checked
Returns:
a list of validator configs for the given class and context.

loadFile

private List<ValidatorConfig> loadFile(String fileName,
                                       Class clazz,
                                       boolean checkFile)


Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.