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

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Mon Aug 24 07:53:38 EDT 2009


Author: hardy.ferentschik
Date: 2009-08-24 07:53:38 -0400 (Mon, 24 Aug 2009)
New Revision: 17400

Modified:
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/BeanMetaDataImpl.java
Log:
HV-209

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/BeanMetaDataImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/BeanMetaDataImpl.java	2009-08-24 11:48:21 UTC (rev 17399)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validation/metadata/BeanMetaDataImpl.java	2009-08-24 11:53:38 UTC (rev 17400)
@@ -159,7 +159,8 @@
 					metaConstraint.getPropertyName()
 			);
 			if ( propertyDescriptor == null ) {
-				propertyDescriptor = addPropertyDescriptorForMember( metaConstraint.getMember() );
+				Member member = metaConstraint.getMember();
+				propertyDescriptor = addPropertyDescriptorForMember( member, isValidAnnotationPresent( member ) );
 			}
 			propertyDescriptor.addConstraintDescriptor( metaConstraint.getDescriptor() );
 		}
@@ -167,6 +168,7 @@
 
 	public void addCascadedMember(Member member) {
 		cascadedMembers.add( member );
+		addPropertyDescriptorForMember( member, true );
 	}
 
 	public PropertyDescriptor getPropertyDescriptor(String property) {
@@ -289,23 +291,26 @@
 			if ( Modifier.isStatic( field.getModifiers() ) ) {
 				continue;
 			}
+
+			if ( annotationIgnores.isIgnoreAnnotations( field ) ) {
+				continue;
+			}
+
 			String name = ReflectionHelper.getPropertyName( field );
 			if ( name != null ) {
 				propertyNames.add( name );
 			}
+
 			List<ConstraintDescriptorImpl<?>> fieldMetadata = findConstraints( field );
 			for ( ConstraintDescriptorImpl<?> constraintDescription : fieldMetadata ) {
-				if ( annotationIgnores.isIgnoreAnnotations( field ) ) {
-					break;
-				}
 				setAccessibility( field );
 				MetaConstraint<T, ?> metaConstraint = createMetaConstraint( field, constraintDescription );
 				addMetaConstraint( clazz, metaConstraint );
 			}
+
 			if ( field.isAnnotationPresent( Valid.class ) ) {
 				setAccessibility( field );
-				cascadedMembers.add( field );
-				addPropertyDescriptorForMember( field );
+				addCascadedMember( field );
 			}
 		}
 	}
@@ -335,6 +340,11 @@
 			if ( Modifier.isStatic( method.getModifiers() ) ) {
 				continue;
 			}
+
+			if ( annotationIgnores.isIgnoreAnnotations( method ) ) {
+				continue;
+			}
+
 			String name = ReflectionHelper.getPropertyName( method );
 			if ( name != null ) {
 				propertyNames.add( name );
@@ -342,22 +352,18 @@
 
 			List<ConstraintDescriptorImpl<?>> methodMetadata = findConstraints( method );
 			for ( ConstraintDescriptorImpl<?> constraintDescription : methodMetadata ) {
-				if ( annotationIgnores.isIgnoreAnnotations( method ) ) {
-					break;
-				}
 				setAccessibility( method );
 				MetaConstraint<T, ?> metaConstraint = createMetaConstraint( method, constraintDescription );
 				addMetaConstraint( clazz, metaConstraint );
 			}
 			if ( method.isAnnotationPresent( Valid.class ) ) {
 				setAccessibility( method );
-				cascadedMembers.add( method );
-				addPropertyDescriptorForMember( method );
+				addCascadedMember( method );
 			}
 		}
 	}
 
-	private PropertyDescriptorImpl addPropertyDescriptorForMember(Member member) {
+	private PropertyDescriptorImpl addPropertyDescriptorForMember(Member member, boolean isCascaded) {
 		String name = ReflectionHelper.getPropertyName( member );
 		PropertyDescriptorImpl propertyDescriptor = ( PropertyDescriptorImpl ) propertyDescriptors.get(
 				name
@@ -365,7 +371,7 @@
 		if ( propertyDescriptor == null ) {
 			propertyDescriptor = new PropertyDescriptorImpl(
 					ReflectionHelper.getType( member ),
-					( ( AnnotatedElement ) member ).isAnnotationPresent( Valid.class ),
+					isCascaded,
 					name
 			);
 			propertyDescriptors.put( name, propertyDescriptor );
@@ -373,6 +379,10 @@
 		return propertyDescriptor;
 	}
 
+	private boolean isValidAnnotationPresent(Member member) {
+		return ( ( AnnotatedElement ) member ).isAnnotationPresent( Valid.class );
+	}
+
 	private void initClassConstraints(Class<?> clazz, AnnotationIgnores annotationIgnores) {
 		if ( annotationIgnores.isIgnoreAnnotations( clazz ) ) {
 			return;



More information about the hibernate-commits mailing list