2013/1/15 Emmanuel Bernard <emmanuel@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