1 10 11 package org.nanocontainer.nanning; 12 13 import org.codehaus.nanning.AspectInstance; 14 import org.codehaus.nanning.Mixin; 15 import org.codehaus.nanning.config.AspectSystem; 16 import org.picocontainer.extras.DecoratingComponentAdapter; 17 import org.picocontainer.ComponentAdapter; 18 import org.picocontainer.defaults.AssignabilityRegistrationException; 19 import org.picocontainer.defaults.NotConcreteRegistrationException; 20 import org.picocontainer.PicoInitializationException; 21 import org.picocontainer.PicoIntrospectionException; 22 import org.picocontainer.MutablePicoContainer; 23 24 29 public class NanningComponentAdapter extends DecoratingComponentAdapter { 30 31 private final AspectSystem aspectSystem; 32 33 public NanningComponentAdapter(AspectSystem aspectSystem, ComponentAdapter decoratedComponentAdapter) { 34 super(decoratedComponentAdapter); 35 this.aspectSystem = aspectSystem; 36 } 37 38 public Object getComponentInstance(MutablePicoContainer picoContainer) throws PicoInitializationException, PicoIntrospectionException, AssignabilityRegistrationException, NotConcreteRegistrationException { 39 Object component = super.getComponentInstance(picoContainer); 40 if (component.getClass().getInterfaces().length == 1) { 42 Class intf = component.getClass().getInterfaces()[0]; 43 AspectInstance aspectInstance = new AspectInstance(intf); 45 Mixin mixin = new Mixin(intf, component); 46 aspectInstance.addMixin(mixin); 47 48 aspectSystem.initialize(aspectInstance); 50 component = aspectInstance.getProxy(); 51 } 52 53 return component; 54 } 55 } 56 | Popular Tags |