You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2010/04/23 01:15:04 UTC

svn commit: r937099 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/AbstractOwbBean.java container/BeanManagerImpl.java inject/OWBInjector.java

Author: gerdogdu
Date: Thu Apr 22 23:15:03 2010
New Revision: 937099

URL: http://svn.apache.org/viewvc?rev=937099&view=rev
Log:
update while running tck

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937099&r1=937098&r2=937099&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java Thu Apr 22 23:15:03 2010
@@ -207,6 +207,8 @@ public abstract class AbstractOwbBean<T>
     {
         try
         {  
+            logger.debug("Destroying instance : " + this.toString());
+            
             InjectionTargetWrapper<T> wrapper = getManager().getInjectionTargetWrapper(this);
             if(wrapper != null)
             {

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=937099&r1=937098&r2=937099&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 Thu Apr 22 23:15:03 2010
@@ -830,6 +830,15 @@ public class BeanManagerImpl implements 
         //Create session bean proxy
         if(bean instanceof EnterpriseBeanMarker)
         {
+            if(WebBeansUtil.isScopeTypeNormal(bean.getScope()))
+            {
+                //Maybe it is cached
+                if(this.cacheProxies.containsKey(bean))
+                {
+                    return this.cacheProxies.get(bean);
+                }
+            }
+            
             OpenWebBeansEjbPlugin ejbPlugin = PluginLoader.getInstance().getEjbPlugin();
             if(ejbPlugin == null)
             {

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java?rev=937099&r1=937098&r2=937099&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java Thu Apr 22 23:15:03 2010
@@ -25,16 +25,20 @@ import java.util.Set;
 
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.InjectionTarget;
 import javax.inject.Inject;
 
+import org.apache.webbeans.component.InjectionPointBean;
 import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.container.InjectionResolver;
 import org.apache.webbeans.context.creational.CreationalContextImpl;
 import org.apache.webbeans.util.Asserts;
 import org.apache.webbeans.util.ClassUtil;
 import org.apache.webbeans.util.SecurityUtil;
+import org.apache.webbeans.util.WebBeansUtil;
 
 /**
  * Injects dependencies of the given Java EE component
@@ -87,16 +91,43 @@ public final class OWBInjector implement
                 
                 for(InjectionPoint injectionPoint : injectionPoints)
                 {
-                    Object object = beanManager.getInjectableReference(injectionPoint, ownerCreationalContext);                    
-                    if(injectionPoint.getMember() instanceof Method)
+                    boolean injectionPointBeanSet = false;
+                    try
                     {
-                        Method method = (Method)injectionPoint.getMember();
-                        ClassUtil.callInstanceMethod(method, javaEeComponentInstance, new Object[]{object});                        
-                    }
-                    else if(injectionPoint.getMember() instanceof Field)
+                        if(injectionPoint.getMember() instanceof Field)
+                        {
+                            //Injected contextual beam
+                            Bean<?> injectedBean = (Bean<?>)InjectionResolver.getInstance().getInjectionPointBean(injectionPoint);                
+                            
+                            if(WebBeansUtil.isDependent(injectedBean))
+                            {
+                                if(!InjectionPoint.class.isAssignableFrom(ClassUtil.getClass(injectionPoint.getType())))
+                                {
+                                    injectionPointBeanSet = true;
+                                    InjectionPointBean.local.set(injectionPoint);   
+                                }
+                            }
+                        }
+                        
+                        Object object = beanManager.getInjectableReference(injectionPoint, ownerCreationalContext);                    
+                        
+                        if(injectionPoint.getMember() instanceof Method)
+                        {
+                            Method method = (Method)injectionPoint.getMember();
+                            ClassUtil.callInstanceMethod(method, javaEeComponentInstance, new Object[]{object});
+                            
+                        }
+                        else if(injectionPoint.getMember() instanceof Field)
+                        {
+                            Field field = (Field)injectionPoint.getMember();
+                            ClassUtil.setField(javaEeComponentInstance, field, object);
+                        }                        
+                    }finally
                     {
-                        Field field = (Field)injectionPoint.getMember();
-                        ClassUtil.setField(javaEeComponentInstance, field, object);
+                        if(injectionPointBeanSet)
+                        {
+                            InjectionPointBean.local.remove();   
+                        }  
                     }
                 }