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());