[hibernate-commits] Hibernate SVN: r17585 - validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Sep 30 12:55:34 EDT 2009


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,



More information about the hibernate-commits mailing list