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

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Jun 23 10:14:06 EDT 2010


Author: hardy.ferentschik
Date: 2010-06-23 10:14:06 -0400 (Wed, 23 Jun 2010)
New Revision: 19797

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/ConstraintHelper.java
Log:
HV-340

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-23 11:23:07 UTC (rev 19796)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintDescriptorImpl.java	2010-06-23 14:14:06 UTC (rev 19797)
@@ -19,10 +19,12 @@
 
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
+import java.lang.annotation.Documented;
 import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.security.AccessController;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -63,6 +65,19 @@
 	private static final String PAYLOAD = "payload";
 
 	/**
+	 * A list of annotations which can be ignored when investigating for composing constraints.
+	 */
+	private static final List<String> NON_COMPOSING_CONSTRAINT_ANNOTATIONS = new ArrayList<String>();
+
+	static {
+		NON_COMPOSING_CONSTRAINT_ANNOTATIONS.add( Documented.class.getName() );
+		NON_COMPOSING_CONSTRAINT_ANNOTATIONS.add( Retention.class.getName() );
+		NON_COMPOSING_CONSTRAINT_ANNOTATIONS.add( Target.class.getName() );
+		NON_COMPOSING_CONSTRAINT_ANNOTATIONS.add( Constraint.class.getName() );
+		NON_COMPOSING_CONSTRAINT_ANNOTATIONS.add( ReportAsSingleViolation.class.getName() );
+	}
+
+	/**
 	 * The actual constraint annotation.
 	 */
 	private final T annotation;
@@ -356,6 +371,11 @@
 		Map<ClassIndexWrapper, Map<String, Object>> overrideParameters = parseOverrideParameters();
 
 		for ( Annotation declaredAnnotation : annotation.annotationType().getDeclaredAnnotations() ) {
+			if ( NON_COMPOSING_CONSTRAINT_ANNOTATIONS.contains( declaredAnnotation.annotationType().getName() ) ) {
+				// ignore the usual suspects which will be in almost any constraint, but are no composing constraint
+				continue;
+			}
+
 			if ( constraintHelper.isConstraintAnnotation( declaredAnnotation )
 					|| constraintHelper.isBuiltinConstraint( declaredAnnotation.annotationType() ) ) {
 				ConstraintDescriptorImpl<?> descriptor = createComposingConstraintDescriptor(

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-23 11:23:07 UTC (rev 19796)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/ConstraintHelper.java	2010-06-23 14:14:06 UTC (rev 19797)
@@ -80,11 +80,10 @@
  * @author Alaa Nassef
  */
 public class ConstraintHelper {
-
 	private final ConcurrentHashMap<Class<? extends Annotation>, List<Class<? extends ConstraintValidator<?, ?>>>> builtinConstraints =
 			new ConcurrentHashMap<Class<? extends Annotation>, List<Class<? extends ConstraintValidator<?, ?>>>>();
 
-	private final ConcurrentHashMap<Class<? extends Annotation>, List<Class<? extends ConstraintValidator<? extends Annotation, ?>>>> constraintValidatorDefinitons =
+	private final ConcurrentHashMap<Class<? extends Annotation>, List<Class<? extends ConstraintValidator<? extends Annotation, ?>>>> constraintValidatorDefinitions =
 			new ConcurrentHashMap<Class<? extends Annotation>, List<Class<? extends ConstraintValidator<? extends Annotation, ?>>>>();
 
 	public ConstraintHelper() {
@@ -171,8 +170,8 @@
 		for ( Class<? extends ConstraintValidator<?, ?>> validatorClass : builtInList ) {
 			//safe cause all CV for a given annotation A are CV<A, ?>
 			@SuppressWarnings("unchecked")
-			Class<ConstraintValidator<? extends Annotation, ?>> safeValdiatorClass = ( Class<ConstraintValidator<? extends Annotation, ?>> ) validatorClass;
-			constraints.add( safeValdiatorClass );
+			Class<ConstraintValidator<? extends Annotation, ?>> safeValidatorClass = ( Class<ConstraintValidator<? extends Annotation, ?>> ) validatorClass;
+			constraints.add( safeValidatorClass );
 		}
 
 		return constraints;
@@ -187,7 +186,7 @@
 	 *
 	 * @param annotation the annotation to check.
 	 *
-	 * @return <code>true</code> if the specified annotation is a multi value constraints, <code>false</code>
+	 * @return {@code true} if the specified annotation is a multi value constraints, {@code false}
 	 *         otherwise.
 	 */
 	public boolean isMultiValueConstraint(Annotation annotation) {
@@ -356,7 +355,7 @@
 			throw new IllegalArgumentException( "Class cannot be null" );
 		}
 
-		final List<Class<? extends ConstraintValidator<? extends Annotation, ?>>> list = constraintValidatorDefinitons.get(
+		final List<Class<? extends ConstraintValidator<? extends Annotation, ?>>> list = constraintValidatorDefinitions.get(
 				annotationClass
 		);
 
@@ -365,18 +364,18 @@
 		for ( Class<? extends ConstraintValidator<?, ?>> validatorClass : list ) {
 			//safe cause all CV for a given annotation A are CV<A, ?>
 			@SuppressWarnings("unchecked")
-			Class<ConstraintValidator<T, ?>> safeValdiatorClass = ( Class<ConstraintValidator<T, ?>> ) validatorClass;
-			constraintsValidators.add( safeValdiatorClass );
+			Class<ConstraintValidator<T, ?>> safeValidatorClass = ( Class<ConstraintValidator<T, ?>> ) validatorClass;
+			constraintsValidators.add( safeValidatorClass );
 		}
 
 		return constraintsValidators;
 	}
 
 	public <A extends Annotation> void addConstraintValidatorDefinition(Class<A> annotationClass, List<Class<? extends ConstraintValidator<? extends Annotation, ?>>> definitionClasses) {
-		constraintValidatorDefinitons.putIfAbsent( annotationClass, definitionClasses );
+		constraintValidatorDefinitions.putIfAbsent( annotationClass, definitionClasses );
 	}
 
 	public boolean containsConstraintValidatorDefinition(Class<? extends Annotation> annotationClass) {
-		return constraintValidatorDefinitons.containsKey( annotationClass );
+		return constraintValidatorDefinitions.containsKey( annotationClass );
 	}
 }



More information about the hibernate-commits mailing list