>From another thread, Simon Kitching wrote: > >The decorator pattern is hugely useful. In particular, you can apply a >decorator to an existing object (eg something returned by a library), >which you cannot achieve by subclassing something. Even when it is your >own code that is creating the actual object instance, a decorator is >sometimes a more elegant approach than subclassing anyway.
Commons proxy already supports "decorating" an object using "interceptors" (and provides a bridging class for AOP alliance-based interceptors). What I'm talking about adding support for is being able to programmatically say "if this method comes in, use this invoker instead." >Having commons-proxy provide a way to proxy just specific methods would >be nice, although not critical IMO. Proxying a specific method or >methods can of course be built on top of a generic proxy API simply by: > if (method.name == "foo") { > // do something > } else { > method.invoke(proxy, args); // just forward the call on to the >original object > } >but this is a little ugly. I agree this is ugly. That's why I'm proposing that perhaps we can build in first-class support for this pattern (if it's deemed useful/common enough). >Having commons-proxy support running AOP Advices for specific methods >while passing the others through automatically would be nice. However >the standard "pointcut" language for specifying which methods to match >is rather ugly and complex. And turning commons-proxy into a full AOP >library supporting the org.aopalliance.aop.* APIs >(http://aopalliance.sourceforge.net/) would be a big job. I presume >you're aware that springframework.org includes extensive AOP support >based on the aopalliance APIs? Proxy has the concept of a MethodFilter that you can use to filter out methods that you don't want proxied when you're using Interceptors. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]