[hibernate-issues] [Hibernate-JIRA] Commented: (ANN-511) Two level @Valid annotation doesn't work
Rakesh Kalra (JIRA)
noreply at atlassian.com
Thu Dec 21 17:09:04 EST 2006
[ http://opensource.atlassian.com/projects/hibernate/browse/ANN-511?page=comments#action_25716 ]
Rakesh Kalra commented on ANN-511:
----------------------------------
Here is an example which works with 3.2.0.ga, but fails with 3.2.1.ga:
<pre>
import org.hibernate.validator.ClassValidator;
import org.hibernate.validator.NotNull;
import org.hibernate.validator.Valid;
public class HibernateValidatorTest {
public static void main(String[] args){
// ClassValidator construction fails with 3.2.1.ga.
ClassValidator<Form> formValidator = new ClassValidator<Form>(Form.class);
System.out.println("Test Passed");
}
}
class Form{
private Member member;
@Valid
public Member getMember(){
return member;
}
}
class Member{
private Address address;
@Valid
public Address getAddress(){
return address;
}
}
class Address{
private String city;
@NotNull
public String getCity(){
return city;
}
}
</pre>
Here is the output:
<pre>
INFO: Hibernate Annotations 3.2.1.GA
Exception in thread "main" java.lang.NullPointerException
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:142)
at org.hibernate.validator.ClassValidator.createChildValidator(ClassValidator.java:252)
at org.hibernate.validator.ClassValidator.initValidator(ClassValidator.java:216)
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:149)
at org.hibernate.validator.ClassValidator.createChildValidator(ClassValidator.java:252)
at org.hibernate.validator.ClassValidator.initValidator(ClassValidator.java:216)
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:134)
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:105)
at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:97)
at HibernateValidatorTest.main(HibernateValidatorTest.java:9)
</pre>
IMHO, the fix is simply to initialize "reflectionManager" in the ClassValidator constructor.
Regards,
Rakesh
> Two level @Valid annotation doesn't work
> -----------------------------------------
>
> Key: ANN-511
> URL: http://opensource.atlassian.com/projects/hibernate/browse/ANN-511
> Project: Hibernate Annotations
> Type: Bug
> Components: validator
> Versions: 3.2.1
> Environment: hibernate-annotations 3.2.1.ga
> Reporter: Rakesh Kalra
>
> Original Estimate: 1 hour
> Remaining: 1 hour
>
> I have object depth of 3: Form, Member, Address. I get the following exception when initializing ClassValidator:
> java.lang.NullPointerException
> at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:142)
> at org.hibernate.validator.ClassValidator.createChildValidator(ClassValidator.java:252)
> at org.hibernate.validator.ClassValidator.initValidator(ClassValidator.java:216)
> at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:149)
> at org.hibernate.validator.ClassValidator.createChildValidator(ClassValidator.java:252)
> at org.hibernate.validator.ClassValidator.initValidator(ClassValidator.java:216)
> at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:134)
> at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:105)
> at org.hibernate.validator.ClassValidator.<init>(ClassValidator.java:97)
> ...
> This works fine with 3.2.0.ga.
> I think the problem is in the following constructor, where instance level "reflectionManager" is not being initialized.
> protected ClassValidator(
> XClass beanXClass, ResourceBundle resourceBundle, MessageInterpolator userInterpolator,
> Map<XClass, ClassValidator> childClassValidators, ReflectionManager reflectionManager
> ) {
> this.beanClass = reflectionManager.toClass( beanXClass );
> this.messageBundle = resourceBundle == null ?
> getDefaultResourceBundle() :
> resourceBundle;
> this.defaultMessageBundle = ResourceBundle.getBundle( DEFAULT_VALIDATOR_MESSAGE );
> this.userInterpolator = userInterpolator;
> this.childClassValidators = childClassValidators;
> initValidator( beanXClass, childClassValidators );
> }
> The other constructor initializes reflectionManager.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list