001package org.picocontainer.injectors;
002
003import org.picocontainer.ComponentAdapter;
004import org.picocontainer.ComponentMonitor;
005import org.picocontainer.LifecycleStrategy;
006import org.picocontainer.Parameter;
007import org.picocontainer.PicoCompositionException;
008
009import java.util.Properties;
010
011public class NamedMethodInjection extends AbstractInjectionFactory {
012
013    private final String prefix;
014    private final boolean optional;
015
016    public NamedMethodInjection(String prefix) {
017        this(prefix, true);
018    }
019
020    public NamedMethodInjection() {
021        this("set");
022    }
023
024    public NamedMethodInjection(boolean optional) {
025        this("set", optional);
026    }
027
028    public NamedMethodInjection(String prefix, boolean optional) {
029        this.prefix = prefix;
030        this.optional = optional;
031    }
032
033    public <T> ComponentAdapter<T> createComponentAdapter(ComponentMonitor monitor, LifecycleStrategy lifecycleStrategy, Properties componentProperties, Object componentKey, Class<T> componentImplementation, Parameter... parameters) throws PicoCompositionException {
034        return wrapLifeCycle(monitor.newInjector(new NamedMethodInjector(componentKey, componentImplementation, parameters, monitor, prefix, optional)), lifecycleStrategy);
035    }
036}