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