You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Pierre Bourret (JIRA)" <ji...@apache.org> on 2013/06/07 15:36:20 UTC

[jira] [Commented] (FELIX-3930) New Interceptor model for handlers

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

Pierre Bourret commented on FELIX-3930:
---------------------------------------

Here is a proposal for a new interception model : https://github.com/bourretp/felix/tree/feature/interception-api

It is based on the Interceptor pattern customized for POJOs.
Constructors & method invocations + field access can be intercepted, arguments/return value can be injected/changed/removed.
For methods, the real method invocation can be completely skipped (e.g. a cache-handler)
For constructors, the choice of the correct constructor to call depends on the actual type of the injected arguments. An error is raised if no suitable constructor can be found. A warning occurs if there is an ambiguity (and the "first" one is chosen)
For fields, nothing special, except that the injected values are _really_ put in the POJO fields... Really nice for debugging. All injected references are cleared when the component is stopped, to avoid keeping stale references of services and blocking bundle GC.

Documentation is _ongoing_, and implementation is still open to fixes/enhancement.

One _big_ blot : this proposition, especially changes in the manipulator, break compatibility with iPOJO components built with previous versions of the manipulator. Keeping this compatibility seems really complicated (at east).
So this feature cannot be integrated in the mainline now, and must wait for iPOJO version 2.0.0.
                
> New Interceptor model for handlers
> ----------------------------------
>
>                 Key: FELIX-3930
>                 URL: https://issues.apache.org/jira/browse/FELIX-3930
>             Project: Felix
>          Issue Type: Improvement
>          Components: iPOJO
>            Reporter: Clement Escoffier
>            Assignee: Clement Escoffier
>
> Define and implement a new interceptor model.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira