OWB injects a new object for @disposes injection point for dependent scope
---------------------------------------------------------------------------
Key: OWB-244
URL: https://issues.apache.org/jira/browse/OWB-244
Project: OpenWebBeans
Issue Type: Bug
Components: Context and Scopes
Affects Versions: 1.0.0
Environment: windows
Reporter: YING WANG
Assignee: Gurkan Erdogdu
Fix For: 1.0.0
1. I am testing @disposes for dependent scope for the following bean. However,
the object passed in my dispose method is not the one
I first created by the producer method. It seems that OWB inject another new
one for my "@Disposes @QualifierHttp HttpHeader header" before invoking my
dispose method.
My producer method is invoked twice. The first one is valid. I have collect the
stack trace for the second one. I don't know how to fix this..
2. Possibly another small one for ClassUtil.checkParametrizedType(), shouldn't
the method go though the rest types if the first one is ParameterizedType?
BTW, thanks a lot for fixing 241, it does work.
Ying
===========Stack trace for the second invocation of producer
method=================================
Thread-119 creates
com.ibm.jcdi.test.disposes.httphea...@27422742(unknown=unknown,myIndex=1) with
the following stack trace:
com.ibm.jcdi.test.disposes.HttpHeaderProducer.generateDependentScopeHttpHeader(HttpHeaderProducer.java:29)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
java.lang.reflect.Method.invoke(Method.java:600)
org.apache.webbeans.inject.InjectableMethods.doInjection(InjectableMethods.java:80)
org.apache.webbeans.component.ProducerMethodBean.createDefaultInstance(ProducerMethodBean.java:168)
org.apache.webbeans.component.ProducerMethodBean.createInstance(ProducerMethodBean.java:137)
org.apache.webbeans.component.AbstractBean.create(AbstractBean.java:159)
org.apache.webbeans.context.DependentContext.getInstance(DependentContext.java:65)
org.apache.webbeans.context.AbstractContext.get(AbstractContext.java:150)
org.apache.webbeans.container.BeanManagerImpl.getReference(BeanManagerImpl.java:709)
org.apache.webbeans.component.AbstractBean.getDependent(AbstractBean.java:419)
org.apache.webbeans.inject.AbstractInjectable.injectForDependent(AbstractInjectable.java:142)
org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.java:98)
<===== inject the parameters of my dispose method
org.apache.webbeans.inject.InjectableMethods.doInjection(InjectableMethods.java:67)
<===== try to invoke my dispose method
org.apache.webbeans.component.ProducerMethodBean.disposeDefault(ProducerMethodBean.java:227)
org.apache.webbeans.component.ProducerMethodBean.dispose(ProducerMethodBean.java:203)
org.apache.webbeans.component.ProducerMethodBean.destroyInstance(ProducerMethodBean.java:189)
org.apache.webbeans.component.AbstractBean.destroy(AbstractBean.java:201)
org.apache.webbeans.context.creational.CreationalContextImpl.removeDependents(CreationalContextImpl.java:159)
org.apache.webbeans.context.creational.CreationalContextImpl.release(CreationalContextImpl.java:171)
org.apache.webbeans.component.AbstractBean.destroy(AbstractBean.java:198)
org.apache.webbeans.context.AbstractContext.destroyInstance(AbstractContext.java:200)
org.apache.webbeans.context.AbstractContext.destroy(AbstractContext.java:222)
org.apache.webbeans.context.ContextFactory.destroyRequestContext(ContextFactory.java:137)
org.apache.webbeans.lifecycle.EnterpriseLifeCycle.requestEnded(EnterpriseLifeCycle.java:139)
org.apache.webbeans.servlet.WebBeansConfigurationListener.requestDestroyed(WebBeansConfigurationListener.java:68)
==========Test dependent Producer bean class for
@disposes========================================
@ApplicationScoped
public class HttpHeaderProducer implements Serializable {
static ILog myLog = null;
//dependent producer method
public static @Produces @QualifierHttp HttpHeader
generateDependentScopeHttpHeader(
@New HttpHeader header) throws Exception {
}
//disposer method
public static void dumpHttpHeader(
@Disposes @QualifierHttp HttpHeader header,
@QualifierDisposesTest(getID="3.3.x", getComments="Test
cases around @disposes.") ILog log) {
}
}
===============================================================================
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.