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.annotations.Inject;
014    
015    /** @author Paul Hammant */
016    @SuppressWarnings("serial")
017    public 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    }