Looks fine to me. I was concerned about passing Method around as well.

On 1 mars 2011, at 00:29, Gunnar Morling wrote:

> Hi,
> 
> I pretty much finished the implementation of the meta data API related to 
> method level constraints for Hibernate Validator (see 
> https://github.com/gunnarmorling/hibernate-validator/commits/HV-371). The 
> implementation conforms with what we currently discussed, but right now I'm 
> wondering whether exposing java.lang.reflect.Method on the API is actually a 
> good idea. I see two issues:
> 
> * Retrieving method objects via the reflection APIs is somewhat nasty, in 
> particular it requires to handle a checked NoSuchMethodException: 
> 
> try {
>     Method bar = Foo.class.getDeclaredMethod( "bar", String.class );
> }
> catch(Exception e) {
>     throw new RuntimeException(e);
> }
> 
> * The handling in inheritance hierarchies with overridden/implemented methods 
> can be confusing to users not overly familiar with the reflection API. In 
> particular there are different method objects for a base method and its 
> implementation/overriding methods. This can be irritating when invoking 
> MethodDescriptor#getMethod() for instance.
> 
> Therefore I would be interested in feedback on the following change:
> 
> public interface TypeDescriptor extends ElementDescriptor {
> 
>     MethodDescriptor getConstraintsForMethod(String name, Class<?>... 
> parameterTypes);
>     //instead of MethodDescriptor getConstraintsForMethod(Method method);
>     ...
> }
> 
> public interface MethodDescriptor extends ElementDescriptor {
> 
>     String getName();
> 
>     List<Class<?>> parameterTypes();
>     //instead of Method getMethod()
>     ...
> }
> 
> WDYT?
> 
> Thanks, Gunnar
> 

_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to