[hibernate-commits] Hibernate SVN: r16710 - in validator/trunk/hibernate-validator/src: main/java/org/hibernate/validation/engine/xml and 1 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Fri Jun 5 10:18:42 EDT 2009


Author: hardy.ferentschik
Date: 2009-06-05 10:18:41 -0400 (Fri, 05 Jun 2009)
New Revision: 16710

Modified:
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/BeanMetaDataImpl.java
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ConstraintDescriptorImpl.java
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/xml/XmlMappingParser.java
   validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/engine/ResourceBundleMessageInterpolatorTest.java
Log:
Made sure that groups are inherited in composite constraints

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/BeanMetaDataImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/BeanMetaDataImpl.java	2009-06-05 14:17:58 UTC (rev 16709)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/BeanMetaDataImpl.java	2009-06-05 14:18:41 UTC (rev 16710)
@@ -115,11 +115,11 @@
 	}
 
 	public List<Member> getCascadedMembers() {
-		return cascadedMembers;
+		return Collections.unmodifiableList( cascadedMembers );
 	}
 
 	public List<MetaConstraint<T, ? extends Annotation>> geMetaConstraintList() {
-		return metaConstraintList;
+		return Collections.unmodifiableList( metaConstraintList );
 	}
 
 	public void addMetaConstraint(MetaConstraint<?, ? extends Annotation> metaConstraint) {
@@ -135,7 +135,7 @@
 	}
 
 	public List<Class<?>> getDefaultGroupSequence() {
-		return defaultGroupSequence;
+		return Collections.unmodifiableList( defaultGroupSequence );
 	}
 
 	public void setDefaultGroupSequence(List<Class<?>> groupSequence) {
@@ -325,14 +325,10 @@
 		Class<?>[] groups = ReflectionHelper.getAnnotationParameter( annotation, "groups", Class[].class );
 		ConstraintDescriptorImpl constraintDescriptor;
 		if ( clazz.isInterface() ) {
-			constraintDescriptor = new ConstraintDescriptorImpl(
-					annotation, groups, constraintHelper, clazz
-			);
+			constraintDescriptor = new ConstraintDescriptorImpl( annotation, constraintHelper, clazz );
 		}
 		else {
-			constraintDescriptor = new ConstraintDescriptorImpl(
-					annotation, groups, constraintHelper
-			);
+			constraintDescriptor = new ConstraintDescriptorImpl( annotation, constraintHelper );
 		}
 		return constraintDescriptor;
 	}

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ConstraintDescriptorImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ConstraintDescriptorImpl.java	2009-06-05 14:17:58 UTC (rev 16709)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/ConstraintDescriptorImpl.java	2009-06-05 14:18:41 UTC (rev 16710)
@@ -39,6 +39,7 @@
 import org.slf4j.Logger;
 
 import org.hibernate.validation.util.LoggerFactory;
+import org.hibernate.validation.util.ReflectionHelper;
 import org.hibernate.validation.util.annotationfactory.AnnotationDescriptor;
 import org.hibernate.validation.util.annotationfactory.AnnotationFactory;
 
