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    }