Repository: tomee Updated Branches: refs/heads/master 06f4b74a9 -> c63f2ec30
fixing app composer container handling Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/c63f2ec3 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/c63f2ec3 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/c63f2ec3 Branch: refs/heads/master Commit: c63f2ec304a174ccefd88dda48bbe440c2036a5f Parents: 06f4b74 Author: Romain Manni-Bucau <rmann...@gmail.com> Authored: Wed Dec 2 18:37:28 2015 +0100 Committer: Romain Manni-Bucau <rmann...@gmail.com> Committed: Wed Dec 2 18:37:28 2015 +0100 ---------------------------------------------------------------------- .../openejb/testing/ApplicationComposers.java | 14 +++--- .../junit/ContainerAndApplicationRulesTest.java | 46 ++++++++++++++++++++ 2 files changed, 53 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/c63f2ec3/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java b/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java index d7c42f2..bc5fefd 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java @@ -385,6 +385,13 @@ public class ApplicationComposers { } public void deployApp(final Object inputTestInstance) throws Exception { + // test injections + ClassFinder testClassFinder = testClassFinders.remove(inputTestInstance); + if (testClassFinder == null) { + testClassFinders.put(inputTestInstance, testClassFinders.remove(this)); + testClassFinder = testClassFinders.remove(inputTestInstance); + } + final ClassLoader loader = testClass.getClassLoader(); AppModule appModule = new AppModule(loader, testClass.getSimpleName()); @@ -731,13 +738,6 @@ public class ApplicationComposers { System.getProperties().put(OPENEJB_APPLICATION_COMPOSER_CONTEXT, appContext.getGlobalJndiContext()); - // test injections - ClassFinder testClassFinder = testClassFinders.remove(inputTestInstance); - if (testClassFinder == null) { - testClassFinders.put(inputTestInstance, testClassFinders.remove(this)); - testClassFinder = testClassFinders.remove(inputTestInstance); - } - final List<Field> fields = new ArrayList<>(testClassFinder.findAnnotatedFields(AppResource.class)); fields.addAll(testClassFinder.findAnnotatedFields(org.apache.openejb.junit.AppResource.class)); for (final Field field : fields) { http://git-wip-us.apache.org/repos/asf/tomee/blob/c63f2ec3/container/openejb-core/src/test/java/org/apache/openejb/junit/ContainerAndApplicationRulesTest.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/test/java/org/apache/openejb/junit/ContainerAndApplicationRulesTest.java b/container/openejb-core/src/test/java/org/apache/openejb/junit/ContainerAndApplicationRulesTest.java new file mode 100644 index 0000000..1f0ce56 --- /dev/null +++ b/container/openejb-core/src/test/java/org/apache/openejb/junit/ContainerAndApplicationRulesTest.java @@ -0,0 +1,46 @@ +package org.apache.openejb.junit; + +import org.apache.openejb.api.configuration.PersistenceUnitDefinition; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.RuleChain; +import org.junit.rules.TestRule; + +import javax.inject.Inject; +import javax.inject.Provider; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +public class ContainerAndApplicationRulesTest { + private final ContainerRule instanceContainer = new ContainerRule(new Container()); + private final ApplicationRule instanceServer = new ApplicationRule(new App()); + + @Rule + public final TestRule rule = RuleChain.outerRule(instanceContainer).around(instanceServer); + + @Test + public void test() { + assertNotNull(instanceServer.getInstance(App.class).v); + assertNull(instanceContainer.getInstance(Container.class).ignored); + } + + @org.apache.openejb.testing.Classes(cdi = true, value = Ignored.class) // @Classes invalid for a container + public static class Container { + @Inject + private Provider<Ignored> ignored; + } + + @PersistenceUnitDefinition + @org.apache.openejb.testing.Classes(context = "App1", cdi = true, value = Valuable.class) + public static class App { + @Inject + private Valuable v; + } + + public static class Ignored { + } + + public static class Valuable { + } +}