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 13:33:07 UTC
tomee git commit: @inject UserTransaction is not valid for container
managed beans
Repository: tomee
Updated Branches:
refs/heads/develop 27bdf6688 -> 1491a4b49
@inject UserTransaction is not valid for container managed beans
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/1491a4b4
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/1491a4b4
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/1491a4b4
Branch: refs/heads/develop
Commit: 1491a4b494424f7acd61e228e02dd6497a603a6d
Parents: 27bdf66
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue Dec 23 13:32:22 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue Dec 23 13:32:22 2014 +0100
----------------------------------------------------------------------
.../java/org/apache/openejb/cdi/CdiEjbBean.java | 19 +++++++++++++++++--
tck/cdi-embedded/src/test/resources/failing.xml | 2 +-
2 files changed, 18 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/1491a4b4/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 1b36017..b1379fe 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
@@ -22,6 +22,7 @@ import org.apache.openejb.BeanType;
import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.assembler.classic.ProxyInterfaceResolver;
import org.apache.openejb.core.ivm.BaseEjbProxyHandler;
+import org.apache.openejb.core.transaction.TransactionType;
import org.apache.openejb.util.proxy.LocalBeanProxyFactory;
import org.apache.openejb.util.proxy.ProxyManager;
import org.apache.webbeans.component.BeanAttributesImpl;
@@ -47,6 +48,7 @@ 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.transaction.UserTransaction;
import java.io.Serializable;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
@@ -77,7 +79,7 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
public CdiEjbBean(final BeanContext beanContext, final WebBeansContext webBeansContext, final AnnotatedType<T> at,
final BeanAttributes<T> attributes) {
- this(beanContext, webBeansContext, beanContext.getManagedClass(), at, new EjbInjectionTargetFactory<T>(at, webBeansContext), attributes);
+ this(beanContext, webBeansContext, beanContext.getManagedClass(), at, new EjbInjectionTargetFactory<T>(beanContext, at, webBeansContext), attributes);
EjbInjectionTargetImpl.class.cast(getInjectionTarget()).setCdiEjbBean(this);
}
@@ -356,14 +358,27 @@ public class CdiEjbBean<T> extends BaseEjbBean<T> implements InterceptedMarker,
}
public static class EjbInjectionTargetFactory<T> extends InjectionTargetFactoryImpl<T> {
- public EjbInjectionTargetFactory(final AnnotatedType<T> annotatedType, final WebBeansContext webBeansContext) {
+ private final BeanContext beanContext;
+
+ public EjbInjectionTargetFactory(final BeanContext bc, final AnnotatedType<T> annotatedType, final WebBeansContext webBeansContext) {
super(annotatedType, webBeansContext);
+ this.beanContext = bc;
}
@Override
public InjectionTarget<T> createInjectionTarget(final Bean<T> bean) {
final EjbInjectionTargetImpl<T> injectionTarget = new EjbInjectionTargetImpl<T>(getAnnotatedType(), createInjectionPoints(bean), getWebBeansContext());
final InjectionTarget<T> it = getWebBeansContext().getWebBeansUtil().fireProcessInjectionTargetEvent(injectionTarget, getAnnotatedType()).getInjectionTarget();
+
+ for (final InjectionPoint ip : it.getInjectionPoints()) {
+ if (ip.getType() != UserTransaction.class) {
+ continue;
+ }
+ if (beanContext.getTransactionType() != TransactionType.BeanManaged) {
+ throw new DefinitionException("@Inject UserTransaction is only valid for BeanManaged beans");
+ }
+ }
+
if (!EjbInjectionTargetImpl.class.isInstance(it)) {
return new EjbInjectionTargetImpl<T>(injectionTarget, it);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/1491a4b4/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 f242a87..0e22900 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.extensions.lifecycle.processBeanAttributes.specialization.VetoTest" />
+ <class name="org.jboss.cdi.tck.tests.implementation.builtin.broken.transaction.UserTransactionInvalidInjectionTest" />
</classes>
</test>
</suite>