Clover Coverage Report - guice
Coverage timestamp: Wed Jan 7 2009 19:09:55 CST
../../../img/srcFileCovDistChart8.png 66% of files have more coverage
14   89   8   1.75
2   55   0.57   4
8     1  
2    
 
  InterceptorStackCallback       Line # 31 3 2 0 100% 1.0
  InterceptorStackCallback.InterceptedMethodInvocation       Line # 47 11 6 6 68.4% 0.68421054
 
  (16)
 
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 java.lang.reflect.AccessibleObject;
20    import java.lang.reflect.Method;
21    import java.util.List;
22    import net.sf.cglib.proxy.MethodProxy;
23    import org.aopalliance.intercept.MethodInterceptor;
24    import org.aopalliance.intercept.MethodInvocation;
25   
26    /**
27    * Intercepts a method with a stack of interceptors.
28    *
29    * @author crazybob@google.com (Bob Lee)
30    */
 
31    class InterceptorStackCallback implements net.sf.cglib.proxy.MethodInterceptor {
32   
33    final MethodInterceptor[] interceptors;
34    final Method method;
35   
 
36  90 toggle public InterceptorStackCallback(Method method,
37    List<MethodInterceptor> interceptors) {
38  90 this.method = method;
39  90 this.interceptors = interceptors.toArray(new MethodInterceptor[interceptors.size()]);
40    }
41   
 
42  29 toggle public Object intercept(Object proxy, Method method, Object[] arguments,
43    MethodProxy methodProxy) throws Throwable {
44  29 return new InterceptedMethodInvocation(proxy, methodProxy, arguments).proceed();
45    }
46   
 
47    class InterceptedMethodInvocation implements MethodInvocation {
48   
49    final Object proxy;
50    final Object[] arguments;
51    final MethodProxy methodProxy;
52    int index = -1;
53   
 
54  29 toggle public InterceptedMethodInvocation(Object proxy, MethodProxy methodProxy,
55    Object[] arguments) {
56  29 this.proxy = proxy;
57  29 this.methodProxy = methodProxy;
58  29 this.arguments = arguments;
59    }
60   
 
61  60 toggle public Object proceed() throws Throwable {
62  60 try {
63  60 index++;
64  60 return index == interceptors.length
65    ? methodProxy.invokeSuper(proxy, arguments)
66    : interceptors[index].invoke(this);
67    }
68    finally {
69  60 index--;
70    }
71    }
72   
 
73  0 toggle public Method getMethod() {
74  0 return method;
75    }
76   
 
77  0 toggle public Object[] getArguments() {
78  0 return arguments;
79    }
80   
 
81  2 toggle public Object getThis() {
82  2 return proxy;
83    }
84   
 
85  0 toggle public AccessibleObject getStaticPart() {
86  0 return getMethod();
87    }
88    }
89    }