private void addIntoRegistry(Class<?> type, Provider<?> val) { addIntoRegistry(BeanSpec.of(type, this), val, true); }
private void addIntoRegistry(Class<?> type, Provider<?> val) { addIntoRegistry(BeanSpec.of(type, this), val, true); }
private void bindProviderToClass(Class<?> target, Provider<?> provider, boolean fireEvent) { addIntoRegistry(target, provider); AFFINITY.set(AFFINITY.get() + 1); Class dad = target.getSuperclass(); if (null != dad && Object.class != dad) { bindProviderToClass(dad, provider, fireEvent); } Class[] roles = target.getInterfaces(); if (null == roles) { return; } for (Class role : roles) { bindProviderToClass(role, provider, fireEvent); } if (fireEvent) { fireProviderRegisteredEvent(target); } }
private void bindProviderToClass(Class<?> target, Provider<?> provider, boolean fireEvent) { addIntoRegistry(target, provider); AFFINITY.set(AFFINITY.get() + 1); Class dad = target.getSuperclass(); if (null != dad && Object.class != dad) { bindProviderToClass(dad, provider, fireEvent); } Class[] roles = target.getInterfaces(); if (null == roles) { return; } for (Class role : roles) { bindProviderToClass(role, provider, fireEvent); } if (fireEvent) { fireProviderRegisteredEvent(target); } }
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()); }