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 2012/11/27 13:37:59 UTC

svn commit: r1414153 - in /openwebbeans/branches/owb_1.1.x: webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/ webbeans-impl/src/main/java/org/apache/webbeans/proxy/ webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/

Author: gerdogdu
Date: Tue Nov 27 12:37:58 2012
New Revision: 1414153

URL: http://svn.apache.org/viewvc?rev=1414153&view=rev
Log:
Committing r1409751, r1409721 from trunk to maintained branch 1_1_x

Modified:
    openwebbeans/branches/owb_1.1.x/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/   (props changed)
    openwebbeans/branches/owb_1.1.x/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/EjbBeanProxyHandler.java
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/   (props changed)
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ProxyFactory.java
    openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/JavassistFactory.java

Propchange: openwebbeans/branches/owb_1.1.x/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Nov 27 12:37:58 2012
@@ -0,0 +1 @@
+/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy:1407086-1407263,1408825-1408835,1409721

Modified: openwebbeans/branches/owb_1.1.x/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/EjbBeanProxyHandler.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.1.x/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/EjbBeanProxyHandler.java?rev=1414153&r1=1414152&r2=1414153&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.1.x/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/EjbBeanProxyHandler.java (original)
+++ openwebbeans/branches/owb_1.1.x/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/proxy/EjbBeanProxyHandler.java Tue Nov 27 12:37:58 2012
@@ -58,21 +58,21 @@ import org.apache.webbeans.proxy.MethodH
 public class EjbBeanProxyHandler implements InvocationHandler, MethodHandler, Serializable, Externalizable
 {
     //Logger instance
-    private final static Logger logger = WebBeansLoggerFacade.getLogger(EjbBeanProxyHandler.class);
+    protected final static Logger logger = WebBeansLoggerFacade.getLogger(EjbBeanProxyHandler.class);
     
     /**Proxy ejb bean instance*/
-    private BaseEjbBean<?> ejbBean;
+    protected BaseEjbBean<?> ejbBean;
     
     /**Dependent ejb instance*/
-    private Object dependentEJB;
+    protected Object dependentEJB;
     
     /**Scope is dependent*/
-    private boolean isDependent = false;
+    protected boolean isDependent = false;
     
     /**Creational Context*/
-    private CreationalContext<?> creationalContext;
+    protected CreationalContext<?> creationalContext;
 
-    private WebBeansContext webBeansContext;
+    protected WebBeansContext webBeansContext;
 
     //DO NOT REMOVE, used by PASSIVATION.
     public EjbBeanProxyHandler() 
@@ -86,8 +86,9 @@ public class EjbBeanProxyHandler impleme
     public EjbBeanProxyHandler(BaseEjbBean<?> ejbBean, CreationalContext<?> creationalContext)
     {
         this.ejbBean = ejbBean;
-
-        if(ejbBean.getWebBeansContext().getWebBeansUtil().isScopeTypeNormal(ejbBean.getScope()))
+        this.webBeansContext = ejbBean.getWebBeansContext();
+        
+        if(this.webBeansContext.getWebBeansUtil().isScopeTypeNormal(ejbBean.getScope()))
         {
             initiateBeanBag((OwbBean<Object>)ejbBean, (CreationalContext<Object>)creationalContext);
         }
@@ -101,7 +102,6 @@ public class EjbBeanProxyHandler impleme
             isDependent = true;
             dependentEJB = null;
         }
-        webBeansContext = ejbBean.getWebBeansContext();
     }
     
     public Object invoke(Object instance, Method method, Method proceed, Object[] arguments) throws Throwable

Propchange: openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Nov 27 12:37:58 2012
@@ -0,0 +1 @@
+/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy:1407086-1407263,1408825-1408835,1409751

Modified: openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ProxyFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ProxyFactory.java?rev=1414153&r1=1414152&r2=1414153&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ProxyFactory.java (original)
+++ openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/ProxyFactory.java Tue Nov 27 12:37:58 2012
@@ -22,6 +22,7 @@ import java.io.Serializable;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Type;
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -106,12 +107,60 @@ public final class ProxyFactory
      */
     public Class<?> getEjbBeanProxyClass(OwbBean<?> bean, Class<?> iface)
     {
+        Class<?> proxyClass = null;
+
         ConcurrentMap<Class<?>, Class<?>> typeToProxyClassMap = ejbProxyClasses.get(bean);
-        if (typeToProxyClassMap != null)
+        if (typeToProxyClassMap == null)
         {
-            return typeToProxyClassMap.get(iface);
+            typeToProxyClassMap = new ConcurrentHashMap<Class<?>, Class<?>>();
+            ConcurrentMap<Class<?>, Class<?>> existingMap = ejbProxyClasses.putIfAbsent(bean, typeToProxyClassMap);
+            
+            // use the map that beat us, because our new one definitely had no classes in it.
+            typeToProxyClassMap = (existingMap != null) ? existingMap : typeToProxyClassMap; 
         }
-        return null;
+
+        proxyClass = typeToProxyClassMap.get(iface);
+
+        if (proxyClass == null)
+        {
+            Class<?> superClazz = null;
+            List<Class<?>> list = new ArrayList<Class<?>>();
+            Class<?>[] interfaces = null;
+            
+            if (iface.isInterface())
+            {
+                list.add(iface);
+            }
+            else 
+            {
+                // @LocalBean no-interface local view requested
+                superClazz = iface;
+                //Stateless beans with no interface
+                //To failover bean instance
+                Class<?>[] ifaces = iface.getInterfaces();
+                if(ifaces != null && ifaces.length > 0)
+                {
+                    //check for serializable
+                    for(Class<?> temp : ifaces)
+                    {
+                        if(temp == Serializable.class)
+                        {
+                            list.add(Serializable.class);
+                            break;
+                        }
+                    }
+                }
+            }            
+            
+            interfaces = new Class<?>[list.size()];
+            interfaces = list.toArray(interfaces);
+            proxyClass = factory.getProxyClass(superClazz, interfaces);
+            
+            typeToProxyClassMap.putIfAbsent(iface, proxyClass);
+            // don't care if we were beaten in updating the iface->proxyclass map
+        }
+
+        return proxyClass;
     }
     
     public Object createDecoratorDelegate(OwbBean<?> bean, DelegateHandler newDelegateHandler)

Modified: openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/JavassistFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/JavassistFactory.java?rev=1414153&r1=1414152&r2=1414153&view=diff
==============================================================================
--- openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/JavassistFactory.java (original)
+++ openwebbeans/branches/owb_1.1.x/webbeans-impl/src/main/java/org/apache/webbeans/proxy/javassist/JavassistFactory.java Tue Nov 27 12:37:58 2012
@@ -38,7 +38,10 @@ public class JavassistFactory
     {
         ProxyFactory fact = new ProxyFactory();
         fact.setInterfaces(interfaces);
-        fact.setSuperclass(superClass);
+        if(superClass != null)
+        {
+            fact.setSuperclass(superClass);   
+        }
         fact.setFilter(FinalizeMethodFilter.INSTANCE);
 
         return getProxyClass(fact);