Author: rmannibucau Date: Wed Sep 24 17:29:22 2014 New Revision: 1627369 URL: http://svn.apache.org/r1627369 Log: TOMEE-1359 complete backport of trunk fix in TomEEInjectionEnricher - sorry, not sure what happent
Modified: tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/MultipleDeploymentsTest.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=1627369&r1=1627368&r2=1627369&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 17:29:22 2014 @@ -22,6 +22,7 @@ import org.apache.openejb.BeanContext; import org.apache.openejb.arquillian.common.enrichment.OpenEJBEnricher; import org.apache.openejb.loader.SystemInstance; import org.apache.openejb.spi.ContainerSystem; +import org.jboss.arquillian.container.spi.client.deployment.Deployment; import org.jboss.arquillian.core.api.Instance; import org.jboss.arquillian.core.api.annotation.Inject; import org.jboss.arquillian.test.spi.TestClass; @@ -33,41 +34,50 @@ import java.util.logging.Level; import java.util.logging.Logger; public class TomEEInjectionEnricher implements TestEnricher { - @Inject private Instance<TestClass> testClass; + @Inject + private Instance<Deployment> deployment; + @Override public void enrich(final Object o) { if (!SystemInstance.isInitialized()) { return; } - OpenEJBEnricher.enrich(o, getAppContext(o)); + OpenEJBEnricher.enrich(o, getAppContext(o.getClass())); } - private AppContext getAppContext(final Object instance) { - final String className = instance.getClass().getName(); + private AppContext getAppContext(final Class<?> clazz) { + final String clazzName = clazz.getName(); final ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class); + if (deployment != null && deployment.get() != null) { + final BeanContext context = containerSystem.getBeanContext(deployment.get().getDescription().getName() + "_" + clazzName); + if (context != null) { + return context.getModuleContext().getAppContext(); + } + } + final List<AppContext> appContexts = containerSystem.getAppContexts(); - final ClassLoader loader = instance.getClass().getClassLoader(); + final ClassLoader loader = clazz.getClassLoader(); for (final AppContext app : appContexts) { - final BeanContext context = containerSystem.getBeanContext(app.getId() + "_" + className); + final BeanContext context = containerSystem.getBeanContext(app.getId() + "_" + clazzName); if (context != null) { + // in embedded mode we have deployment so we dont go here were AppLoader would just be everywhere if (context.getBeanClass().getClassLoader() == loader) { return app; } } } - Logger.getLogger(TomEEInjectionEnricher.class.getName()).log(Level.SEVERE, "Failed to find AppContext for: " + className); + Logger.getLogger(TomEEInjectionEnricher.class.getName()).log(Level.WARNING, "Failed to find AppContext for: " + clazzName); 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()), testClass.get(), method); } } - Modified: tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/MultipleDeploymentsTest.java URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/MultipleDeploymentsTest.java?rev=1627369&r1=1627368&r2=1627369&view=diff ============================================================================== --- tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/MultipleDeploymentsTest.java (original) +++ tomee/tomee/branches/tomee-1.7.x/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/MultipleDeploymentsTest.java Wed Sep 24 17:29:22 2014 @@ -16,10 +16,6 @@ */ package org.apache.openejb.arquillian.embedded; -import org.apache.openejb.AppContext; -import org.apache.openejb.BeanContext; -import org.apache.openejb.loader.SystemInstance; -import org.apache.openejb.spi.ContainerSystem; import org.apache.tomee.catalina.environment.Hosts; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.OperateOnDeployment; @@ -32,7 +28,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import javax.inject.Inject; -import java.util.List; @RunWith(Arquillian.class) public class MultipleDeploymentsTest extends Assert { @@ -63,61 +58,17 @@ public class MultipleDeploymentsTest ext return ShrinkWrap.create(WebArchive.class, "yellow.war"); } - @Inject - private TestMe testMe; - @Test @OperateOnDeployment("orange") - public void testOrange() throws Exception { - - final String className = TestMe.class.getName(); - final ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class); - final List<AppContext> appContexts = containerSystem.getAppContexts(); - final ClassLoader loader = this.getClass().getClassLoader(); - - int size = appContexts.size(); - assertEquals("Unexpected app count", 4, size); - - AppContext found = null; - - for (final AppContext app : appContexts) { - final BeanContext context = containerSystem.getBeanContext(app.getId() + "_" + className); - if (context != null) { - if (context.getBeanClass().getClassLoader() == loader) { - System.out.println("Found '" + className + "' in app: " + app.getId()); - size--; - found = app; - } - } - } - - assertEquals("Found " + (4 - size) + " matching contexts", 3, size); - - assertNotNull(found); - assertEquals("Unexpected context: " + found.getId(), "orange", found.getId()); - + public void testOrange(final TestMe testMe) throws Exception { assertNotNull(testMe); assertEquals("Unexpected message", MSG, testMe.getMessage()); - - } @Test @OperateOnDeployment("green") - public void testGreen() throws Exception { - assertNull("Value should be null", testMe); - } - - @Test - @OperateOnDeployment("blue") - public void testBlue() throws Exception { - assertNull("Value should be null", testMe); - } - - @Test - @OperateOnDeployment("yellow") - public void testYellow() throws Exception { - assertNull("Value should be null", testMe); + public void testMap() throws Exception { + // no-op } public static class TestMe {