use of javax.enterprise.inject.spi.InjectionTarget 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());
}
use of javax.enterprise.inject.spi.InjectionTarget in project cucumber-jvm by cucumber.
the class Cdi2Factory method addBean.
@SuppressWarnings({ "unchecked", "rawtypes" })
private void addBean(AfterBeanDiscovery afterBeanDiscovery, BeanManager beanManager, Class<?> clazz) {
AnnotatedType clazzAnnotatedType = beanManager.createAnnotatedType(clazz);
// @formatter:off
InjectionTarget injectionTarget = beanManager.getInjectionTargetFactory(clazzAnnotatedType).createInjectionTarget(null);
// @formatter:on
// @formatter:off
afterBeanDiscovery.addBean().read(clazzAnnotatedType).createWith(callback -> {
CreationalContext c = (CreationalContext) callback;
Object instance = injectionTarget.produce(c);
injectionTarget.inject(instance, c);
injectionTarget.postConstruct(instance);
return instance;
});
// @formatter:on
}
Aggregations