Vincent Massol wrote:
> ...
> 
> Ok here's what I propose:
> 
> * A module can have one or VelocityBridge components
> * A VelocityBridge component can override or create new methods
> * A VelocityBridge is registered as a component with a role-hint of  
> the class being bridged
> * A VelocityBridge has a getName() method. That's the name under which  
> it'll be known in velocity (more below)
> * A VelocityBridge has a getWrappedService() method which returns the  
> instance of the class being wrapped.

Is wrappedService.class == role-hint?
Or what's the difference?

> * There's a MethodSwapUberspector uberspector which has a high  
> priority and thus intercepts all calls.
> * On init the MethodSwapUberspector looks for all VelocityBridge  
> components and stores them in a hashmap indexed on their names.

How can I disable some bridges? Some configuration option?

> * When "services.<name>.<method>" is called from Velocity, the  
> MethodSwapUberspector gets called and it looks in its hashmap for a  
> bridge named <name>. If found it looks for the <method> method in that  
> class (with the same signature). If found it calls it. If not found it  
> tries to call the method directly by calling it on getWrappedService().
> WDYT?

+1.

-- 
   Artem Melentyev
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to