[hibernate-commits] Hibernate SVN: r17743 - in validator/trunk/hibernate-validator/src: test/java/org/hibernate/validator/xml and 1 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Oct 14 07:47:09 EDT 2009


Author: hardy.ferentschik
Date: 2009-10-14 07:47:08 -0400 (Wed, 14 Oct 2009)
New Revision: 17743

Added:
   validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/xml/Properties.java
   validator/trunk/hibernate-validator/src/test/resources/org/hibernate/validator/xml/properties-mapping.xml
Modified:
   validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/BeanMetaDataImpl.java
   validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/xml/XmlMappingTest.java
Log:
HV-252 Made sure that the properties list gets updated even if ignore annotations is specified in xml

Modified: validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/BeanMetaDataImpl.java
===================================================================
--- validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/BeanMetaDataImpl.java	2009-10-14 08:11:10 UTC (rev 17742)
+++ validator/trunk/hibernate-validator/src/main/java/org/hibernate/validator/metadata/BeanMetaDataImpl.java	2009-10-14 11:47:08 UTC (rev 17743)
@@ -96,7 +96,10 @@
 	 */
 	private final ConstraintHelper constraintHelper;
 
-	//updated on the fly, needs to be thread safe
+	/**
+	 * A list of all property names in the class (constraint and un-constraint).
+	 */
+	// Used to avoid ReflectionHelper#containsMembe which is slow
 	private final Set<String> propertyNames = new HashSet<String>( 30 );
 
 	public BeanMetaDataImpl(Class<T> beanClass, ConstraintHelper constraintHelper) {
@@ -166,6 +169,7 @@
 	}
 
 	public void addCascadedMember(Member member) {
+		setAccessibility( member );
 		cascadedMembers.add( member );
 		addPropertyDescriptorForMember( member, true );
 	}
@@ -175,7 +179,7 @@
 	}
 
 	public boolean isPropertyPresent(String name) {
-		return propertyNames.contains( name );  //To change body of implemented methods use File | Settings | File Templates.
+		return propertyNames.contains( name );
 	}
 
 	public List<Class<?>> getDefaultGroupSequence() {
@@ -265,6 +269,8 @@
 			fields = action.run();
 		}
 		for ( Field field : fields ) {
+			addToPropertyNameList( field );
+
 			// HV-172
 			if ( Modifier.isStatic( field.getModifiers() ) ) {
 				continue;
@@ -274,11 +280,6 @@
 				continue;
 			}
 
-			String name = ReflectionHelper.getPropertyName( field );
-			if ( name != null ) {
-				propertyNames.add( name );
-			}
-
 			List<ConstraintDescriptorImpl<?>> fieldMetaData = findConstraints( field, ElementType.FIELD );
 			for ( ConstraintDescriptorImpl<?> constraintDescription : fieldMetaData ) {
 				setAccessibility( field );
@@ -287,12 +288,18 @@
 			}
 
 			if ( field.isAnnotationPresent( Valid.class ) ) {
-				setAccessibility( field );
 				addCascadedMember( field );
 			}
 		}
 	}
 
