• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright (C) 2006 Google Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.google.inject;
18 
19 import static com.google.inject.matcher.Matchers.any;
20 
21 import junit.framework.TestCase;
22 
23 import org.aopalliance.intercept.MethodInterceptor;
24 import org.aopalliance.intercept.MethodInvocation;
25 
26 /**
27  * @author crazybob@google.com (Bob Lee)
28  */
29 public class IntegrationTest extends TestCase {
30 
testIntegration()31   public void testIntegration() throws CreationException {
32     final CountingInterceptor counter = new CountingInterceptor();
33 
34     Injector injector = Guice.createInjector(new AbstractModule() {
35       protected void configure() {
36         bind(Foo.class);
37         bindInterceptor(any(), any(), counter);
38       }
39     });
40 
41     Foo foo = injector.getInstance(Key.get(Foo.class));
42     foo.foo();
43     assertTrue(foo.invoked);
44     assertEquals(1, counter.count);
45 
46     foo = injector.getInstance(Foo.class);
47     foo.foo();
48     assertTrue(foo.invoked);
49     assertEquals(2, counter.count);
50   }
51 
52   static class Foo {
53     boolean invoked;
foo()54     public void foo() {
55       invoked = true;
56     }
57   }
58 
59   static class CountingInterceptor implements MethodInterceptor {
60 
61     int count;
62 
invoke(MethodInvocation methodInvocation)63     public Object invoke(MethodInvocation methodInvocation) throws Throwable {
64       count++;
65       return methodInvocation.proceed();
66     }
67   }
68 
69 }
70