[ 
https://issues.apache.org/jira/browse/OWB-244?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12806623#action_12806623
 ] 

YING WANG commented on OWB-244:
-------------------------------

Sorry for the delay. I tested the recent r901845, the symptom is changed. my 
dependent @disposes method does not invoked at all. It seems the depdenent 
creation conext links get broken somewhere. I have uploaded a new test case for 
@disposes (see the attched source jar). 

Basically,  I have DepdenentBean producer bean which contains a disposer 
method. and it is injected into RequestModel. While my RequestBean is also a 
producer bean for request scope, which also contains a disposer method. The 
result shows only my RequestBean dispose method get invoked:

=========RESULT==============>

produced 
dependentmodel=org.apache.webbeans.newtests.disposes2.dependentmo...@53f653f6
produced 
requestmodel=org.apache.webbeans.newtests.disposes2.requestmo...@2f902f90
0
disposed 
requestmodel=org.apache.webbeans.newtests.disposes2.requestmo...@2f902f90

<========RESULT==============


> 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.

Reply via email to