[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