001 package org.picocontainer.behaviors;
002
003 import org.picocontainer.ComponentAdapter;
004 import org.picocontainer.PicoContainer;
005 import org.picocontainer.PicoCompositionException;
006 import org.picocontainer.behaviors.AbstractBehavior;
007
008 import java.lang.reflect.Type;
009
010 @SuppressWarnings("serial")
011 public class Decorated extends AbstractBehavior {
012 private final Decorator decorator;
013
014
015 public Decorated(ComponentAdapter delegate, Decorator decorator) {
016 super(delegate);
017 this.decorator = decorator;
018 }
019
020 public Object getComponentInstance(final PicoContainer container, Type into)
021 throws PicoCompositionException {
022 Object instance = super.getComponentInstance(container, into);
023 decorator.decorate(instance);
024 return instance;
025 }
026
027
028 public String getDescriptor() {
029 return "FieldDecorated";
030 }
031
032 public interface Decorator {
033
034 void decorate(Object instance);
035
036
037 }
038
039 }