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