[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