Anyone with thoughts/feedback on this?Thanks,--Gunnar2013/1/7 Gunnar Morling <gunnar@hibernate.org>
Hi all,As per the latest spec draft, a constraint must be either a cross-parameter *or* a generic constraint, but not both at the same time, as otherwise it would be ambiguous whether a constraint on a method refers to the method parameters or return value.Most of the time this does not really pose a limitation, but some constraints actually might be both, cross-parameter *and* generic, depending on the specific context. Examples are @ScriptAssert in Hibernate Validator or generic constraints such as this:
@EqualPasswords
public void register(String userName, String password, String confirmedPassword) {
}
@EqualPasswords
public class ResetPasswordRequest {String userName;
String password;
String confirmedPassword;
}Based on a recent BVAL issue [1], I'm proposing to introduce a special constraint annotation attribute, "validationAppliesTo", allowing to specify the required behavior at the usage site:@EqualPasswords(validationAppliesTo=PARAMETERS)
public void register(String username, String password, String confirmPassword) {
}@EqualPasswords(validationAppliesTo=ANNOTATED_ELEMENT)
public class ResetPasswordRequest {
String password;
String confirmedPassword;
}The following rules would apply:* If a constraint is annotated with @Constraint and @CrossParameterConstraint, it must define a member "validationAppliesTo". The default value should be ANNOTATED_ELEMENT.* If a constraint is annotated with only one of @Constraint/@CrossParameterConstraint, defining a "validationAppliesTo" member doesn't have any special effect* Specifying validationAppliesTo=PARAMETERS anywhere except a method causes ConstraintDeclarationExceptionAny thoughts?--Gunnar
_______________________________________________
beanvalidation-dev mailing list
beanvalidation-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/beanvalidation-dev