@@ -50,7 +51,6 @@
  */
 public class ConstraintDescriptorImpl<T extends Annotation> implements ConstraintDescriptor<T> {
 	private static final Logger log = LoggerFactory.make();
-	private static final Class<?>[] DEFAULT_GROUP = new Class<?>[] { Default.class };
 	private static final int OVERRIDES_PARAMETER_DEFAULT_INDEX = -1;
 
 	/**
@@ -67,7 +67,7 @@
 	/**
 	 * The groups for which to apply this constraint.
 	 */
-	private final Set<Class<?>> groups;
+	private final Set<Class<?>> groups = new HashSet<Class<?>>();
 
 	/**
 	 * The constraint parameters as map. The key is the paramter name and the value the
@@ -90,22 +90,14 @@
 	 */
 	private final ConstraintHelper constraintHelper;
 
-	public ConstraintDescriptorImpl(T annotation, Class<?>[] groups, ConstraintHelper constraintHelper, Class<?> implicitGroup) {
-		this( annotation, groups, constraintHelper );
+	public ConstraintDescriptorImpl(T annotation, ConstraintHelper constraintHelper, Class<?> implicitGroup) {
+		this( annotation, constraintHelper );
 		this.groups.add( implicitGroup );
 	}
 
-	public ConstraintDescriptorImpl(T annotation, Class<?>[] groups, ConstraintHelper constraintHelper) {
-		this( annotation, new HashSet<Class<?>>(), constraintHelper );
-		if ( groups.length == 0 ) {
-			groups = DEFAULT_GROUP;
-		}
-		this.groups.addAll( Arrays.asList( groups ) );
-	}
 
-	private ConstraintDescriptorImpl(T annotation, Set<Class<?>> groups, ConstraintHelper constraintHelper) {
+	public ConstraintDescriptorImpl(T annotation, ConstraintHelper constraintHelper) {
 		this.annotation = annotation;
-		this.groups = groups;
 		this.attributes = getAnnotationParameters( annotation );
 		this.constraintHelper = constraintHelper;
 
@@ -113,6 +105,16 @@
 				ReportAsSingleViolation.class
 		);
 
+		Class<?>[] groupsFromAnnotation = ReflectionHelper.getAnnotationParameter(
+				annotation, "groups", Class[].class
+		);
+		if ( groupsFromAnnotation.length == 0 ) {
+			groups.add( Default.class );
+		}
+		else {
+			this.groups.addAll( Arrays.asList( groupsFromAnnotation ) );
+		}
+
 		findConstraintValidatorClasses();
 		Map<ClassIndexWrapper, Map<String, Object>> overrideParameters = parseOverrideParameters();
 		parseComposingConstraints( overrideParameters );
@@ -288,9 +290,12 @@
 	}
 
 	private <U extends Annotation> ConstraintDescriptorImpl<U> createComposingConstraintDescriptor(Map<ClassIndexWrapper, Map<String, Object>> overrideParameters, int index, U constraintAnnotation, Class<U> annotationType) {
+		// use a annotation proxy
 		AnnotationDescriptor<U> annotationDescriptor = new AnnotationDescriptor<U>(
 				annotationType, getAnnotationParameters( constraintAnnotation )
 		);
+
+		// get the right override parameters
 		Map<String, Object> overrides = overrideParameters.get(
 				new ClassIndexWrapper(
 						annotationType, index
@@ -301,9 +306,13 @@
 				annotationDescriptor.setValue( entry.getKey(), entry.getValue() );
 			}
 		}
+
+		// groups get inherited from the parent
+		annotationDescriptor.setValue( "groups", groups.toArray( new Class<?>[] { } ) );
+
 		U annotationProxy = AnnotationFactory.create( annotationDescriptor );
 		return new ConstraintDescriptorImpl<U>(
-				annotationProxy, groups, constraintHelper
+				annotationProxy, constraintHelper
 		);
 	}
 

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/xml/XmlMappingParser.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/xml/XmlMappingParser.java	2009-06-05 14:17:58 UTC (rev 16709)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/engine/xml/XmlMappingParser.java	2009-06-05 14:18:41 UTC (rev 16710)
@@ -361,7 +361,7 @@
 
 		A annotation = AnnotationFactory.create( annotationDescriptor );
 		ConstraintDescriptorImpl<A> constraintDescriptor = new ConstraintDescriptorImpl<A>(
-				annotation, new Class[] { }, constraintHelper
+				annotation, constraintHelper
 		);
 
 		MetaConstraint<T, A> metaConstraint;

Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/engine/ResourceBundleMessageInterpolatorTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/engine/ResourceBundleMessageInterpolatorTest.java	2009-06-05 14:17:58 UTC (rev 16709)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validation/engine/ResourceBundleMessageInterpolatorTest.java	2009-06-05 14:18:41 UTC (rev 16710)
@@ -55,13 +55,13 @@
 		AnnotationDescriptor<NotNull> descriptor = new AnnotationDescriptor<NotNull>( NotNull.class );
 		notNull = AnnotationFactory.create( descriptor );
 		notNullDescriptor = new ConstraintDescriptorImpl<NotNull>(
-				notNull, new Class<?>[] { }, new ConstraintHelper()
+				notNull, new ConstraintHelper()
 		);
 
 		AnnotationDescriptor<Size> sizeAnnotationDescriptor = new AnnotationDescriptor<Size>( Size.class );
 		size = AnnotationFactory.create( sizeAnnotationDescriptor );
 		sizeDescriptor = new ConstraintDescriptorImpl<Size>(
-				size, new Class<?>[] { }, new ConstraintHelper()
+				size, new ConstraintHelper()
 		);
 	}
 
@@ -167,7 +167,7 @@
 
 
 		ConstraintDescriptorImpl<Max> constraintDescriptor = new ConstraintDescriptorImpl<Max>(
-				max, new Class<?>[] { }, new ConstraintHelper()
+				max, new ConstraintHelper()
 		);
 
 		interpolator = new ResourceBundleMessageInterpolator( new TestResourceBundle() );




More information about the hibernate-commits mailing list