I think we need to re-think the stubbing support in proxy2. I'm not saying I don't like the idea. What I propose is that we introduce some lower-level abstractions on which the stubbing is built. For instance, I would propose we introduce a couple of interfaces (or the concept of these interfaces):
public interface InvocationMatcher { boolean matches(Invocation invocation); } public interface Response { Object response(Invocation invocation); } Using these two simple interfaces, we could support all sorts of "filtered" interceptors. For stubbing, I could imagine an interceptor like this: public class AdviceInterceptor implements Interceptor { private final List<Advice> advices = …; public void advise(InvocationMatcher matcher, Response response) { advices.add(new Advice(matcher, response)); } Object intercept( Invocation invocation ) throws Throwable { for(Advice advice: advices) { if(advice.getMatcher().matches(invocation)) { return advice.getResponse().respond(invocation); } } return invocation.proceed(); } private class Advice { private final InvocationMatcher matcher; private final Response response; ... } } All of the stubbing support could be built upon these simple concepts and then it would also be available to our users to invent their own ingenious ways to do interception. What do you think? --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org