private List<MethodInjector> methodInjectors(BeanSpec target, Set<BeanSpec> chain) { BeanSpec current = target; List<MethodInjector> methodInjectors = C.newList(); while (null != current && !current.isObject()) { for (Method method : current.getDeclaredMethods()) { if (subjectToInject(method)) { method.setAccessible(true); methodInjectors.add(methodInjector(method, chain)); } } current = current.parent(); } return methodInjectors; }
private List<MethodInjector> methodInjectors(BeanSpec target, Set<BeanSpec> chain) { BeanSpec current = target; List<MethodInjector> methodInjectors = C.newList(); while (null != current && !current.isObject()) { for (Method method : current.getDeclaredMethods()) { if (subjectToInject(method)) { method.setAccessible(true); methodInjectors.add(methodInjector(method, chain)); } } current = current.parent(); } return methodInjectors; }
private void registerFactoryMethod(final Object instance, final Method factory) { Type retType = factory.getGenericReturnType(); Annotation[] factoryAnnotations = factory.getAnnotations(); final BeanSpec spec = BeanSpec.of(retType, factoryAnnotations, this); final MethodInjector methodInjector = methodInjector(factory, C.<BeanSpec>empty()); addIntoRegistry(spec, decorate(spec, new Provider() { @Override public Object get() { return methodInjector.applyTo(instance); } @Override public String toString() { return S.fmt("%s::%s", instance.getClass().getName(), methodInjector.method.getName()); } }, true), factoryAnnotations.length == 0); fireProviderRegisteredEvent(spec.rawType()); }
private void registerFactoryMethod(final Object instance, final Method factory) { Type retType = factory.getGenericReturnType(); Annotation[] factoryAnnotations = factory.getAnnotations(); final BeanSpec spec = BeanSpec.of(retType, factoryAnnotations, this); final MethodInjector methodInjector = methodInjector(factory, C.<BeanSpec>empty()); addIntoRegistry(spec, decorate(spec, new Provider() { @Override public Object get() { return methodInjector.applyTo(instance); } @Override public String toString() { return S.fmt("%s::%s", instance.getClass().getName(), methodInjector.method.getName()); } }, true), factoryAnnotations.length == 0); fireProviderRegisteredEvent(spec.rawType()); }