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>