This is not strictly an AS7 question but since I know you are all bored and looking for an easy challenge for a change ;-)
I have a
public class Master
{
@Valid
private List<Detail> details;
public Master()
{
details = new ArrayList<Detail>();
details.add(new Detail());
details.add(new Detail());
}
public List<Detail> getDetails()
{
return details;
}
public void setDetails(List<Detail> details)
{
this.details = details;
}
}
and a
@DetailValue
public class Detail
{
}
with a
@Documented
@Constraint(validatedBy = DetailValueValidator.class)
@Target(TYPE)
@Retention(RUNTIME)
public @interface DetailValue
{
String message() default "{nada}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
and
public class DetailValueValidator implements ConstraintValidator<DetailValue, Detail>
{
public void initialize(DetailValue constraintAnnotation)
{
}
public boolean isValid(Detail value, ConstraintValidatorContext context)
{
return false;
}
}
and test it with a
public static void main(String[] args)
{
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Master master = new Master();
for (ConstraintViolation<Master> constraintViolation : validator.validate(master))
{
System.out.println(constraintViolation.getPropertyPath());
}
}
How come I see
details[1] details[1] when I trough the debugger in the DetailValueValidator ConstraintValidatorContext see the correct paths details[0] and details[1] being processed?