[bv-dev] Distinguishing cross-parameter and generic constraints

Gunnar Morling gunnar at hibernate.org
Fri Jan 11 10:22:55 EST 2013


Anyone with thoughts/feedback on this?

Thanks,

--Gunnar


2013/1/7 Gunnar Morling <gunnar at 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 ConstraintDeclarationException
>
> Any thoughts?
>
> --Gunnar
>
> [1] https://hibernate.onjira.com/browse/BVAL-340
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/beanvalidation-dev/attachments/20130111/7965f555/attachment.html 


More information about the beanvalidation-dev mailing list