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>