Artem Melentyev wrote:
> 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?

Yes, it is (at the toString() level). wrappedService will be a java 
object, and not a classname. Right, Vincent?

>> * 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?

Just edit the corresponding plexus.xml

>> * 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.
> 


-- 
Sergiu Dumitriu
http://purl.org/net/sergiu/
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to