Hello,
I just tried to use a MethodInterceptor with a Provider-Method binding
but the method interceptor gets not applied.
When I use the "normal" binding style: bind(Service.class).to
(ServiceImpl.class);
the inteceptor gets applied.
Am I doing something wrong here?
package de.tutorials;
import java.util.Arrays;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.Provides;
import com.google.inject.matcher.Matchers;
public class InterceptorIsNotAppliedToProviderMethodBinding {
public static void main(String[] args) {
Injector injector = Guice.createInjector(modules());
Service service = injector.getInstance(Service.class);
service.service();
}
private static Iterable<Module> modules() {
return Arrays.<Module>asList(
// interceptorIsApplied()
// ,
interceptorIsNotApplied()
);
}
private static Module interceptorIsApplied() {
return new AbstractModule(){
protected void configure() {
bind(Service.class).to(ServiceImpl.class);
bindInterceptor(Matchers.subclassesOf(Service.class), Matchers.any
(), tracingInterceptor());
}
};
}
private static Module interceptorIsNotApplied() {
return new AbstractModule(){
@SuppressWarnings("unused")
@Provides Service services(){
return new ServiceImpl();
}
@Override
protected void configure() {
bindInterceptor(Matchers.subclassesOf(Service.class), Matchers.any
(), tracingInterceptor());
}
};
}
protected static MethodInterceptor tracingInterceptor() {
return new MethodInterceptor(){
@Override
public Object invoke(MethodInvocation methodInvocation)
throws
Throwable {
System.out.println("About to execute: " +
methodInvocation.getMethod());
return methodInvocation.proceed();
}
};
}
static interface Service{
void service();
}
static class ServiceImpl implements Service{
public void service() {
System.out.println("service");
}
}
}
Best regards,
Thomas
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en
-~----------~----~----~----~------~----~------~--~---