001 package org.picocontainer.injectors;
002
003 import org.picocontainer.ComponentMonitor;
004 import org.picocontainer.Parameter;
005 import org.picocontainer.PicoContainer;
006
007 import java.lang.reflect.AccessibleObject;
008 import java.lang.reflect.Field;
009 import java.lang.reflect.Type;
010 import java.util.List;
011 import java.util.Set;
012
013 public abstract class AbstractFieldInjector<T> extends IterativeInjector<T> {
014
015 public AbstractFieldInjector(Object componentKey, Class componentImplementation,
016 Parameter[] parameters, ComponentMonitor monitor,
017 boolean useNames) throws NotConcreteRegistrationException {
018 super(componentKey, componentImplementation, parameters, monitor, useNames);
019 }
020
021 @Override
022 final protected void unsatisfiedDependencies(PicoContainer container, Set<Type> unsatisfiableDependencyTypes, List<AccessibleObject> unsatisfiableDependencyMembers) {
023 StringBuilder sb = new StringBuilder(this.getComponentImplementation().getName()).append(" has unsatisfied dependency for fields [");
024 for (int i = 0; i < unsatisfiableDependencyMembers.size(); i++) {
025 AccessibleObject accessibleObject = unsatisfiableDependencyMembers.get(i);
026 Field m = (Field) accessibleObject;
027 sb.append(m.getType().getName()).append(".").append(m.getName());
028 }
029 String container1 = container.toString();
030 throw new UnsatisfiableDependenciesException(sb.toString() + "] from " + container1);
031 }
032
033 }