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 2014/12/19 19:02:30 UTC

[2/3] tomee git commit: validating passivation-capable for stateful

validating passivation-capable for stateful


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/8adfb17b
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/8adfb17b
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/8adfb17b

Branch: refs/heads/develop
Commit: 8adfb17b9d6c47e113b0e0589191e9b794053e51
Parents: 9451f5e
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Dec 19 17:19:05 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Dec 19 17:19:05 2014 +0100

----------------------------------------------------------------------
 .../java/org/apache/openejb/cdi/CdiEjbBean.java | 21 ++++++++++++++++----
 tck/cdi-embedded/pom.xml                        |  8 +++-----
 tck/cdi-embedded/src/test/resources/failing.xml |  2 +-
 3 files changed, 21 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/8adfb17b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
index 001de33..346ca8f 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiEjbBean.java
@@ -43,6 +43,7 @@ import javax.enterprise.inject.Typed;
 import javax.enterprise.inject.spi.AnnotatedMethod;
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.DefinitionException;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.InjectionTarget;
 import javax.enterprise.inject.spi.SessionBeanType;
@@ -67,7 +68,7 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
 
     private final BeanContext beanContext;
     private final boolean isDependentAndStateful;
-    private final boolean scopeNeedsPassivation;
+    private final boolean passivable;
 
     // initialized a bit later in the lifecycle but could be final otherwise
     private BeanContext.BusinessLocalBeanHome homeLocalBean;
@@ -84,8 +85,20 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
         this.beanContext = beanContext;
         beanContext.set(Bean.class, this);
         passivatingId = beanContext.getDeploymentID() + getReturnType().getName();
-        isDependentAndStateful = getScope().equals(Dependent.class) && BeanType.STATEFUL.equals(beanContext.getComponentType());
-        scopeNeedsPassivation = webBeansContext.getBeanManagerImpl().isPassivatingScope(getScope()) && BeanType.STATEFUL.equals(beanContext.getComponentType());
+
+        final boolean stateful = BeanType.STATEFUL.equals(beanContext.getComponentType());
+        isDependentAndStateful = getScope().equals(Dependent.class) && stateful;
+        if (webBeansContext.getBeanManagerImpl().isPassivatingScope(getScope()) && stateful) {
+            if (!getBeanContext().isPassivable()) {
+                throw new DefinitionException(
+                        getBeanContext().getBeanClass()
+                                + " is a not apssivation-capable @Stateful with a scope "
+                                + getScope().getSimpleName() + " which need passivation");
+            }
+            passivable = true;
+        } else {
+            passivable = false;
+        }
     }
 
     @Override
@@ -95,7 +108,7 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
 
     @Override
     public boolean isPassivationCapable() {
-        return getBeanContext().isPassivable() && scopeNeedsPassivation /* for TCKs mainly */;
+        return passivable;
     }
 
     public BeanContext getBeanContext() {

http://git-wip-us.apache.org/repos/asf/tomee/blob/8adfb17b/tck/cdi-embedded/pom.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/pom.xml b/tck/cdi-embedded/pom.xml
index 1f444bf..56acf38 100644
--- a/tck/cdi-embedded/pom.xml
+++ b/tck/cdi-embedded/pom.xml
@@ -151,14 +151,12 @@
             <ejbd.disabled>true</ejbd.disabled>
             <ejbds.disabled>true</ejbds.disabled>
 
-            <!-- this is a nice perf optimization to have by default but TCKs play with it -->
             <openejb.cdi.applicationScope.cached>false</openejb.cdi.applicationScope.cached>
-            <!-- not supported by the spec -->
             <openejb.cdi.producer.interception>false</openejb.cdi.producer.interception>
-            <!-- for ear we need WebAppDeployer -->
-            <org.apache.openejb.assembler.classic.WebAppBuilder>org.apache.openejb.web.LightweightWebAppBuilder</org.apache.openejb.assembler.classic.WebAppBuilder>
-            <!-- archives are well formed and all classes are in app loader -->
             <openejb.cdi.filter.classloader>false</openejb.cdi.filter.classloader>
+
+            <openejb.deploymentId.format>{appId}/{ejbJarId}/{ejbName}</openejb.deploymentId.format>
+            <org.apache.openejb.assembler.classic.WebAppBuilder>org.apache.openejb.web.LightweightWebAppBuilder</org.apache.openejb.assembler.classic.WebAppBuilder>
           </systemPropertyVariables>
         </configuration>
       </plugin>

http://git-wip-us.apache.org/repos/asf/tomee/blob/8adfb17b/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index 3f5a642..94dd15b 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -18,7 +18,7 @@
 <suite name="CDI TCK" verbose="0">
   <test name="CDI TCK">
     <classes>
-      <class name="org.jboss.cdi.tck.interceptors.tests.bindings.aroundConstruct.ejb.SessionBeanConstructorInterceptionTest" />
+      <class name="org.jboss.cdi.tck.tests.context.passivating.enterprise.invalid.StatefulSessionBeanXmlDescriptorTest" />
     </classes>
   </test>
 </suite>