Author: rmannibucau
Date: Wed Sep 24 05:46:48 2014
New Revision: 1627227

URL: http://svn.apache.org/r1627227
Log:
TOMEE-1359 using app scope for enrichment

Modified:
    
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java

Modified: 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java
URL: 
http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java?rev=1627227&r1=1627226&r2=1627227&view=diff
==============================================================================
--- 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java
 (original)
+++ 
tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java
 Wed Sep 24 05:46:48 2014
@@ -28,9 +28,6 @@ import org.jboss.arquillian.test.spi.Tes
 import org.jboss.arquillian.test.spi.TestEnricher;
 
 import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -45,102 +42,35 @@ public class TomEEInjectionEnricher impl
         if (!SystemInstance.isInitialized()) {
             return;
         }
-        OpenEJBEnricher.enrich(o, getAppContext(o.getClass().getName()));
+        OpenEJBEnricher.enrich(o, getAppContext(o));
     }
 
-    private AppContext getAppContext(final String className) {
-        final ContainerSystem containerSystem = 
SystemInstance.get().getComponent(ContainerSystem.class);
+    private AppContext getAppContext(final Object instance) {
+        final String className = instance.getClass().getName();
+        final ContainerSystem containerSystem =
+SystemInstance.get().getComponent(ContainerSystem.class);
         final List<AppContext> appContexts = containerSystem.getAppContexts();
-
-        final int size = appContexts.size();
-        if (size == 1) {
-            return appContexts.get(0);
-        }
-
-        final List<AppContext> found = new ArrayList<AppContext>(size);
+        final ClassLoader loader = instance.getClass().getClassLoader();
 
         for (final AppContext app : appContexts) {
             final BeanContext context = 
containerSystem.getBeanContext(app.getId() + "_" + className);
             if (context != null) {
-                found.add(app);
-            }
-        }
-
-        if (found.size() > 0) {
-
-            Collections.sort(found, new Comparator<AppContext>() {
-
-                /**
-                 * If multiple apps are found that contain the test class then 
a best guess effort needs to be made
-                 * to find the context that best matches the test class 
application.
-                 *
-                 * @param ac1 AppContext
-                 * @param ac2 AppContext
-                 * @return int
-                 */
-                @Override
-                public int compare(final AppContext ac1, final AppContext ac2) 
{
-                    int c = 0;
-
-                    if (isBeanManagerInUse(ac1) && !isBeanManagerInUse(ac2)) {
-                        c--;
-                    } else if (!isBeanManagerInUse(ac1) && 
isBeanManagerInUse(ac2)) {
-                        c++;
-                    }
-
-                    if (ac1.isCdiEnabled() && !ac2.isCdiEnabled()) {
-                        c--;
-                    } else if (!ac1.isCdiEnabled() && ac2.isCdiEnabled()) {
-                        c++;
-                    }
-
-                    int size1 = ac1.getBeanContexts().size();
-                    int size2 = ac2.getBeanContexts().size();
-                    if (size1 > size2) {
-                        c--;
-                    } else if (size2 > size1) {
-                        c++;
-                    }
-
-                    size1 = ac1.getBindings().size();
-                    size2 = ac2.getBindings().size();
-                    if (size1 > size2) {
-                        c--;
-                    } else if (size2 > size1) {
-                        c++;
-                    }
-
-                    size1 = ac1.getWebContexts().size();
-                    size2 = ac2.getWebContexts().size();
-                    if (size1 > size2) {
-                        c--;
-                    } else if (size2 > size1) {
-                        c++;
-                    }
-
-                    return c;
-                }
-
-                private boolean isBeanManagerInUse(final AppContext ac) {
-                    try {
-                        return 
ac.getWebBeansContext().getBeanManagerImpl().isInUse();
-                    } catch (final Exception e) {
-                        return false;
-                    }
+                if (context.getBeanClass().getClassLoader() == loader) {
+                    return app;
                 }
-            });
-
-            //Return the most likely candidate
-            return found.get(0);
+            }
         }
 
-        
Logger.getLogger(TomEEInjectionEnricher.class.getName()).log(Level.WARNING, 
"Failed to find AppContext for: " + className);
+        
Logger.getLogger(TomEEInjectionEnricher.class.getName()).log(Level.WARNING, 
"Failed to find
+AppContext for: " + className);
 
         return null;
     }
 
     @Override
     public Object[] resolve(final Method method) {
-        return 
OpenEJBEnricher.resolve(getAppContext(method.getDeclaringClass().getName()), 
testClass.get(), method);
+        return 
OpenEJBEnricher.resolve(getAppContext(method.getDeclaringClass().getName()),
+testClass.get(), method);
     }
 }
+


Reply via email to