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