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 16:15:41 UTC

tomee git commit: an EJB can't specialize a normal bean

Repository: tomee
Updated Branches:
  refs/heads/develop 877fd5059 -> 81c805fd3


an EJB can't specialize a normal bean


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

Branch: refs/heads/develop
Commit: 81c805fd3ffb3784e235bbce8d8178d4043c1fdd
Parents: 877fd50
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue Dec 23 16:15:35 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue Dec 23 16:15:35 2014 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/openejb/cdi/CdiPlugin.java         | 5 +++++
 tck/cdi-embedded/src/test/resources/failing.xml                 | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/81c805fd/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
index 34ba3c8..02c2642 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
@@ -54,6 +54,7 @@ import javax.enterprise.context.spi.Context;
 import javax.enterprise.context.spi.Contextual;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.Specializes;
 import javax.enterprise.inject.Vetoed;
 import javax.enterprise.inject.spi.AnnotatedField;
 import javax.enterprise.inject.spi.AnnotatedMethod;
@@ -277,6 +278,10 @@ public class CdiPlugin extends AbstractOwbPlugin implements OpenWebBeansJavaEEPl
     @Override
     public <T> Bean<T> defineSessionBean(final Class<T> clazz, final BeanAttributes<T> attributes, final AnnotatedType<T> annotatedType) {
         final BeanContext bc = findBeanContext(webBeansContext, clazz);
+        final Class<?> superClass = bc.getManagedClass().getSuperclass();
+        if (superClass != Object.class && !isSessionBean(superClass) && annotatedType.isAnnotationPresent(Specializes.class)) {
+            throw new DefinitionException("You can only specialize another EJB: " + clazz);
+        }
         final CdiEjbBean<T> bean = new OpenEJBBeanBuilder<T>(bc, webBeansContext, annotatedType, attributes).createBean(clazz, !annotatedType.isAnnotationPresent(Vetoed.class));
 
         bc.set(CdiEjbBean.class, bean);

http://git-wip-us.apache.org/repos/asf/tomee/blob/81c805fd/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 13e22fc..3152d56 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.simple.resource.broken.type.ws.ResourceDefinitionWithDifferentTypeTest" />
+      <class name="org.jboss.cdi.tck.tests.inheritance.specialization.enterprise.broken.extend.managedbean.DirectlyExtendsSimpleBeanTest" />
     </classes>
   </test>
 </suite>