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 }