[hibernate-issues] [Hibernate-JIRA] Updated: (HV-198) Wront constraint violation path when adding subnode error to subnode
Hardy Ferentschik (JIRA)
noreply at atlassian.com
Thu Aug 6 07:27:15 EDT 2009
[ http://opensource.atlassian.com/projects/hibernate/browse/HV-198?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hardy Ferentschik updated HV-198:
---------------------------------
Fix Version/s: 4.0.0.CR1
> Wront constraint violation path when adding subnode error to subnode
> --------------------------------------------------------------------
>
> Key: HV-198
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HV-198
> Project: Hibernate Validator
> Issue Type: Bug
> Components: engine
> Affects Versions: 4.0.0.Beta2
> Environment: Hibernate Validator Beta 2, JRE 1.6
> Reporter: Alexey Romanchuk
> Priority: Critical
> Fix For: 4.0.0.CR1
>
> Original Estimate: 1 hour
> Remaining Estimate: 1 hour
>
> When I use subnode error in validator and object is part of another with @Valid tag I have incorrect path in ConstrainViolation.
> Example:
> I got "start" instead of "interval.start". Looks like we need merge paths when ConstraintViolationImpl is created
> class Item
> {
> @Valid
> Interval interval;
> }
> @StartLessThatEnd
> class Interval
> {
> int start;
> int end;
> }
> public class ValidatorTest
> {
> public static void main( String[] args )
> {
> Item item = new Item();
> item.interval = new Interval();
> item.interval.start = 10;
> item.interval.end = 5;
>
> ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
> ConstraintViolation<Item> c = factory.getValidator().validate( item ).iterator().next();
> System.out.println( c.getPropertyPath() );
> }
> }
> @Target( ElementType.TYPE )
> @Retention( RetentionPolicy.RUNTIME )
> @Constraint( validatedBy = StartLessThatEndImpl.class )
> public @interface StartLessThatEnd
> {
> String message() default "x";
> Class<?>[] groups() default {};
>
> Class<? extends ConstraintPayload>[] payload() default { };
> }
> public class StartLessThatEndImpl implements ConstraintValidator<StartLessThatEnd, Interval>
> {
> @Override
> public void initialize( StartLessThatEnd constraintAnnotation )
> {
> }
> @Override
> public boolean isValid( Interval value, ConstraintValidatorContext c )
> {
> if ( value.start > value.end )
> {
> c.disableDefaultError();
> c.buildErrorWithMessageTemplate( c.getDefaultErrorMessageTemplate() ).addSubNode( "start" ).addError();
> return false;
> }
> return true;
> }
> }
--
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