Hi Rohit, 

also thanks to you for fixing the underlying bug :)

For now I just applied the fix to trunk. Do you need it as well on any other 
branch?


Btw, if you do such intense changes, then it's always a good idea to run both 
TCKs

$> mvn clean install -Ptck -Pjsr330-tck

This will run both the CDI (standalone part) and the atinject TCK.

LieGrue,
strub



----- Original Message -----
> From: Rohit Kelapure <[email protected]>
> To: [email protected]
> Cc: [email protected]
> Sent: Friday, February 24, 2012 11:33 PM
> Subject: Re: svn commit: r1293457 - in 
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: 
> component/InjectionPointBean.java container/BeanManagerImpl.java
> 
>T hank you Mark and Romain for investigating and fixing!!
> - Rohit
> 
> On Fri, Feb 24, 2012 at 5:31 PM,  <[email protected]> wrote:
>>  Author: struberg
>>  Date: Fri Feb 24 22:31:49 2012
>>  New Revision: 1293457
>> 
>>  URL: http://svn.apache.org/viewvc?rev=1293457&view=rev
>>  Log:
>>  OWB-648 fix TCK
>> 
>>  txs to Romain Manni-Bucau for the patch!
>> 
>>  Modified:
>>    
>  openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
>>    
>  openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
>> 
>>  Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
>>  URL: 
> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=1293457&r1=1293456&r2=1293457&view=diff
>> 
> ==============================================================================
>>  --- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
>  
> (original)
>>  +++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java
>  
> Fri Feb 24 22:31:49 2012
>>  @@ -31,7 +31,6 @@ public class InjectionPointBean extends
>>   {
>>      private static final WebBeansLogger logger = 
> WebBeansLogger.getLogger(InjectionPointBean.class);
>> 
>>  -    //X TODO refactor. public static variables are utterly ugly
>>      private static ThreadLocal<Stack<InjectionPoint>> 
> localThreadlocalStack = new ThreadLocal<Stack<InjectionPoint>>();
>> 
>>      private static Stack<InjectionPoint> getStackOfInjectionPoints()
>>  @@ -80,6 +79,11 @@ public class InjectionPointBean extends
>>          addApiType(Object.class);
>>      }
>> 
>>  +    public static boolean isStackEmpty()
>>  +    {
>>  +        return getStackOfInjectionPoints().isEmpty();
>>  +    }
>>  +
>>      @Override
>>      protected InjectionPoint 
> createInstance(CreationalContext<InjectionPoint> creationalContext)
>>      {
>> 
>>  Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
>>  URL: 
> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=1293457&r1=1293456&r2=1293457&view=diff
>> 
> ==============================================================================
>>  --- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
>  
> (original)
>>  +++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
>  
> Fri Feb 24 22:31:49 2012
>>  @@ -62,6 +62,7 @@ import javax.naming.Referenceable;
>>   import javax.naming.StringRefAddr;
>>   import org.apache.webbeans.component.AbstractOwbBean;
>>   import org.apache.webbeans.component.EnterpriseBeanMarker;
>>  +import org.apache.webbeans.component.InjectionPointBean;
>>   import org.apache.webbeans.component.InjectionTargetBean;
>>   import org.apache.webbeans.component.InjectionTargetWrapper;
>>   import org.apache.webbeans.component.JmsBeanMarker;
>>  @@ -827,17 +828,34 @@ public class BeanManagerImpl implements
>>              InjectionResolver.injectionPoints.set(injectionPoint);
>>          }
>> 
>>  -        if(WebBeansUtil.isDependent(injectedBean))
>>  -        {
>>  -            //Using owner creational context
>>  -            //Dependents use parent creational context
>>  -            instance = getReference(injectedBean, 
> injectionPoint.getType(), ownerCreationalContext);
>>  +        boolean ijbSet = false;
>>  +        if (InjectionPointBean.isStackEmpty())
>>  +        {
>>  +            ijbSet = true;
>>  +            InjectionPointBean.setThreadLocal(injectionPoint);
>>          }
>>  -        else
>>  -        {
>>  -            //New creational context for normal scoped beans
>>  -            CreationalContextImpl<Object> injectedCreational = 
> (CreationalContextImpl<Object>)createCreationalContext(injectedBean);
>>  -            instance = getReference(injectedBean, 
> injectionPoint.getType(), injectedCreational);
>>  +
>>  +        try
>>  +        {
>>  +            if(WebBeansUtil.isDependent(injectedBean))
>>  +            {
>>  +                //Using owner creational context
>>  +                //Dependents use parent creational context
>>  +                instance = getReference(injectedBean, 
> injectionPoint.getType(), ownerCreationalContext);
>>  +            }
>>  +            else
>>  +            {
>>  +                //New creational context for normal scoped beans
>>  +                CreationalContextImpl<Object> injectedCreational = 
> (CreationalContextImpl<Object>)createCreationalContext(injectedBean);
>>  +                instance = getReference(injectedBean, 
> injectionPoint.getType(), injectedCreational);
>>  +            }
>>  +        }
>>  +        finally
>>  +        {
>>  +            if (ijbSet)
>>  +            {
>>  +                InjectionPointBean.unsetThreadLocal();
>>  +            }
>>          }
>> 
>>          if(isSetIPForProducers)
>> 
>> 
>

Reply via email to