Author: epbernard
Date: 2009-09-30 12:55:34 -0400 (Wed, 30 Sep 2009)
New Revision: 17585
Modified:
beanvalidation/api/trunk/src/main/java/javax/validation/ValidatorContext.java
beanvalidation/api/trunk/src/main/java/javax/validation/ValidatorFactory.java
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ValidatorContextImpl.java
Log:
BVAL-185 Allow overriding of ConstraintValidatorFactory when creating a Validator
Modified: beanvalidation/api/trunk/src/main/java/javax/validation/ValidatorContext.java
===================================================================
---
beanvalidation/api/trunk/src/main/java/javax/validation/ValidatorContext.java 2009-09-30
16:28:00 UTC (rev 17584)
+++
beanvalidation/api/trunk/src/main/java/javax/validation/ValidatorContext.java 2009-09-30
16:55:34 UTC (rev 17585)
@@ -21,33 +21,47 @@
* Represents the context that is used to create <code>Validator</code>
* instances.
*
- * A client may use methods of the ValidatorContext returned through
- * <code>usingContext</code> of <code>ValidatorFactory</code> to
customize
- * the context (for instance establish different message interpolators or
- * traversable resolvers) used to create <code>Validator</code> instances.
+ * A client may use methods of the <code>ValidatorContext</code> returned by
+ * <code>ValidatorFactory#usingContext</code> to customize
+ * the context used to create <code>Validator</code> instances
+ * (for instance establish different message interpolators or
+ * traversable resolvers).
*
* @author Emmanuel Bernard
*/
public interface ValidatorContext {
/**
- * Defines the message interpolator implementation used by the Validator.
+ * Defines the message interpolator implementation used by the
+ * <code>Validator</code>.
* If not set or if null is passed as a parameter,
- * the message interpolator of the ValidatorFactory is used.
+ * the message interpolator of the <code>ValidatorFactory</code>
+ * is used.
*
* @return self following the chaining method pattern
*/
ValidatorContext messageInterpolator(MessageInterpolator messageInterpolator);
/**
- * Defines the traversable resolver implementation used by the Validator.
+ * Defines the traversable resolver implementation used by the
+ * <code>Validator</code>.
* If not set or if null is passed as a parameter,
- * the traversable resolver of the ValidatorFactory is used.
+ * the traversable resolver of the <code>ValidatorFactory</code> is used.
*
* @return self following the chaining method pattern
*/
ValidatorContext traversableResolver(TraversableResolver traversableResolver);
/**
+ * Defines the constraint validator factory implementation used by the
+ * <code>Validator</code>.
+ * If not set or if null is passed as a parameter,
+ * the constraint validator factory of the <code>ValidatorFactory</code> is
used.
+ *
+ * @return self following the chaining method pattern
+ */
+ ValidatorContext constraintValidatorFactory(ConstraintValidatorFactory factory);
+
+ /**
* @return an initialized <code>Validator</code> instance respecting the
defined state.
* Validator instances can be pooled and shared by the implementation.
*/
Modified: beanvalidation/api/trunk/src/main/java/javax/validation/ValidatorFactory.java
===================================================================
---
beanvalidation/api/trunk/src/main/java/javax/validation/ValidatorFactory.java 2009-09-30
16:28:00 UTC (rev 17584)
+++
beanvalidation/api/trunk/src/main/java/javax/validation/ValidatorFactory.java 2009-09-30
16:55:34 UTC (rev 17585)
@@ -26,17 +26,19 @@
*/
public interface ValidatorFactory {
/**
- * @return Returns an initialized <code>Validator</code> instance using the
default
- * factory instances for message interpolator and traversable resolver.
+ * Returns an initialized <code>Validator</code> instance using the
+ * factory defaults for message interpolator, traversable resolver
+ * and constraint validator factory.
* <p>
* Validator instances can be pooled and shared by the implementation.
* </p>
+ * @return an initialized <code>Validator</code> instance
*/
Validator getValidator();
/**
- * Define the validator context and return a <code>Validator</code>
compliant
- * with this state.
+ * Defines a new validator context and return a <code>Validator</code>
+ * compliant this new context.
*
* @return a <code>ValidatorContext</code>.
*/
@@ -71,12 +73,15 @@
ConstraintValidatorFactory getConstraintValidatorFactory();
/**
- * Return an object of the specified type to allow access to the
- * provider-specific API. If the Bean Validation provider
- * implementation does not support the specified class, the
- * ValidationException is thrown.
+ * Return an instance of the specified type allowing access to
+ * provider-specific APIs. If the Bean Validation provider
+ * implementation does not support the specified class,
+ * <code>ValidationException,</code> is thrown.
+ *
* @param type the class of the object to be returned.
- * @return an instance of the specified class
+ *
+ * @return an instance of the specified class.
+ *
* @throws ValidationException if the provider does not
* support the call.
*/
Modified:
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ValidatorContextImpl.java
===================================================================
---
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ValidatorContextImpl.java 2009-09-30
16:28:00 UTC (rev 17584)
+++
validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ValidatorContextImpl.java 2009-09-30
16:55:34 UTC (rev 17585)
@@ -33,9 +33,10 @@
public class ValidatorContextImpl implements ValidatorContext {
private MessageInterpolator messageInterpolator;
private TraversableResolver traversableResolver;
+ private ConstraintValidatorFactory constraintValidatorFactory;
private final MessageInterpolator factoryMessageInterpolator;
private final TraversableResolver factoryTraversableResolver;
- private final ConstraintValidatorFactory constraintValidatorFactory;
+ private final ConstraintValidatorFactory factoryConstraintValidatorFactory;
private final ConstraintHelper constraintHelper;
private final BeanMetaDataCache beanMetaDataCache;
@@ -44,13 +45,14 @@
TraversableResolver factoryTraversableResolver,
ConstraintHelper constraintHelper,
BeanMetaDataCache beanMetaDataCache) {
- this.constraintValidatorFactory = constraintValidatorFactory;
+ this.factoryConstraintValidatorFactory = constraintValidatorFactory;
this.factoryMessageInterpolator = factoryMessageInterpolator;
this.factoryTraversableResolver = factoryTraversableResolver;
this.constraintHelper = constraintHelper;
this.beanMetaDataCache = beanMetaDataCache;
messageInterpolator( factoryMessageInterpolator );
traversableResolver( factoryTraversableResolver );
+ constraintValidatorFactory( factoryConstraintValidatorFactory );
}
public ValidatorContext messageInterpolator(MessageInterpolator messageInterpolator) {
@@ -73,6 +75,16 @@
return this;
}
+ public ValidatorContext constraintValidatorFactory(ConstraintValidatorFactory factory)
{
+ if ( constraintValidatorFactory == null ) {
+ this.constraintValidatorFactory = factoryConstraintValidatorFactory;
+ }
+ else {
+ this.constraintValidatorFactory = factory;
+ }
+ return this;
+ }
+
public Validator getValidator() {
return new ValidatorImpl(
constraintValidatorFactory,
Show replies by date