001package org.picocontainer.injectors;
002
003import org.picocontainer.ComponentMonitor;
004import org.picocontainer.Parameter;
005import org.picocontainer.PicoContainer;
006
007import java.lang.reflect.AccessibleObject;
008import java.lang.reflect.Field;
009import java.lang.reflect.Type;
010import java.util.List;
011import java.util.Set;
012
013public 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}