use of javax.enterprise.inject.spi.InjectionTargetFactory in project HotswapAgent by HotswapProjects.
the class BeanClassRefreshAgent method createAnnotatedTypeForExistingBeanClass.
@SuppressWarnings({ "rawtypes", "unchecked" })
private static void createAnnotatedTypeForExistingBeanClass(BeanManagerImpl beanManager, Class<?> beanClass, InjectionTargetBean bean) {
WebBeansContext wbc = beanManager.getWebBeansContext();
AnnotatedElementFactory annotatedElementFactory = wbc.getAnnotatedElementFactory();
// Clear AnnotatedElementFactory caches
annotatedElementFactory.clear();
AnnotatedType annotatedType = annotatedElementFactory.newAnnotatedType(beanClass);
ReflectionHelper.set(bean, InjectionTargetBean.class, "annotatedType", annotatedType);
// Updated members that were set by bean attributes
BeanAttributesImpl attributes = BeanAttributesBuilder.forContext(wbc).newBeanAttibutes(annotatedType).build();
ReflectionHelper.set(bean, BeanAttributesImpl.class, "types", attributes.getTypes());
ReflectionHelper.set(bean, BeanAttributesImpl.class, "qualifiers", attributes.getQualifiers());
ReflectionHelper.set(bean, BeanAttributesImpl.class, "scope", attributes.getScope());
ReflectionHelper.set(bean, BeanAttributesImpl.class, "name", attributes.getName());
ReflectionHelper.set(bean, BeanAttributesImpl.class, "stereotypes", attributes.getStereotypes());
ReflectionHelper.set(bean, BeanAttributesImpl.class, "alternative", attributes.isAlternative());
InjectionTargetFactory factory = new InjectionTargetFactoryImpl(annotatedType, bean.getWebBeansContext());
InjectionTarget injectionTarget = factory.createInjectionTarget(bean);
ReflectionHelper.set(bean, InjectionTargetBean.class, "injectionTarget", injectionTarget);
LOGGER.debug("New annotated type created for bean '{}'", beanClass.getName());
}
Aggregations