On Fri, 18 Feb 2011 09:01:16 +0100, Emmanuel Bernard <emman...@hibernate.org> wrote:
> Reading the Google design by contract work, I realized that we do not > cover cross-parameter validation in method-level validation. I assume you are talking about cofoja (http://code.google.com/p/cofoja), right? > //We want to make sure departure is after arrival. > void book(Date arrival, Date departure); > > Any idea on ow best to address that? Some ideas: Introduce an equivalent to class level validators: @DateParameterCheck void book(Date arrival, Date departure); @MyMethodValidator could contain a marker annotation so that we know that we have a method level validation. At first thought we would have to pass object arrays to the validator implementations. This is of course at odds with the type safety approach of BV. Also if the method has a return value it is not directly clear by reading the code whether the return value would be validated or the parameters. An alternative would be something similar to @ScriptAssert: @ParameterCheck("arg[0].before(arg[1])") void book(Date arrival, Date departure); Gunnar already thought about naming parameters using @Named (HV-409), maybe we could also do something like: @ParameterCheck("arrival.before(departure)") void book(@Named("arrival") Date arrival, @Named("departure") Date departure); --Hardy _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev