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
-~----------~----~----~----~------~----~------~--~---

Reply via email to