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);
+ }
}
}