[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