@Override public void preDestroy() { if (!normalScoped) { creationalContext.release(); } } });
public T create(CreationalContext<T> creationalContext) { if (!(creationalContext instanceof CreationalContextImpl)) { creationalContext = webBeansContext.getCreationalContextFactory().wrappedCreationalContext(creationalContext, this); } CreationalContextImpl<T> creationalContextImpl = (CreationalContextImpl<T>)creationalContext; Bean<T> oldBean = creationalContextImpl.putBean(this); Contextual<T> oldContextual = creationalContextImpl.putContextual(this); // otherwise BeanMetaData is broken try { return super.create(creationalContext); } finally { creationalContextImpl.putBean(oldBean); creationalContextImpl.putContextual(oldContextual); } }
protected AbstractInjectable(Producer<?> owner, CreationalContextImpl<?> creationalContext) { this.owner = owner; this.creationalContext = creationalContext; this.transientCreationalContext = creationalContext.getWebBeansContext().getBeanManagerImpl().createCreationalContext(creationalContext.getContextual()); }
@Override public T create(CreationalContext<T> context) { CreationalContextImpl<T> contextImpl; if(!CreationalContextImpl.class.isInstance(context)) { contextImpl = webBeansContext.getCreationalContextFactory().wrappedCreationalContext(context, this); } else { contextImpl = CreationalContextImpl.class.cast(context); } T t; Bean<T> oldBean = contextImpl.putBean(this); try { t = bean.create(contextImpl); } finally { contextImpl.putBean(oldBean); } if (getScope().equals(Dependent.class)) { contextImpl.addDependent(this, t); } return t; }
protected T createEjb(final CreationalContext<T> creationalContext) { final CurrentCreationalContext currentCreationalContext = beanContext.get(CurrentCreationalContext.class); final CreationalContext existing = currentCreationalContext.get(); currentCreationalContext.set(creationalContext); try { final T instance; if (homeLocalBean != null) { instance = (T) homeLocalBean.create(); } else { instance = (T) home.create(); } if (isDependentAndStateful) { CreationalContextImpl.class.cast(creationalContext).addDependent(this, instance); } return instance; } finally { currentCreationalContext.set(existing); } }
list.add(creationalContext.getDelegate()); break; transientCreationalContext.release();
@Override public T produce(CreationalContext<T> creationalContext) { CreationalContextImpl<T> creationalContextImpl = (CreationalContextImpl<T>) creationalContext; Contextual<T> oldContextual = creationalContextImpl.getContextual(); Map<Interceptor<?>, Object> interceptorInstances = creationalContextImpl.getWebBeansContext() .getInterceptorResolutionService().createInterceptorInstances(interceptorInfo, creationalContextImpl); creationalContextImpl.putContextual(oldContextual); T instance = produce(interceptorInstances, creationalContextImpl); if (hasInterceptorInfo()) { instance = creationalContextImpl.getWebBeansContext().getInterceptorResolutionService() .createProxiedInstance(instance, creationalContextImpl, creationalContext, interceptorInfo, proxyClass, methodInterceptors, passivationId, interceptorInstances, this::isDelegateInjection, this::filterDecorators); creationalContextImpl.putContextual(oldContextual); } return instance; }
creationalContextImpl.putContextual(decorator); creationalContextImpl.putDelegate(delegate); Object decoratorInstance = decorator.create(creationalContext); instances.put(decorator, decoratorInstance);
for (int i = decorators.size(); i > 0; i--) { final Decorator<?> decorator = decorators.get(i - 1); CreationalContextImpl.class.cast(creationalContext).putDelegate(beanInstance); final Object decoratorInstance = decorator.create(CreationalContext.class.cast(creationalContext)); instances.put(decorator, decoratorInstance);
BeanManagerImpl beanManager = creationalContext.getWebBeansContext().getBeanManagerImpl(); && creationalContext.getBean() != null && beanManager.isPassivatingScope(creationalContext.getBean().getScope()))
protected WebBeansContext getWebBeansContext() { return creationalContext.getWebBeansContext(); }
public <T> Map<Interceptor<?>, Object> createInterceptorInstances(BeanInterceptorInfo interceptorInfo, CreationalContextImpl<T> creationalContextImpl) { Map<Interceptor<?>,Object> interceptorInstances = new HashMap<>(); if (interceptorInfo != null) { // apply interceptorInfo // create EJB-style interceptors for (Interceptor interceptorBean : interceptorInfo.getEjbInterceptors()) { creationalContextImpl.putContextual(interceptorBean); interceptorInstances.put(interceptorBean, interceptorBean.create(creationalContextImpl)); } // create CDI-style interceptors for (Interceptor interceptorBean : interceptorInfo.getCdiInterceptors()) { creationalContextImpl.putContextual(interceptorBean); interceptorInstances.put(interceptorBean, interceptorBean.create(creationalContextImpl)); } for (Interceptor interceptorBean : interceptorInfo.getConstructorCdiInterceptors()) { creationalContextImpl.putContextual(interceptorBean); interceptorInstances.put(interceptorBean, interceptorBean.create(creationalContextImpl)); } } return interceptorInstances; }
CreationalContextImpl creationalContext = bm.createCreationalContext(bean); if (bean != null) { Bean<?> oldBean = creationalContext.putBean(bean); try { if (AbstractOwbBean.class.isInstance(bean)) { creationalContext.addDependent(aob, instance); creationalContext.putBean(oldBean);
protected T createEjb(final CreationalContext<T> creationalContext) { final CurrentCreationalContext currentCreationalContext = beanContext.get(CurrentCreationalContext.class); final CreationalContext existing = currentCreationalContext.get(); currentCreationalContext.set(creationalContext); try { final T instance; if (homeLocalBean != null) { instance = (T) homeLocalBean.create(); } else if (home != null) { instance = (T) home.create(); } else if (remote != null) { instance = (T) remote.create(); } else { // shouldn't be called for an MDB throw new IllegalStateException("no interface to proxy for ejb " + beanContext.getEjbName() + ", is this is a MDB maybe you shouldn't use a scope?"); } if (isDependentAndStateful) { CreationalContextImpl.class.cast(creationalContext).addDependent(this, instance); } return instance; } finally { currentCreationalContext.set(existing); } }
for (int i = decorators.size(); i > 0; i--) { final Decorator<?> decorator = decorators.get(i - 1); CreationalContextImpl.class.cast(creationalContext).putDelegate(beanInstance); final Object decoratorInstance = decorator.create(CreationalContext.class.cast(creationalContext)); instances.put(decorator, decoratorInstance);
private boolean isAnotherApp(final CreationalContext<T> context) { return CreationalContextImpl.class.isInstance(context) && CreationalContextImpl.class.cast(context).getWebBeansContext() != wbc; }
public T createNewPojo(final CreationalContext<T> creationalContext) { final CreationalContextImpl<T> ccImpl = CreationalContextImpl.class.cast(creationalContext); // super.produce(cc) will not work since we need the unproxied instance - decorator case final Map<javax.enterprise.inject.spi.Interceptor<?>, Object> interceptorInstances = super.createInterceptorInstances(ccImpl); final InterceptorResolutionService.BeanInterceptorInfo interceptorInfo = super.getInterceptorInfo(); if (interceptorInfo != null) { final Map<Constructor<?>, InterceptorResolutionService.BusinessMethodInterceptorInfo> constructorInterceptorInfos = interceptorInfo.getConstructorInterceptorInfos(); if (!constructorInterceptorInfos.isEmpty()) { // were missed by OWB final javax.enterprise.inject.spi.Interceptor<?>[] ejbInterceptors = constructorInterceptorInfos.values().iterator().next().getEjbInterceptors(); if (null != ejbInterceptors) { for (final javax.enterprise.inject.spi.Interceptor interceptorBean : ejbInterceptors) { if (!interceptorInstances.containsKey(interceptorBean)) { ccImpl.putContextual(interceptorBean); interceptorInstances.put(interceptorBean, interceptorBean.create(ccImpl)); } } } } } final T produce = super.produce(interceptorInstances, ccImpl); if (produce == null) { // user didnt call ic.proceed() in @AroundConstruct return super.newInstance(ccImpl); } return (T) produce; }
private void cleanUp() { if (cc != null) { cc.release(); cc = null; } } }
final CreationalContextImpl creationalContext = bm.createCreationalContext(bean); if (bean != null) { final Bean<?> oldBean = creationalContext.putBean(bean); try { if (AbstractOwbBean.class.isInstance(bean)) { creationalContext.addDependent(aob, instance); creationalContext.putBean(oldBean);
((CreationalContextImpl<T>)creationalContext).addDependent(this, instance);