1 10 11 package org.picocontainer.defaults; 12 13 import org.picocontainer.ComponentAdapter; 14 import org.picocontainer.PicoInitializationException; 15 import org.picocontainer.PicoIntrospectionException; 16 import org.picocontainer.PicoContainer; 17 18 22 public class CachingComponentAdapter extends DecoratingComponentAdapter { 23 24 private ObjectReference instanceReference; 25 26 public CachingComponentAdapter(ComponentAdapter delegate) { 27 this(delegate, new SimpleReference()); 28 } 29 30 public CachingComponentAdapter(ComponentAdapter delegate, ObjectReference instanceReference) { 31 super(delegate); 32 this.instanceReference = instanceReference; 33 } 34 35 public Object getComponentInstance(PicoContainer container) 36 throws PicoInitializationException, PicoIntrospectionException, AssignabilityRegistrationException, NotConcreteRegistrationException { 37 if (instanceReference.get() == null) { 38 instanceReference.set(super.getComponentInstance(container)); 39 } 40 return instanceReference.get(); 41 } 42 } 43 | Popular Tags |