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 }