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

Reply via email to