View Javadoc

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  }