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

