@Override public Object resolve(Injectee injectee) { Injectee newInjectee = injectee; if (injectee.isFactory()) { newInjectee = getFactoryInjectee(injectee, ReflectionHelper.getTypeArgument(injectee.getRequiredType(), 0)); } Bean<?> bean = descriptorCache.apply(newInjectee.getRequiredType()); if (bean != null) { CreationalContext ctx = beanManager.get().createCreationalContext(bean); Object result = bean.create(ctx); if (injectee.isFactory()) { return (Supplier<Object>) () -> result; } else { return result; } } return null; }
private RequiredTypeOverridingInjectee(Injectee injectee, Type requiredType) { setFactory(injectee.isFactory()); setInjecteeClass(injectee.getInjecteeClass()); setInjecteeDescriptor(injectee.getInjecteeDescriptor()); setOptional(injectee.isOptional()); setParent(injectee.getParent()); setPosition(injectee.getPosition()); setRequiredQualifiers(injectee.getRequiredQualifiers()); setRequiredType(requiredType); } }