Clover coverage report - PicoContainer - 1.0-alpha-2
Coverage timestamp: Thu Jul 10 2003 10:40:43 BST
file stats: LOC: 42   Methods: 5
NCLOC: 32   Classes: 2
30 day Evaluation Version distributed via the Maven Jar Repository. Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover
 
 Source file Conditionals Statements Methods TOTAL
ImplementationHidingComponentFactory.java 50% 75% 80% 73.3%
coverage coverage
 1   
 package picocontainer.extras;
 2   
 
 3   
 import picocontainer.ComponentFactory;
 4   
 import picocontainer.PicoInstantiationException;
 5   
 import picocontainer.PicoIntrospectionException;
 6   
 
 7   
 import java.lang.reflect.Proxy;
 8   
 import java.lang.reflect.InvocationHandler;
 9   
 import java.lang.reflect.Method;
 10   
 
 11   
 public class ImplementationHidingComponentFactory implements ComponentFactory {
 12   
     private final ComponentFactory componentFactory;
 13   
 
 14  1
     public ImplementationHidingComponentFactory(ComponentFactory componentFactory) {
 15  1
         this.componentFactory = componentFactory;
 16   
     }
 17   
 
 18  1
     public Object createComponent(Class componentType, Class componentImplementation, Class[] dependencies, Object[] instanceDependencies) throws PicoInstantiationException, PicoIntrospectionException {
 19  1
         Object componentInstance = componentFactory.createComponent(componentType, componentImplementation, dependencies, instanceDependencies);
 20  1
         return Proxy.newProxyInstance(componentImplementation.getClass().getClassLoader(), new Class[]{componentType}, new ImplementationHidingProxy(componentInstance));
 21   
     }
 22   
 
 23  0
     public Class[] getDependencies(Class componentImplementation) throws PicoIntrospectionException {
 24  0
         return componentFactory.getDependencies(componentImplementation);
 25   
     }
 26   
 
 27   
     private class ImplementationHidingProxy implements InvocationHandler {
 28   
         private Object componentInstance;
 29   
 
 30  1
         public ImplementationHidingProxy(Object componentInstance) {
 31  1
             if (componentInstance == null) {
 32  0
                 throw new NullPointerException("componentInstance can't be null");
 33   
             }
 34  1
             this.componentInstance = componentInstance;
 35   
         }
 36   
 
 37  1
         public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
 38  1
             return method.invoke(componentInstance, args);
 39   
         }
 40   
     }
 41   
 }
 42