+	private void addToPropertyNameList(Member member) {
+		String name = ReflectionHelper.getPropertyName( member );
+		if ( name != null ) {
+			propertyNames.add( name );
+		}
+	}
+
 	private void setAccessibility(Member member) {
 		SetAccessibility action = SetAccessibility.action( member );
 		if ( System.getSecurityManager() != null ) {
@@ -314,6 +321,8 @@
 		}
 
 		for ( Method method : declaredMethods ) {
+			addToPropertyNameList( method );
+
 			// HV-172
 			if ( Modifier.isStatic( method.getModifiers() ) ) {
 				continue;
@@ -323,11 +332,6 @@
 				continue;
 			}
 
-			String name = ReflectionHelper.getPropertyName( method );
-			if ( name != null ) {
-				propertyNames.add( name );
-			}
-
 			List<ConstraintDescriptorImpl<?>> methodMetaData = findConstraints( method, ElementType.METHOD );
 			for ( ConstraintDescriptorImpl<?> constraintDescription : methodMetaData ) {
 				setAccessibility( method );
@@ -335,7 +339,6 @@
 				addMetaConstraint( clazz, metaConstraint );
 			}
 			if ( method.isAnnotationPresent( Valid.class ) ) {
-				setAccessibility( method );
 				addCascadedMember( method );
 			}
 		}

Added: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/xml/Properties.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/xml/Properties.java	                        (rev 0)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/xml/Properties.java	2009-10-14 11:47:08 UTC (rev 17743)
@@ -0,0 +1,37 @@
+// $Id:$
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, Red Hat, Inc. and/or its affiliates, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.hibernate.validator.xml;
+
+import java.util.List;
+
+/**
+ * @author Hardy Ferentschik
+ */
+public class Properties {
+	private List<String> listOfString;
+
+	public List<String> getListOfString() {
+		return listOfString;
+	}
+
+	public void setListOfString(List<String> listOfString) {
+		this.listOfString = listOfString;
+	}
+}
+
+


Property changes on: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/xml/Properties.java
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/xml/XmlMappingTest.java
===================================================================
--- validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/xml/XmlMappingTest.java	2009-10-14 08:11:10 UTC (rev 17742)
+++ validator/trunk/hibernate-validator/src/test/java/org/hibernate/validator/xml/XmlMappingTest.java	2009-10-14 11:47:08 UTC (rev 17743)
@@ -17,6 +17,8 @@
 */
 package org.hibernate.validator.xml;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Set;
 import javax.validation.Configuration;
 import javax.validation.ConstraintViolation;
@@ -49,4 +51,28 @@
 
 		assertEquals( violations.size(), 1 );
 	}
+
+	@Test
+	/**
+	 * HV-252
+	 */
+	public void testListOfString() {
+
+		final Configuration<?> configuration = Validation.byDefaultProvider().configure();
+		configuration.addMapping( XmlMappingTest.class.getResourceAsStream( "properties-mapping.xml" ) );
+
+		final ValidatorFactory validatorFactory = configuration.buildValidatorFactory();
+		final Validator validator = validatorFactory.getValidator();
+
+		List<String> listOfString = new ArrayList<String>();
+		listOfString.add( "one" );
+		listOfString.add( "two" );
+		listOfString.add( "three" );
+
+		final Set<ConstraintViolation<Properties>> violations = validator.validateValue(
+				Properties.class, "listOfString", listOfString
+		);
+
+		assertEquals( violations.size(), 0 );
+	}
 }

Copied: validator/trunk/hibernate-validator/src/test/resources/org/hibernate/validator/xml/properties-mapping.xml (from rev 17637, validator/trunk/hibernate-validator/src/test/resources/org/hibernate/validator/xml/mapping.xml)
===================================================================
--- validator/trunk/hibernate-validator/src/test/resources/org/hibernate/validator/xml/properties-mapping.xml	                        (rev 0)
+++ validator/trunk/hibernate-validator/src/test/resources/org/hibernate/validator/xml/properties-mapping.xml	2009-10-14 11:47:08 UTC (rev 17743)
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<constraint-mappings xmlns="http://jboss.org/xml/ns/javax/validation/mapping"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/mapping validation-mapping-1.0.xsd">
+      <default-package>org.hibernate.validator.xml</default-package>
+      <bean class="Properties" ignore-annotations="true">
+          <getter name="listOfString" ignore-annotations="true">
+              <constraint annotation="javax.validation.constraints.NotNull" />
+          </getter>
+      </bean>
+</constraint-mappings>
\ No newline at end of file


Property changes on: validator/trunk/hibernate-validator/src/test/resources/org/hibernate/validator/xml/properties-mapping.xml
___________________________________________________________________
Name: svn:keywords
   + Id



More information about the hibernate-commits mailing list