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 2013/02/22 14:41:37 UTC

svn commit: r1449037 - /tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java

Author: rmannibucau
Date: Fri Feb 22 13:41:37 2013
New Revision: 1449037

URL: http://svn.apache.org/r1449037
Log:
trying to enrich test classes in a bit more clever way (we can now enrich classes which are not test classes :)

Modified:
    tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java

Modified: tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java?rev=1449037&r1=1449036&r2=1449037&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java Fri Feb 22 13:41:37 2013
@@ -28,6 +28,7 @@ import org.apache.openejb.loader.SystemI
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
+import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.inject.AbstractInjectable;
 import org.apache.webbeans.inject.OWBInjector;
@@ -42,18 +43,14 @@ public final class OpenEJBEnricher {
     }
 
     public static void enrich(final Object testInstance, final AppContext ctx) {
-        if (ctx == null) { // deployment exception
-            return;
-        }
-
         // 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()) {
+        final BeanManagerImpl bm = findBeanManager(ctx);
+        if (bm != null && bm.isInUse()) {
             try {
                 final Set<Bean<?>> beans = bm.getBeans(testInstance.getClass());
                 final Bean<?> bean = bm.resolve(beans);
@@ -92,4 +89,19 @@ public final class OpenEJBEnricher {
             }
         }
     }
+
+    private static BeanManagerImpl findBeanManager(final AppContext ctx) {
+        if (ctx != null) {
+            return ctx.getWebBeansContext().getBeanManagerImpl();
+        }
+
+        try { // else try to find it from tccl through our SingletonService
+            return WebBeansContext.currentInstance().getBeanManagerImpl();
+        } catch (final Exception e) { // if not found IllegalStateException or a NPE can be thrown
+            // no-op
+        }
+
+        return null;
+    }
+
 }