• 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 import org.aopalliance.intercept.MethodInterceptor;
23 import org.aopalliance.intercept.MethodInvocation;
24 
25 /** @author crazybob@google.com (Bob Lee) */
26 public class IntegrationTest extends TestCase {
27 
testIntegration()28   public void testIntegration() throws CreationException {
29     final CountingInterceptor counter = new CountingInterceptor();
30 
31     Injector injector =
32         Guice.createInjector(
33             new AbstractModule() {
34               @Override
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;
54 
foo()55     public void foo() {
56       invoked = true;
57     }
58   }
59 
60   static class CountingInterceptor implements MethodInterceptor {
61 
62     int count;
63 
64     @Override
invoke(MethodInvocation methodInvocation)65     public Object invoke(MethodInvocation methodInvocation) throws Throwable {
66       count++;
67       return methodInvocation.proceed();
68     }
69   }
70 }
71