[ 
https://issues.apache.org/jira/browse/SLING-2938?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13878876#comment-13878876
 ] 

Justin Edelson commented on SLING-2938:
---------------------------------------

Doing the same thing at build time would require additional code generation.

{code}
@Component 
  @Service 
  public class MyAdapters implements AdapterMethodProvider { 
    @AdapterMethod 
    public Bar toBar(Foo f) { ... adapt Foo to Bar ... } 
  } 
{code}

needs to become (in bytecode terms):
{code}
public class MyAdapters implements AdapterFactory { 

    public <T> T getAdapter(Object adaptable, Class<T> type) {
         return toBar(adaptable);
    }

    public Bar toBar(Foo f) { ... adapt Foo to Bar ... } 
} 
{code}

> AdapterMethods annotation and adapter proxy service
> ---------------------------------------------------
>
>                 Key: SLING-2938
>                 URL: https://issues.apache.org/jira/browse/SLING-2938
>             Project: Sling
>          Issue Type: Bug
>          Components: Engine, Extensions
>    Affects Versions: Adapter 2.1.0
>            Reporter: Bertrand Delacretaz
>            Priority: Minor
>         Attachments: SLING-2938-api.patch, console.jpg
>
>
> Following up on an idea that Olaf Otto presented at CQCon last week, I've 
> been working on an @AdapterMethod annotation that makes it easier to create 
> Sling adapters, as in
>   @Component
>   @Service
>   public class MyAdapters implements AdapterMethodProvider {
>     @AdapterMethod
>     public Bar toBar(Foo f) { ... adapt Foo to Bar ... }
>   }
> As this requires changes to the sling.api bundle, I'll commit to my 
> whiteboard first, for review



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to