1 10 11 package org.picocontainer.gems; 12 13 import com.thoughtworks.proxy.ProxyFactory; 14 import com.thoughtworks.proxy.factory.StandardProxyFactory; 15 16 import org.picocontainer.ComponentAdapter; 17 import org.picocontainer.Parameter; 18 import org.picocontainer.PicoIntrospectionException; 19 import org.picocontainer.defaults.AssignabilityRegistrationException; 20 import org.picocontainer.defaults.ComponentAdapterFactory; 21 import org.picocontainer.defaults.DecoratingComponentAdapterFactory; 22 import org.picocontainer.defaults.NotConcreteRegistrationException; 23 24 25 33 public class AssimilatingComponentAdapterFactory extends DecoratingComponentAdapterFactory { 34 35 private final ProxyFactory proxyFactory; 36 private final Class assimilationType; 37 38 45 public AssimilatingComponentAdapterFactory(final ComponentAdapterFactory delegate, final Class type) { 46 this(delegate, type, new StandardProxyFactory()); 47 } 48 49 56 public AssimilatingComponentAdapterFactory( 57 final ComponentAdapterFactory delegate, final Class type, final ProxyFactory proxyFactory) { 58 super(delegate); 59 this.assimilationType = type; 60 this.proxyFactory = proxyFactory; 61 } 62 63 70 public ComponentAdapter createComponentAdapter( 71 final Object componentKey, final Class componentImplementation, final Parameter[] parameters) 72 throws PicoIntrospectionException, AssignabilityRegistrationException, NotConcreteRegistrationException { 73 return new AssimilatingComponentAdapter(assimilationType, super.createComponentAdapter( 74 componentKey, componentImplementation, parameters), proxyFactory); 75 } 76 } 77 | Popular Tags |