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>