    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     *****************************************************************************/
    009    package org.picocontainer.injectors;
    010
    011    import org.picocontainer.Parameter;
    012    import org.picocontainer.ComponentMonitor;
    013    import org.picocontainer.LifecycleStrategy;
    014    import org.picocontainer.annotations.Inject;
    015
    016    /** @author Paul Hammant */
    017    @SuppressWarnings("serial")
    018    public class MultiInjector extends CompositeInjector {
    019
    020        public MultiInjector(Object componentKey,
    021                             Class componentImplementation,
    022                             Parameter[] parameters,
    023                             ComponentMonitor componentMonitor, LifecycleStrategy lifecycleStrategy, String setterPrefix, boolean useNames) {
    024            super(componentKey, componentImplementation, parameters, componentMonitor, lifecycleStrategy, useNames,
    025                    componentMonitor.newInjector(new ConstructorInjector(componentKey, componentImplementation, parameters, componentMonitor, lifecycleStrategy, useNames)),
    026                    componentMonitor.newInjector(new SetterInjector(componentKey, componentImplementation, parameters, componentMonitor, lifecycleStrategy, setterPrefix, useNames)),
    027                    componentMonitor.newInjector(new AnnotatedMethodInjector(componentKey, componentImplementation, parameters, componentMonitor, lifecycleStrategy, Inject.class, useNames)),
    028                    componentMonitor.newInjector(new AnnotatedFieldInjector(componentKey, componentImplementation, parameters, componentMonitor, lifecycleStrategy, Inject.class, useNames)));
    029
    030        }
    031
    032        public String getDescriptor() {
    033            return "MultiInjector";
    034        }
    035    }