[hibernate-commits] Hibernate SVN: r19825 - validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Jun 24 17:29:30 EDT 2010


Author: hardy.ferentschik
Date: 2010-06-24 17:29:29 -0400 (Thu, 24 Jun 2010)
New Revision: 19825

Modified:
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/BeanMetaDataImpl.java
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintDescriptorImpl.java
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintHelper.java
Log:
HV-342

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/BeanMetaDataImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/BeanMetaDataImpl.java	2010-06-24 18:51:21 UTC (rev 19824)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/BeanMetaDataImpl.java	2010-06-24 21:29:29 UTC (rev 19825)
@@ -445,10 +445,10 @@
 				|| constraintHelper.isBuiltinConstraint( annotationType ) ) {
 			constraints.add( annotation );
 		}
+		else if ( constraintHelper.isMultiValueConstraint( annotationType ) ) {
+			constraints.addAll( constraintHelper.getMultiValueConstraints( annotation ) );
+		}
 
-		// check if we have a multi-valued constraint
-		constraints.addAll( constraintHelper.getMultiValueConstraints( annotation ) );
-
 		for ( Annotation constraint : constraints ) {
 			final ConstraintDescriptorImpl constraintDescriptor = buildConstraintDescriptor( clazz, constraint, type );
 			constraintDescriptors.add( constraintDescriptor );

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintDescriptorImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintDescriptorImpl.java	2010-06-24 18:51:21 UTC (rev 19824)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintDescriptorImpl.java	2010-06-24 21:29:29 UTC (rev 19825)
@@ -387,7 +387,7 @@
 					log.debug( "Adding composing constraint: " + descriptor );
 				}
 			}
-			else if ( constraintHelper.isMultiValueConstraint( declaredAnnotation ) ) {
+			else if ( constraintHelper.isMultiValueConstraint( declaredAnnotationType ) ) {
 				List<Annotation> multiValueConstraints = constraintHelper.getMultiValueConstraints( declaredAnnotation );
 				int index = 0;
 				for ( Annotation constraintAnnotation : multiValueConstraints ) {

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintHelper.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintHelper.java	2010-06-24 18:51:21 UTC (rev 19824)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintHelper.java	2010-06-24 21:29:29 UTC (rev 19825)
@@ -184,38 +184,27 @@
 	/**
 	 * Checks whether a given annotation is a multi value constraint or not.
 	 *
-	 * @param annotation the annotation to check.
+	 * @param annotationType the annotation type to check.
 	 *
 	 * @return {@code true} if the specified annotation is a multi value constraints, {@code false}
 	 *         otherwise.
 	 */
-	public boolean isMultiValueConstraint(Annotation annotation) {
+	public boolean isMultiValueConstraint(Class<? extends Annotation> annotationType) {
 		boolean isMultiValueConstraint = false;
-		try {
-			final Method method = ReflectionHelper.getMethod( annotation.getClass(), "value" );
+			final Method method = ReflectionHelper.getMethod( annotationType, "value" );
 			if ( method != null ) {
 				Class returnType = method.getReturnType();
 				if ( returnType.isArray() && returnType.getComponentType().isAnnotation() ) {
-					Annotation[] annotations = ( Annotation[] ) method.invoke( annotation );
-					for ( Annotation a : annotations ) {
-						Class<? extends Annotation> annotationType = a.annotationType();
-						if ( isConstraintAnnotation( annotationType ) || isBuiltinConstraint( annotationType ) ) {
-							isMultiValueConstraint = true;
-						}
-						else {
-							isMultiValueConstraint = false;
-							break;
-						}
+					@SuppressWarnings( "unchecked" )
+					Class<? extends Annotation> componentType = ( Class<? extends Annotation> ) returnType.getComponentType();
+					if ( isConstraintAnnotation( componentType ) || isBuiltinConstraint( componentType ) ) {
+						isMultiValueConstraint = true;
 					}
+					else {
+						isMultiValueConstraint = false;
+					}
 				}
 			}
-		}
-		catch ( IllegalAccessException iae ) {
-			// ignore
-		}
-		catch ( InvocationTargetException ite ) {
-			// ignore
-		}
 		return isMultiValueConstraint;
 	}
 



More information about the hibernate-commits mailing list