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}