Repository: tomee Updated Branches: refs/heads/develop 13f94a951 -> 571474b22
ensuring a broken embedded classloader is not propagated to other tests + basic placeholders for properties for port of embedded tomee container Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/571474b2 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/571474b2 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/571474b2 Branch: refs/heads/develop Commit: 571474b227b18d888df62c80cdf28de8c47a5008 Parents: 13f94a9 Author: Romain Manni-Bucau <[email protected]> Authored: Sun Feb 22 22:54:26 2015 +0100 Committer: Romain Manni-Bucau <[email protected]> Committed: Sun Feb 22 22:54:26 2015 +0100 ---------------------------------------------------------------------- .../org/apache/openejb/junit/ApplicationRule.java | 3 +++ .../java/org/apache/tomee/embedded/Container.java | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/571474b2/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationRule.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationRule.java b/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationRule.java index 3f9acd8..eb16e2e 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationRule.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationRule.java @@ -39,12 +39,15 @@ public class ApplicationRule implements TestRule { return new Statement() { @Override public void evaluate() throws Throwable { + final Thread thread = Thread.currentThread(); + final ClassLoader old = thread.getContextClassLoader(); final ApplicationComposers composers = new ApplicationOnlyApplicationComposers(instance); composers.deployApp(instance); try { statement.evaluate(); } finally { composers.stopApplication(); + thread.setContextClassLoader(old); } } }; http://git-wip-us.apache.org/repos/asf/tomee/blob/571474b2/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java ---------------------------------------------------------------------- diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java index 0618b96..b00fb65 100644 --- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java +++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java @@ -29,6 +29,7 @@ import org.apache.catalina.session.StandardManager; import org.apache.catalina.startup.Catalina; import org.apache.catalina.startup.CatalinaProperties; import org.apache.catalina.startup.Tomcat; +import org.apache.commons.lang3.text.StrSubstitutor; import org.apache.coyote.http11.Http11Protocol; import org.apache.openejb.AppContext; import org.apache.openejb.BeanContext; @@ -344,7 +345,23 @@ public class Container implements AutoCloseable { } final Properties props = configuration.getProperties(); + if (props != null) { + StrSubstitutor substitutor = null; + for (final String s : props.stringPropertyNames()) { + final String v = props.getProperty(s); + if (v != null && v.contains("${")) { + if (substitutor == null) { + final Map<String, String> placeHolders = new HashMap<>(); + placeHolders.put("tomee.embedded.http", Integer.toString(configuration.getHttpPort())); + placeHolders.put("tomee.embedded.https", Integer.toString(configuration.getHttpsPort())); + placeHolders.put("tomee.embedded.stop", Integer.toString(configuration.getStopPort())); + substitutor = new StrSubstitutor(placeHolders); + } + props.put(s, substitutor.replace(v)); + } + } + // inherit from system props final Properties properties = new Properties(System.getProperties()); properties.putAll(configuration.getProperties()); @@ -819,6 +836,7 @@ public class Container implements AutoCloseable { container.await(); end.countDown(); } catch (final Exception e) { + end.countDown(); throw new IllegalStateException(e); } }
