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 2012/06/08 17:10:15 UTC

svn commit: r1348102 - /openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/TestObserver.java

Author: rmannibucau
Date: Fri Jun  8 15:10:15 2012
New Revision: 1348102

URL: http://svn.apache.org/viewvc?rev=1348102&view=rev
Log:
using the test bean context as wrapper for the test method execution even in arquillian embedded adapter

Modified:
    openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/TestObserver.java

Modified: openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/TestObserver.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/TestObserver.java?rev=1348102&r1=1348101&r2=1348102&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/TestObserver.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/TestObserver.java Fri Jun  8 15:10:15 2012
@@ -1,5 +1,9 @@
 package org.apache.openejb.arquillian.openejb;
 
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
 import org.jboss.arquillian.core.api.Instance;
 import org.jboss.arquillian.core.api.annotation.Inject;
 import org.jboss.arquillian.core.api.annotation.Observes;
@@ -13,12 +17,26 @@ public class TestObserver {
     private Instance<ClassLoader> classLoader;
 
     public void observe(@Observes EventContext<Test> event) {
-        final ClassLoader cl = Thread.currentThread().getContextClassLoader();
-        setTCCL(classLoader.get());
+        final BeanContext context = SystemInstance.get().getComponent(ContainerSystem.class)
+                                        .getBeanContext(event.getEvent().getTestClass().getJavaClass().getName());
+        ThreadContext oldCtx = null;
+        ClassLoader oldCl = null;
+
+        if (context != null) {
+            oldCtx = ThreadContext.enter(new ThreadContext(context, null));
+        } else {
+            oldCl = Thread.currentThread().getContextClassLoader();
+            setTCCL(classLoader.get());
+        }
+
         try {
             event.proceed();
         } finally {
-            setTCCL(cl);
+            if (context != null) {
+                ThreadContext.exit(oldCtx);
+            } else {
+                setTCCL(oldCl);
+            }
         }
     }