Hi Bertrand Cool stuff. Let me add some comments:
(1) I think the @AdapterMethod annotation should be just called @Adapter. Having an annotation on a method is called "...Method" is strange. And maybe it should be in a separate package. (2) The AdapterMethodProxyManagerImpl class should verify the methods as follows: Ensure non-void return type, ensure single argument, ensure no checked exceptions declared (@Adapter[Method] JavaDoc must define these requirements). Hence the proxy need not catch checked exceptions and re-throw them as RuntimeExceptions. In fact, no exceptions should be thrown at all -- rather a problem should just be logged and null returned. (3) Maybe we can find a better name for the AdapterMethodProvider interface -- something which is more in line with the AdapterFactory service name. I am also undecided whether we need a specific marker interface at all ? Maybe any service having annotated methods will do ? Or is this too expensive to check ? Regards Felix Am 01.07.2013 um 11:13 schrieb Bertrand Delacretaz: > Hi, > > Following up on Olaf Otto's excellent suggestions for simpler/cleaner > adapters at CQCon, I have created a prototype (in my whiteboard) that > handles @AdapterMethod annotations - you basically just need to > annotate a method like > > @AdapterMethod > public Bar adaptToBar(Foo f) { ... } > > in a service that implements the (empty) AdapterMethodsProvider > interface, to provide a Foo to Bar adapter. > > See SLING-2938 for details, [1] has two examples of > AdapterMethodsProvider services. > > Feedback is welcome. > > -Bertrand > > [1] > https://svn.apache.org/repos/asf/sling/whiteboard/bdelacretaz/adapter-methods/extensions-adapter/src/test/java/org/apache/sling/adapter/internal/AdapterMethodManagerIT.java