@Override public Object resolve(Injectee injectee, ServiceHandle root) { InjecteeImpl injecteeWrapper = new InjecteeImpl(); injecteeWrapper.setRequiredType(injectee.getRequiredType()); injecteeWrapper.setParent(injectee.getParent()); injecteeWrapper.setRequiredQualifiers(injectee.getRequiredQualifiers()); injecteeWrapper.setOptional(injectee.isOptional()); injecteeWrapper.setPosition(injectee.getPosition()); injecteeWrapper.setFactory(ReflectionHelper.isSubClassOf(injectee.getRequiredType(), Factory.class)); injecteeWrapper.setInjecteeDescriptor(new ForeignDescriptorImpl(injectee.getInjecteeDescriptor())); Object instance = jerseyResolver.resolve(injecteeWrapper); if (injecteeWrapper.isFactory()) { return asFactory(instance); } else { return instance; } }
/** * Creates a new object {@link Injectee} corresponding to the injecting point. The injectee contains basic information * about the injection point types and {@link ForeignDescriptor} of the underlying DI provider to make delegated injection * resolver as simple as possible. * * @param parameter jersey-like parameter corresponding to one resource-method's parameter. * @return injectee instance as a source of the information about the injecting point. */ private Injectee getInjectee(Parameter parameter) { InjecteeImpl injectee = new InjecteeImpl(); injectee.setRequiredType(parameter.getType()); injectee.setInjecteeClass(parameter.getRawType()); ForeignDescriptor proxyDescriptor = descriptorCache.apply(parameter); if (proxyDescriptor != null) { injectee.setInjecteeDescriptor(proxyDescriptor); } return injectee; }
private Injectee parameterToInjectee(Constructor<T> constructor, Parameter parameter, int position) { InjecteeImpl injectee = new InjecteeImpl(); injectee.setParent(constructor); if (parameter.getParameterizedType() instanceof ParameterizedType && InjectionUtils.isProvider(parameter.getParameterizedType())) { ParameterizedType paramType = (ParameterizedType) parameter.getParameterizedType(); injectee.setRequiredType(paramType.getActualTypeArguments()[0]); injectee.setProvider(true); } else { injectee.setRequiredType(parameter.getType()); } injectee.setPosition(position); return injectee; }
/** * Returns the injectee for a field. * * @param bean bean in which the field is placed. * @param field the field to analyze. * @return the list (in order) of parameters to the constructor. */ private static Injectee getFieldInjectee(Bean<?> bean, Field field) { Set<Annotation> annotations = Arrays.stream(field.getAnnotations()) .collect(ImmutableCollectors.toImmutableSet()); Type adjustedType = ReflectionUtils.resolveField(bean.getBeanClass(), field); InjecteeImpl injectee = new InjecteeImpl(); injectee.setParentClassScope(bean.getScope()); if (isProvider(adjustedType)) { ParameterizedType paramType = (ParameterizedType) adjustedType; injectee.setRequiredType(paramType.getActualTypeArguments()[0]); injectee.setProvider(true); } else { injectee.setRequiredType(adjustedType); } injectee.setParent(field); injectee.setRequiredQualifiers(getFieldAdjustedQualifierAnnotations(field, annotations)); return injectee; }
@Override public Object resolve(Injectee injectee, ServiceHandle root) { InjecteeImpl injecteeWrapper = new InjecteeImpl(); injecteeWrapper.setRequiredType(injectee.getRequiredType()); injecteeWrapper.setParent(injectee.getParent()); injecteeWrapper.setRequiredQualifiers(injectee.getRequiredQualifiers()); injecteeWrapper.setOptional(injectee.isOptional()); injecteeWrapper.setPosition(injectee.getPosition()); injecteeWrapper.setFactory(ReflectionHelper.isSubClassOf(injectee.getRequiredType(), Factory.class)); injecteeWrapper.setInjecteeDescriptor(new ForeignDescriptorImpl(injectee.getInjecteeDescriptor())); Object instance = jerseyResolver.resolve(injecteeWrapper); if (injecteeWrapper.isFactory()) { return asFactory(instance); } else { return instance; } }
/** * Creates a new object {@link Injectee} corresponding to the injecting point. The injectee contains basic information * about the injection point types and {@link ForeignDescriptor} of the underlying DI provider to make delegated injection * resolver as simple as possible. * * @param parameter jersey-like parameter corresponding to one resource-method's parameter. * @return injectee instance as a source of the information about the injecting point. */ private Injectee getInjectee(Parameter parameter) { InjecteeImpl injectee = new InjecteeImpl(); injectee.setRequiredType(parameter.getType()); injectee.setInjecteeClass(parameter.getRawType()); ForeignDescriptor proxyDescriptor = descriptorCache.apply(parameter); if (proxyDescriptor != null) { injectee.setInjecteeDescriptor(proxyDescriptor); } return injectee; }
@Override public Object resolve(Injectee injectee, ServiceHandle root) { InjecteeImpl injecteeWrapper = new InjecteeImpl(); injecteeWrapper.setRequiredType(injectee.getRequiredType()); injecteeWrapper.setParent(injectee.getParent()); injecteeWrapper.setRequiredQualifiers(injectee.getRequiredQualifiers()); injecteeWrapper.setOptional(injectee.isOptional()); injecteeWrapper.setPosition(injectee.getPosition()); injecteeWrapper.setFactory(ReflectionHelper.isSubClassOf(injectee.getRequiredType(), Factory.class)); injecteeWrapper.setInjecteeDescriptor(new ForeignDescriptorImpl(injectee.getInjecteeDescriptor())); Object instance = jerseyResolver.resolve(injecteeWrapper); if (injecteeWrapper.isFactory()) { return asFactory(instance); } else { return instance; } }
/** * Creates a new object {@link Injectee} corresponding to the injecting point. The injectee contains basic information * about the injection point types and {@link ForeignDescriptor} of the underlying DI provider to make delegated injection * resolver as simple as possible. * * @param parameter jersey-like parameter corresponding to one resource-method's parameter. * @return injectee instance as a source of the information about the injecting point. */ private Injectee getInjectee(Parameter parameter) { InjecteeImpl injectee = new InjecteeImpl(); injectee.setRequiredType(parameter.getType()); injectee.setInjecteeClass(parameter.getRawType()); ForeignDescriptor proxyDescriptor = descriptorCache.apply(parameter); if (proxyDescriptor != null) { injectee.setInjecteeDescriptor(proxyDescriptor); } return injectee; }
@Override public Object resolve(Injectee injectee, ServiceHandle root) { InjecteeImpl injecteeWrapper = new InjecteeImpl(); injecteeWrapper.setRequiredType(injectee.getRequiredType()); injecteeWrapper.setParent(injectee.getParent()); injecteeWrapper.setRequiredQualifiers(injectee.getRequiredQualifiers()); injecteeWrapper.setOptional(injectee.isOptional()); injecteeWrapper.setPosition(injectee.getPosition()); injecteeWrapper.setFactory(ReflectionHelper.isSubClassOf(injectee.getRequiredType(), Factory.class)); injecteeWrapper.setInjecteeDescriptor(new ForeignDescriptorImpl(injectee.getInjecteeDescriptor())); Object instance = jerseyResolver.resolve(injecteeWrapper); if (injecteeWrapper.isFactory()) { return asFactory(instance); } else { return instance; } }
/** * Creates a new object {@link Injectee} corresponding to the injecting point. The injectee contains basic information * about the injection point types and {@link ForeignDescriptor} of the underlying DI provider to make delegated injection * resolver as simple as possible. * * @param parameter jersey-like parameter corresponding to one resource-method's parameter. * @return injectee instance as a source of the information about the injecting point. */ private Injectee getInjectee(Parameter parameter) { InjecteeImpl injectee = new InjecteeImpl(); injectee.setRequiredType(parameter.getType()); injectee.setInjecteeClass(parameter.getRawType()); ForeignDescriptor proxyDescriptor = descriptorCache.apply(parameter); if (proxyDescriptor != null) { injectee.setInjecteeDescriptor(proxyDescriptor); } return injectee; }