1 package jp.liq.container.vocabulary; 2 3 import jp.liq.container.Injector; 4 import jp.liq.container.Resolver; 5 import jp.liq.container.reflect.ObjectField; 6 import jp.liq.container.reflect.ObjectMethod; 7 8 public class Injectors { 9 private final Fields fields = new Fields(); 10 private final Methods methods = new Methods(); 11 12 public Injector toFields() { 13 return new Injector() { 14 public void inject(Object target, Resolver resolver) { 15 for (ObjectField f : fields.of(target) 16 .withAnnotation(Inject.class)) { 17 f.set(resolver.resolve(f.getField().getType())); 18 } 19 } 20 21 }; 22 } 23 24 public Injector toMethods() { 25 return new Injector() { 26 public void inject(Object target, Resolver resolver) { 27 for (ObjectMethod m : methods.of(target) 28 .withAnnotation(Inject.class)) { 29 m.invoke(resolver.resolve(m.getParameterTypes())); 30 } 31 } 32 33 }; 34 } 35 }