public void processAnnotations(Object instance) throws IllegalAccessException, InvocationTargetException, NamingException { // not data-race safe, however doesn't matter, as the injection target created for class A is interchangable for another injection target created for class A // TODO Make this a concurrent cache when we switch to google collections Class<?> clazz = instance.getClass(); if (!injectionTargets.containsKey(clazz)) { injectionTargets.put(clazz, manager.createInjectionTarget(manager.createAnnotatedType(clazz))); } CreationalContext<Object> cc = manager.createCreationalContext(null); InjectionTarget<Object> it = (InjectionTarget<Object>) injectionTargets.get(clazz); it.inject(instance, cc); }
/** * Gets the underlying target and calls the post-construct method * * @param invocationContext The invocation context * @throws Exception */ @PostConstruct public void postConstruct(InvocationContext invocationContext) throws Exception { String ejbName = getEjbName(); EjbDescriptor<Object> descriptor = beanManager.getEjbDescriptor(ejbName); injectionTarget = beanManager.createInjectionTarget(descriptor); Bean<Object> bean = beanManager.getBean(descriptor); creationalContext = beanManager.createCreationalContext(bean); injectionTarget.inject(invocationContext.getTarget(), creationalContext); invocationContext.getContextData().put(CREATIONAL_CONTEXT, creationalContext); invocationContext.getContextData().put(EJB_DESCRIPTOR, descriptor); invocationContext.proceed(); }
/** * Gets the underlying target and calls the post-construct method * * @param invocationContext The invocation context * @throws Exception */ @PostConstruct public void postConstruct(InvocationContext invocationContext) throws Exception { String ejbName = getEjbName(); EjbDescriptor<Object> descriptor = beanManager.getEjbDescriptor(ejbName); InjectionTarget<Object> injectionTarget = beanManager.createInjectionTarget(descriptor); Bean<Object> bean = beanManager.getBean(descriptor); creationalContext = beanManager.createCreationalContext(bean); injectionTarget.inject(invocationContext.getTarget(), creationalContext); invocationContext.getContextData().put(CREATIONAL_CONTEXT, creationalContext); invocationContext.getContextData().put(EJB_DESCRIPTOR, descriptor); invocationContext.proceed(); }
public <T> T create(Class<T> clazz, Object[] objects) throws IllegalArgumentException, InvalidConstructionParamsException, BeanInstantiationException { WeldManager weldManager = getWeldManager(); EjbDescriptor<Object> ejbDescriptor = weldManager.getEjbDescriptor(enterpriseBeanMetaData.getEjbName()); if (ejbDescriptor.getBeanClass().equals(clazz)) { SessionBean<Object> bean = (SessionBean) weldManager.getBean(ejbDescriptor); InjectionTarget<Object> injectionTarget = weldManager.createInjectionTarget(ejbDescriptor); CreationalContext<Object> creationalContext = weldManager.createCreationalContext(bean); T instance = (T) injectionTarget.produce(creationalContext); return instance; } else { return super.create(clazz, objects); } }
InjectionTarget it = weldManager.createInjectionTarget(ejbDesc); if (null != jcdiCtx) { jcdiCtx.setInjectionTarget( it );