1 10 package org.nanocontainer.aop.dynaop; 11 12 import dynaop.MixinFactory; 13 import dynaop.Proxy; 14 import org.picocontainer.ComponentAdapter; 15 import org.picocontainer.PicoContainer; 16 import org.picocontainer.defaults.ConstructorInjectionComponentAdapter; 17 18 import java.util.Properties ; 19 20 27 class ContainerSuppliedMixinFactory implements MixinFactory { 28 29 private final PicoContainer pico; 30 private final Class mixinClass; 31 32 41 ContainerSuppliedMixinFactory(PicoContainer pico, Class mixinClass) { 42 this.pico = pico; 43 this.mixinClass = mixinClass; 44 } 45 46 55 public Object create(Proxy proxy) throws NullPointerException { 56 Object mixin = pico.getComponentInstanceOfType(mixinClass); 57 if (mixin == null) { 58 ComponentAdapter adapter = new ConstructorInjectionComponentAdapter(mixinClass, mixinClass); 59 mixin = adapter.getComponentInstance(pico); 60 } 61 return mixin; 62 } 63 64 69 public Properties getProperties() { 70 Properties properties = new Properties (); 71 properties.setProperty("advice", "mixin"); 72 return properties; 73 } 74 75 } | Popular Tags |