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

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Jun 22 12:30:24 EDT 2010


Author: hardy.ferentschik
Date: 2010-06-22 12:30:24 -0400 (Tue, 22 Jun 2010)
New Revision: 19781

Modified:
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ConstraintTree.java
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/util/ValidatorTypeHelper.java
Log:
HV-338 Refactored ConstraintTree

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ConstraintTree.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ConstraintTree.java	2010-06-22 16:18:14 UTC (rev 19780)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/engine/ConstraintTree.java	2010-06-22 16:30:24 UTC (rev 19781)
@@ -1,5 +1,5 @@
 /*
- * $Id:$
+ * $Id$
  *
  * JBoss, Home of Professional Open Source
  * Copyright 2010, Red Hat, Inc. and/or its affiliates, and individual contributors
@@ -57,6 +57,8 @@
 	private final List<ConstraintTree<?>> children;
 	private final ConstraintDescriptorImpl<A> descriptor;
 
+	private final Map<Type, Class<? extends ConstraintValidator<?, ?>>> validatorTypes;
+
 	private final Map<ValidatorCacheKey, ConstraintValidator<A, ?>> constraintValidatorCache;
 
 	public ConstraintTree(ConstraintDescriptorImpl<A> descriptor) {
@@ -79,6 +81,8 @@
 			ConstraintTree<?> treeNode = createConstraintTree( composingDescriptor );
 			children.add( treeNode );
 		}
+
+		validatorTypes = ValidatorTypeHelper.getValidatorsTypes( descriptor.getConstraintValidatorClasses() );
 	}
 
 	private <U extends Annotation> ConstraintTree<U> createConstraintTree(ConstraintDescriptorImpl<U> composingDescriptor) {
@@ -217,12 +221,8 @@
 	 * @return The class of a matching validator.
 	 */
 	private Class<? extends ConstraintValidator<?, ?>> findMatchingValidatorClass(Type type) {
-		Map<Type, Class<? extends ConstraintValidator<?, ?>>> validatorTypes =
-				ValidatorTypeHelper.getValidatorsTypes( descriptor.getConstraintValidatorClasses() );
+		List<Type> suitableTypes = findSuitableValidatorTypes( type );
 
-		List<Type> suitableTypes = new ArrayList<Type>();
-		findSuitableValidatorTypes( type, validatorTypes, suitableTypes );
-
 		resolveAssignableTypes( suitableTypes );
 		verifyResolveWasUnique( type, suitableTypes );
 
@@ -257,12 +257,14 @@
 		}
 	}
 
-	private void findSuitableValidatorTypes(Type type, Map<Type, Class<? extends ConstraintValidator<?, ?>>> validatorsTypes, List<Type> suitableTypes) {
-		for ( Type validatorType : validatorsTypes.keySet() ) {
+	private List<Type> findSuitableValidatorTypes(Type type) {
+		List<Type> suitableTypes = new ArrayList<Type>();
+		for ( Type validatorType : validatorTypes.keySet() ) {
 			if ( TypeUtils.isAssignable( validatorType, type ) && !suitableTypes.contains( validatorType ) ) {
 				suitableTypes.add( validatorType );
 			}
 		}
+		return suitableTypes;
 	}
 
 	/**

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/util/ValidatorTypeHelper.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/util/ValidatorTypeHelper.java	2010-06-22 16:18:14 UTC (rev 19780)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/util/ValidatorTypeHelper.java	2010-06-22 16:30:24 UTC (rev 19781)
@@ -48,17 +48,13 @@
 	 */
 	public static <T extends Annotation> Map<Type, Class<? extends ConstraintValidator<?, ?>>> getValidatorsTypes(
 			List<Class<? extends ConstraintValidator<T, ?>>> validators) {
-		if ( validators == null || validators.size() == 0 ) {
-			throw new ValidationException( "No ConstraintValidators associated to @Constraint" );
+		Map<Type, Class<? extends ConstraintValidator<?, ?>>> validatorsTypes =
+				new HashMap<Type, Class<? extends ConstraintValidator<?, ?>>>();
+		for ( Class<? extends ConstraintValidator<?, ?>> validator : validators ) {
+			validatorsTypes.put( extractType( validator ), validator );
 		}
-		else {
-			Map<Type, Class<? extends ConstraintValidator<?, ?>>> validatorsTypes =
-					new HashMap<Type, Class<? extends ConstraintValidator<?, ?>>>();
-			for ( Class<? extends ConstraintValidator<?, ?>> validator : validators ) {
-				validatorsTypes.put( extractType( validator ), validator );
-			}
-			return validatorsTypes;
-		}
+		return validatorsTypes;
+
 	}
 
 	private static Type extractType(Class<? extends ConstraintValidator<?, ?>> validator) {



More information about the hibernate-commits mailing list