001/*****************************************************************************
002 * Copyright (C) PicoContainer Organization. All rights reserved.            *
003 * ------------------------------------------------------------------------- *
004 * The software in this package is published under the terms of the BSD      *
005 * style license a copy of which has been included with this distribution in *
006 * the LICENSE.txt file.                                                     *
007 *                                                                           *
008 *****************************************************************************/
009package org.picocontainer.injectors;
010
011import org.picocontainer.Parameter;
012import org.picocontainer.ComponentMonitor;
013import org.picocontainer.annotations.Inject;
014
015/** @author Paul Hammant */
016@SuppressWarnings("serial")
017public class MultiInjector extends CompositeInjector {
018
019    public MultiInjector(Object componentKey,
020                         Class componentImplementation,
021                         Parameter[] parameters,
022                         ComponentMonitor componentMonitor, String setterPrefix, boolean useNames) {
023        super(componentKey, componentImplementation, parameters, componentMonitor, useNames,
024                componentMonitor.newInjector(new ConstructorInjector(componentKey, componentImplementation, parameters, componentMonitor, useNames)),
025                componentMonitor.newInjector(new SetterInjector(componentKey, componentImplementation, parameters, componentMonitor, setterPrefix, "", false, useNames)),
026                componentMonitor.newInjector(new AnnotatedMethodInjector(componentKey, componentImplementation, parameters, componentMonitor, Inject.class, useNames)),
027                componentMonitor.newInjector(new AnnotatedFieldInjector(componentKey, componentImplementation, parameters, componentMonitor, Inject.class, useNames)));
028
029    }
030
031    public String getDescriptor() {
032        return "MultiInjector";
033    }
034}