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/10/24 15:46:25 UTC
svn commit: r1401678 - in /openejb/trunk/openejb/arquillian:
arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/
arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/
Author: rmannibucau
Date: Wed Oct 24 13:46:25 2012
New Revision: 1401678
URL: http://svn.apache.org/viewvc?rev=1401678&view=rev
Log:
OPENEJB-1924 release of test class creational context
Modified:
openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
openejb/trunk/openejb/arquillian/arquillian-openejb-embedded-4/src/main/java/org/apache/openejb/arquillian/openejb/TestObserver.java
Modified: openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java?rev=1401678&r1=1401677&r2=1401678&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java Wed Oct 24 13:46:25 2012
@@ -26,8 +26,10 @@ import org.apache.openejb.core.ThreadCon
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.spi.ContainerSystem;
import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.inject.AbstractInjectable;
import org.apache.webbeans.inject.OWBInjector;
+import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import java.util.Set;
@@ -44,19 +46,29 @@ public final class OpenEJBEnricher {
// don't rely on arquillian since this enrichment should absolutely be done before the following ones
new MockitoEnricher().enrich(testInstance);
+ final BeanContext context = SystemInstance.get().getComponent(ContainerSystem.class)
+ .getBeanContext(testInstance.getClass().getName());
+
final BeanManagerImpl bm = ctx.getWebBeansContext().getBeanManagerImpl();
if (bm.isInUse()) {
try {
final Set<Bean<?>> beans = bm.getBeans(testInstance.getClass());
final Bean<?> bean = bm.resolve(beans);
- OWBInjector.inject(bm, testInstance, bm.createCreationalContext(bean));
+ final CreationalContext<?> cc = bm.createCreationalContext(bean);
+ if (context != null) {
+ context.set(CreationalContext.class, cc);
+ }
+ AbstractInjectable.instanceUnderInjection.set(testInstance);
+ try {
+ OWBInjector.inject(bm, testInstance, cc);
+ } finally {
+ AbstractInjectable.instanceUnderInjection.remove();
+ }
} catch (Throwable t) {
// ignored
}
}
- final BeanContext context = SystemInstance.get().getComponent(ContainerSystem.class)
- .getBeanContext(testInstance.getClass().getName());
if (context != null) {
ThreadContext callContext = new ThreadContext(context, null, Operation.INJECTION);
ThreadContext oldContext = ThreadContext.enter(callContext);
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=1401678&r1=1401677&r2=1401678&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 Wed Oct 24 13:46:25 2012
@@ -20,6 +20,7 @@ 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.container.spi.event.container.BeforeUnDeploy;
import org.jboss.arquillian.core.api.Instance;
import org.jboss.arquillian.core.api.annotation.Inject;
import org.jboss.arquillian.core.api.annotation.Observes;
@@ -27,6 +28,8 @@ import org.jboss.arquillian.core.spi.Eve
import org.jboss.arquillian.test.spi.TestClass;
import org.jboss.arquillian.test.spi.event.suite.ClassEvent;
+import javax.enterprise.context.spi.CreationalContext;
+
public class TestObserver {
@Inject
private Instance<ClassLoader> classLoader;
@@ -35,8 +38,7 @@ public class TestObserver {
private Instance<TestClass> testClass;
public void observes(@Observes final EventContext<ClassEvent> event) {
- final BeanContext context = SystemInstance.get().getComponent(ContainerSystem.class)
- .getBeanContext(testClass.get().getName());
+ final BeanContext context = beanContext();
ThreadContext oldCtx = null;
ClassLoader oldCl = null;
@@ -63,4 +65,23 @@ public class TestObserver {
private void setTCCL(final ClassLoader cl) {
Thread.currentThread().setContextClassLoader(cl);
}
+
+ public void release(@Observes final EventContext<BeforeUnDeploy> event) {
+ try {
+ event.proceed();
+ } finally {
+ final BeanContext bc = beanContext();
+ if (bc != null) { // can be null if deployment exception
+ final CreationalContext<?> cc = bc.get(CreationalContext.class);
+ if (cc != null) {
+ cc.release();
+ }
+ }
+ }
+ }
+
+ private BeanContext beanContext() {
+ return SystemInstance.get().getComponent(ContainerSystem.class)
+ .getBeanContext(testClass.get().getName());
+ }
}