<div dir="ltr"><div class="gmail_extra">2013/1/15 Emmanuel Bernard <span dir="ltr">&lt;<a href="mailto:emmanuel@hibernate.org" target="_blank">emmanuel@hibernate.org</a>&gt;</span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div>I can live with that but we must make it crystal clear that in case of<br>
ambiguity, we raise an exception. Otherwise, someone changing the method<br>
sig might have some nasty surprises.</div></blockquote><div><br></div><div>And which of the options</div><div><br></div><div>    @CrossParameterConstraint(validatedBy=MyCrossParameterValidator.class)</div>
<div>    @Constraint(validatedBy=MyGenericValidator.class)</div><div>    public @interface MyConstraint { ... }</div><div><br></div><div>vs.</div><div><br></div><div><div>    @Constraint(</div>
<div>        validatedBy=MyGenericValidator.class,</div><div>        crossParameterValidatorType=MyCrossParameterValidator.class</div><div>    )</div><div>    public @interface MyConstraint { ... }</div><div><br></div>
<div>would you prefer?</div><div><br></div><div>Personally I&#39;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.</div>

<div><br></div><div>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.</div>
<div><br></div><div>But this is no strong preference, I could also live with the two separate annotations.</div>
<div><br></div><div>--Gunnar</div><div><br></div><div>[1] <a href="http://wiki.eclipse.org/Evolving_Java-based_APIs_2#Evolving_API_interfaces_-_API_methods" target="_blank">http://wiki.eclipse.org/Evolving_Java-based_APIs_2#Evolving_API_interfaces_-_API_methods</a></div>

</div></div></div></div>