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

Nested Class Summary
protected  class DefaultActionValidatorManager.InternalValidatorContextWrapper
          An ValidatorContext wrapper that returns the full field name DefaultActionValidatorManager.InternalValidatorContextWrapper.getFullFieldName(String) by consulting it's parent if its an VisitorFieldValidator.AppendingValidatorContext.
 
Field Summary
private  Logger LOG
           
protected static String VALIDATION_CONFIG_SUFFIX
          The file suffix for any validation file.
private  Map<String,List<ValidatorConfig>> validatorCache
           
private  ValidatorFactory validatorFactory
           
private  Map<String,List<ValidatorConfig>> validatorFileCache
           
private  ValidatorFileParser validatorFileParser
           
 
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<String> 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.
private  List<ValidatorConfig> loadFile(String fileName, Class clazz, boolean checkFile)
           
 void setValidatorFactory(ValidatorFactory fac)
           
 void setValidatorFileParser(ValidatorFileParser parser)
           
 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 an 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 and a validation context.
 
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 final Map<String,List<ValidatorConfig>> validatorCache

validatorFileCache

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

LOG

private final Logger LOG

validatorFactory

private ValidatorFactory validatorFactory

validatorFileParser

private ValidatorFileParser validatorFileParser
Constructor Detail

DefaultActionValidatorManager

public DefaultActionValidatorManager()
Method Detail

setValidatorFileParser

public void setValidatorFileParser(ValidatorFileParser parser)

setValidatorFactory

public void setValidatorFactory(ValidatorFactory fac)

getValidators

public List<Validator> getValidators(Class clazz,
                                     String context)
Description copied from interface: ActionValidatorManager
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)
Description copied from interface: ActionValidatorManager
Returns a list of validators for the given class, context, and method. 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
Description copied from interface: ActionValidatorManager
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
Description copied from interface: ActionValidatorManager
Validates the given object using an 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 - can be null.
Throws:
ValidationException - if an error happens when validating the action.

validate

public void validate(Object object,
                     String context,
                     ValidatorContext validatorContext)
              throws ValidationException
Description copied from interface: ActionValidatorManager
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 - the validation context to use
Throws:
ValidationException - if an error happens when validating the action.

validate

public void validate(Object object,
                     String context,
                     ValidatorContext validatorContext,
                     String method)
              throws ValidationException
Description copied from interface: ActionValidatorManager
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 - the validation context to use
method - the name of the method being invoked on the action - can be null.
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<String> 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-2009 Apache Software Foundation. All Rights Reserved.