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

Gunnar Morling gunnar at hibernate.org
Tue Jan 15 09:14:02 EST 2013


2013/1/15 Emmanuel Bernard <emmanuel at hibernate.org>

> I can live with that but we must make it crystal clear that in case of
> ambiguity, we raise an exception. Otherwise, someone changing the method
> sig might have some nasty surprises.
>

And which of the options

    @CrossParameterConstraint(validatedBy=MyCrossParameterValidator.class)
    @Constraint(validatedBy=MyGenericValidator.class)
    public @interface MyConstraint { ... }

vs.

    @Constraint(
        validatedBy=MyGenericValidator.class,
        crossParameterValidatorType=MyCrossParameterValidator.class
    )
    public @interface MyConstraint { ... }

would you prefer?

Personally I'd lean towards the latter, since there would be exactly one
meta-annotation denoting an annotation as constraint annotation type, with
all attributes for the required configuration.

If following the 2nd approach, we should IMO add a default clause to
validatedBy() (set to the empty array), allowing for
the convenient definition of cross-parameter only constraints. According to
[1] this change would be binary-compatible.

But this is no strong preference, I could also live with the two separate
annotations.

--Gunnar

[1]
http://wiki.eclipse.org/Evolving_Java-based_APIs_2#Evolving_API_interfaces_-_API_methods
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/beanvalidation-dev/attachments/20130115/4ab1545f/attachment.html 


More information about the beanvalidation-dev mailing list