You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/10/05 18:11:32 UTC

svn commit: r1394622 - in /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb: BeanContext.java assembler/classic/Assembler.java cdi/CdiEjbBean.java core/BaseSessionContext.java core/ivm/EjbHomeProxyHandler.java

Author: rmannibucau
Date: Fri Oct  5 16:11:32 2012
New Revision: 1394622

URL: http://svn.apache.org/viewvc?rev=1394622&view=rev
Log:
TOMEE-445 OPENEJB-1908 first management of stateful + scope - work in progress

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java?rev=1394622&r1=1394621&r2=1394622&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/BeanContext.java Fri Oct  5 16:11:32 2012
@@ -1393,8 +1393,6 @@ public class BeanContext extends Deploym
                 final InjectionProcessor interceptorInjector = new InjectionProcessor(interceptorConstructor.create(creationalContext), this.getInjections(), org.apache.openejb.InjectionProcessor.unwrap(ctx));
                 try {
                     final Object interceptorInstance = interceptorInjector.createInstance();
-
-                    // TODO we likely don't want to create a new one each time -- investigate the destroy() method
                     try {
                         OWBInjector.inject(webBeansContext.getBeanManagerImpl(), interceptorInstance, creationalContext);
                     } catch (Throwable t) {

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1394622&r1=1394621&r2=1394622&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Fri Oct  5 16:11:32 2012
@@ -1912,11 +1912,14 @@ public class Assembler extends Assembler
 
     public void createTransactionManager(TransactionServiceInfo serviceInfo) throws OpenEJBException {
 
-        ObjectRecipe serviceRecipe = createRecipe(serviceInfo);
-
-        Object service = serviceRecipe.create();
-
-        logUnusedProperties(serviceRecipe, serviceInfo);
+        Object service = SystemInstance.get().getComponent(TransactionManager.class);
+        if (service == null) {
+            ObjectRecipe serviceRecipe = createRecipe(serviceInfo);
+            service = serviceRecipe.create();
+            logUnusedProperties(serviceRecipe, serviceInfo);
+        } else {
+            logger.info("Reusing provided TransactionManager " + service);
+        }
 
         Class interfce = serviceInterfaces.get(serviceInfo.service);
         checkImplementation(interfce, service.getClass(), serviceInfo.service, serviceInfo.id);

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java?rev=1394622&r1=1394621&r2=1394622&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java Fri Oct  5 16:11:32 2012
@@ -21,6 +21,7 @@ import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
 import javax.ejb.Remove;
+import javax.enterprise.context.spi.Context;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.Typed;
 import javax.enterprise.inject.spi.Bean;
@@ -29,6 +30,7 @@ import javax.enterprise.inject.spi.Sessi
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.BeanType;
 import org.apache.openejb.assembler.classic.ProxyInterfaceResolver;
+import org.apache.webbeans.component.AbstractOwbBean;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.ejb.common.component.BaseEjbBean;
 
@@ -79,7 +81,6 @@ public class CdiEjbBean<T> extends BaseE
     @Override
     @SuppressWarnings("unchecked")
     protected T getInstance(CreationalContext<T> creationalContext) {
-
         final List<Class> classes = beanContext.getBusinessLocalInterfaces();
         CurrentCreationalContext currentCreationalContext = beanContext.get(CurrentCreationalContext.class);
         CreationalContext existing = currentCreationalContext.get();
@@ -166,6 +167,9 @@ public class CdiEjbBean<T> extends BaseE
     @Override
     public List<Method> getRemoveMethods() {
         // Should we delegate to super and merge both?
+        if (beanContext.isLocalbean()) {
+            return findRemove(beanContext.getBeanClass(), beanContext.getBeanClass());
+        }
         return findRemove(beanContext.getBeanClass(), beanContext.getBusinessLocalInterface());
     }
 

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java?rev=1394622&r1=1394621&r2=1394622&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/BaseSessionContext.java Fri Oct  5 16:11:32 2012
@@ -133,7 +133,14 @@ public abstract class BaseSessionContext
             }
 
             if (InterfaceType.LOCALBEAN.equals(interfaceType)) {
-                return LocalBeanProxyFactory.newProxyInstance(di.getClassLoader(), handler, di.getBeanClass(), IntraVmProxy.class, Serializable.class);
+                final List<Class> interfaces = new ArrayList<Class>(3);
+                interfaces.add(Serializable.class);
+                interfaces.add(IntraVmProxy.class);
+                if (BeanType.STATEFUL.equals(type) || BeanType.MANAGED.equals(type)) {
+                    interfaces.add(BeanContext.Removable.class);
+                }
+
+                return LocalBeanProxyFactory.newProxyInstance(di.getClassLoader(), handler, di.getBeanClass(), interfaces.toArray(new Class<?>[interfaces.size()]));
             } else {
                 List<Class> interfaces = new ArrayList<Class>();
                 interfaces.addAll(di.getInterfaces(interfaceType));

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java?rev=1394622&r1=1394621&r2=1394622&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java Fri Oct  5 16:11:32 2012
@@ -136,7 +136,13 @@ public abstract class EjbHomeProxyHandle
             // TODO Is it correct for ManagedBean injection via managed bean class?
             if ((InterfaceType.LOCALBEAN.equals(objectInterfaceType) || getBeanContext().getComponentType().equals(BeanType.MANAGED))
                     && !getBeanContext().isDynamicallyImplemented()) {
-                return LocalBeanProxyFactory.newProxyInstance(handler.getBeanContext().getClassLoader(), handler, handler.getBeanContext().getBeanClass(), new Class[]{IntraVmProxy.class, Serializable.class});
+                final List<Class> interfaces = new ArrayList<Class>(3);
+                interfaces.add(Serializable.class);
+                interfaces.add(IntraVmProxy.class);
+                if (BeanType.STATEFUL.equals(type) || BeanType.MANAGED.equals(type)) {
+                    interfaces.add(BeanContext.Removable.class);
+                }
+                return LocalBeanProxyFactory.newProxyInstance(handler.getBeanContext().getClassLoader(), handler, handler.getBeanContext().getBeanClass(), interfaces.toArray(new Class<?>[interfaces.size()]));
             } else {
                 List<Class> proxyInterfaces = new ArrayList<Class>(handler.getInterfaces().size() + 1);
                 proxyInterfaces.addAll(handler.getInterfaces());