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 }