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/23 14:31:48 UTC

tomee git commit: not @Dependent EJBs can't be Parameterized + EJB can't be interceptors/decorators

Repository: tomee
Updated Branches:
  refs/heads/develop 87b5d7698 -> 57a69fceb


not @Dependent EJBs can't be Parameterized + EJB can't be interceptors/decorators


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

Branch: refs/heads/develop
Commit: 57a69fcebec1c86421b61b959cb679c1c0cfbf7f
Parents: 87b5d76
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue Dec 23 14:31:41 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue Dec 23 14:31:41 2014 +0100

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


http://git-wip-us.apache.org/repos/asf/tomee/blob/57a69fce/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 b1379fe..fadd277 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
@@ -35,6 +35,7 @@ import org.apache.webbeans.ejb.common.component.BaseEjbBean;
 import org.apache.webbeans.intercept.InterceptorResolutionService;
 import org.apache.webbeans.portable.InjectionTargetImpl;
 
+import javax.decorator.Decorator;
 import javax.ejb.NoSuchEJBException;
 import javax.ejb.Remove;
 import javax.enterprise.context.Dependent;
@@ -48,10 +49,12 @@ import javax.enterprise.inject.spi.DefinitionException;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.inject.spi.InjectionTarget;
 import javax.enterprise.inject.spi.SessionBeanType;
+import javax.interceptor.Interceptor;
 import javax.transaction.UserTransaction;
 import java.io.Serializable;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.lang.reflect.UndeclaredThrowableException;
 import java.rmi.NoSuchObjectException;
@@ -92,7 +95,8 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
         passivatingId = beanContext.getDeploymentID() + getReturnType().getName();
 
         final boolean stateful = BeanType.STATEFUL.equals(beanContext.getComponentType());
-        isDependentAndStateful = getScope().equals(Dependent.class) && stateful;
+        final boolean isDependent = getScope().equals(Dependent.class);
+        isDependentAndStateful = isDependent && stateful;
         if (webBeansContext.getBeanManagerImpl().isPassivatingScope(getScope()) && stateful) {
             if (!getBeanContext().isPassivable()) {
                 throw new DefinitionException(
@@ -104,6 +108,16 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
         } else {
             passivable = false;
         }
+        if (!isDependent) {
+            for (final Type type : attributes.getTypes()) {
+                if (ParameterizedType.class.isInstance(type)) {
+                    throw new DefinitionException("Parameterized session bean should be @Dependent: " + beanClass);
+                }
+            }
+        }
+        if (getAnnotatedType().isAnnotationPresent(Interceptor.class) || getAnnotatedType().isAnnotationPresent(Decorator.class)) {
+            throw new DefinitionException("An EJB can't be an interceptor or a decorator: " + beanClass);
+        }
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/tomee/blob/57a69fce/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 0416d96..02ffdd8 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.tests.implementation.builtin.servlet.ServletContainerBuiltinBeanTest" />
+      <class name="org.jboss.cdi.tck.tests.implementation.enterprise.broken.statelessInterceptor.InterceptorAnnotatedStatelessSessionBeanTest" />
     </classes>
   </test>
 </suite>