org.springframework.validation.beanvalidation
Class SpringValidatorAdapter

java.lang.Object
  extended by org.springframework.validation.beanvalidation.SpringValidatorAdapter
All Implemented Interfaces:
Validator, SmartValidator
Direct Known Subclasses:
CustomValidatorBean, LocalValidatorFactoryBean

public class SpringValidatorAdapter
extends Object
implements SmartValidator, Validator

Adapter that takes a JSR-303 javax.validator.Validator and exposes it as a Spring Validator while also exposing the original JSR-303 Validator interface itself.

Can be used as a programmatic wrapper. Also serves as base class for CustomValidatorBean and LocalValidatorFactoryBean.

Since:
3.0
Author:
Juergen Hoeller

Constructor Summary
SpringValidatorAdapter(Validator targetValidator)
          Create a new SpringValidatorAdapter for the given JSR-303 Validator.
 
Method Summary
protected  Object[] getArgumentsForConstraint(String objectName, String field, ConstraintDescriptor<?> descriptor)
          Return FieldError arguments for a validation error on the given field.
 BeanDescriptor getConstraintsForClass(Class<?> clazz)
           
protected  void processConstraintViolations(Set<ConstraintViolation<Object>> violations, Errors errors)
          Process the given JSR-303 ConstraintViolations, adding corresponding errors to the provided Spring Errors object.
 boolean supports(Class<?> clazz)
          Can this Validator validate instances of the supplied clazz?
<T> T
unwrap(Class<T> type)
           
 void validate(Object target, Errors errors)
          Validate the supplied target object, which must be of a Class for which the Validator.supports(Class) method typically has (or would) return true.
 void validate(Object target, Errors errors, Object... validationHints)
          Validate the supplied target object, which must be of a Class for which the Validator.supports(Class) method typically has (or would) return true.
<T> Set<ConstraintViolation<T>>
validate(T object, Class<?>... groups)
           
<T> Set<ConstraintViolation<T>>
validateProperty(T object, String propertyName, Class<?>... groups)
           
<T> Set<ConstraintViolation<T>>
validateValue(Class<T> beanType, String propertyName, Object value, Class<?>... groups)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SpringValidatorAdapter

public SpringValidatorAdapter(Validator targetValidator)
Create a new SpringValidatorAdapter for the given JSR-303 Validator.

Parameters:
targetValidator - the JSR-303 Validator to wrap
Method Detail

supports

public boolean supports(Class<?> clazz)
Description copied from interface: Validator
Can this Validator validate instances of the supplied clazz?

This method is typically implemented like so:

return Foo.class.isAssignableFrom(clazz);
(Where Foo is the class (or superclass) of the actual object instance that is to be validated.)

Parameters:
clazz - the Class that this Validator is being asked if it can validate
Returns:
true if this Validator can indeed validate instances of the supplied clazz

validate

public void validate(Object target,
                     Errors errors)
Description copied from interface: Validator
Validate the supplied target object, which must be of a Class for which the Validator.supports(Class) method typically has (or would) return true.

The supplied errors instance can be used to report any resulting validation errors.

Parameters:
target - the object that is to be validated (can be null)
errors - contextual state about the validation process (never null)
See Also:
ValidationUtils

validate

public void validate(Object target,
                     Errors errors,
                     Object... validationHints)
Description copied from interface: SmartValidator
Validate the supplied target object, which must be of a Class for which the Validator.supports(Class) method typically has (or would) return true.

The supplied errors instance can be used to report any resulting validation errors.

This variant of validate supports validation hints, such as validation groups against a JSR-303 provider (in this case, the provided hint objects need to be annotation arguments of type Class).

Note: Validation hints may get ignored by the actual target Validator, in which case this method is supposed to be behave just like its regular Validator.validate(Object, Errors) sibling.

Specified by:
validate in interface SmartValidator
Parameters:
target - the object that is to be validated (can be null)
errors - contextual state about the validation process (never null)
validationHints - one or more hint objects to be passed to the validation engine
See Also:
ValidationUtils

processConstraintViolations

protected void processConstraintViolations(Set<ConstraintViolation<Object>> violations,
                                           Errors errors)
Process the given JSR-303 ConstraintViolations, adding corresponding errors to the provided Spring Errors object.

Parameters:
violations - the JSR-303 ConstraintViolation results
errors - the Spring errors object to register to

getArgumentsForConstraint

protected Object[] getArgumentsForConstraint(String objectName,
                                             String field,
                                             ConstraintDescriptor<?> descriptor)
Return FieldError arguments for a validation error on the given field. Invoked for each violated constraint.

The default implementation returns a first argument indicating the field name (of type DefaultMessageSourceResolvable, with "objectName.field" and "field" as codes). Afterwards, it adds all actual constraint annotation attributes (i.e. excluding "message", "groups" and "payload") in alphabetical order of their attribute names.

Can be overridden to e.g. add further attributes from the constraint descriptor.

Parameters:
objectName - the name of the target object
field - the field that caused the binding error
descriptor - the JSR-303 constraint descriptor
Returns:
the Object array that represents the FieldError arguments
See Also:
DefaultMessageSourceResolvable.getArguments(), DefaultMessageSourceResolvable, DefaultBindingErrorProcessor.getArgumentsForBindError(java.lang.String, java.lang.String)

validate

public <T> Set<ConstraintViolation<T>> validate(T object,
                                                Class<?>... groups)
Specified by:
validate in interface Validator

validateProperty

public <T> Set<ConstraintViolation<T>> validateProperty(T object,
                                                        String propertyName,
                                                        Class<?>... groups)
Specified by:
validateProperty in interface Validator

validateValue

public <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType,
                                                     String propertyName,
                                                     Object value,
                                                     Class<?>... groups)
Specified by:
validateValue in interface Validator

getConstraintsForClass

public BeanDescriptor getConstraintsForClass(Class<?> clazz)
Specified by:
getConstraintsForClass in interface Validator

unwrap

public <T> T unwrap(Class<T> type)
Specified by:
unwrap in interface Validator