Author: rmannibucau
Date: Sun Jun 17 16:25:36 2012
New Revision: 1351122

URL: http://svn.apache.org/viewvc?rev=1351122&view=rev
Log:
TOMEE-235 ability to provide a server.xml in embedded tomee and arquillian 
adapters

Modified:
    
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
    
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEConfiguration.java
    
openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
    
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
    
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
    
openejb/trunk/openejb/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
    
openejb/trunk/openejb/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java

Modified: 
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java?rev=1351122&r1=1351121&r2=1351122&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
 (original)
+++ 
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/Setup.java
 Sun Jun 17 16:25:36 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.arquillian.common;
 
+import java.lang.reflect.Method;
 import org.apache.openejb.loader.ProvisioningUtil;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.JarExtractor;
@@ -207,4 +208,31 @@ public class Setup {
             }
         }
     }
+
+    public static void configureServerXml(final File openejbHome, final 
TomEEConfiguration configuration) throws IOException {
+        if (configuration.getServerXml() != null) {
+            final File sXml = new File(configuration.getServerXml());
+            if (!sXml.exists()) {
+                LOGGER.severe("provided server.xml doesn't exist: '" + 
sXml.getPath() + "'");
+            } else {
+                final FileOutputStream fos = new FileOutputStream(new 
File(openejbHome, "conf/server.xml"));
+                try {
+                    IO.copy(sXml, fos);
+                } finally {
+                    IO.close(fos);
+                }
+                return; // in this case we don't want to override the conf
+            }
+        }
+        Setup.updateServerXml(openejbHome, configuration.getHttpPort(), 
configuration.getStopPort(), ajpPort(configuration));
+    }
+
+    private static int ajpPort(final TomEEConfiguration config) {
+        try {
+            final Method ajbPort = config.getClass().getMethod("getAjpPort");
+            return (Integer) ajbPort.invoke(config);
+        } catch (Exception e) {
+            return DEFAULT_AJP_PORT;
+        }
+    }
 }

Modified: 
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEConfiguration.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEConfiguration.java?rev=1351122&r1=1351121&r2=1351122&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEConfiguration.java
 (original)
+++ 
openejb/trunk/openejb/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEConfiguration.java
 Sun Jun 17 16:25:36 2012
@@ -34,6 +34,7 @@ public class TomEEConfiguration implemen
     private String dir = System.getProperty("java.io.tmpdir") + 
"/arquillian-apache-tomee";
     private String appWorkingDir = System.getProperty("java.io.tmpdir");
     private String host = "localhost";
+    private String serverXml = null;
 
     public int getHttpPort() {
         return httpPort;
@@ -85,4 +86,12 @@ public class TomEEConfiguration implemen
     public void setHost(String host) {
         this.host = host;
     }
+
+    public String getServerXml() {
+        return serverXml;
+    }
+
+    public void setServerXml(String serverXml) {
+        this.serverXml = serverXml;
+    }
 }

Modified: 
openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java?rev=1351122&r1=1351121&r2=1351122&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
 (original)
+++ 
openejb/trunk/openejb/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
 Sun Jun 17 16:25:36 2012
@@ -75,6 +75,7 @@ public class EmbeddedTomEEContainer exte
        configuration.setHttpPort(tomeeConfiguration.getHttpPort());
        configuration.setStopPort(tomeeConfiguration.getStopPort());
         configuration.setHost(tomeeConfiguration.getHost());
+        configuration.setServerXml(tomeeConfiguration.getServerXml());
                return configuration;
        }
 

Modified: 
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java?rev=1351122&r1=1351121&r2=1351122&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
 (original)
+++ 
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
 Sun Jun 17 16:25:36 2012
@@ -16,7 +16,9 @@
  */
 package org.apache.tomee.arquillian.remote;
 
+import java.io.FileOutputStream;
 import org.apache.openejb.arquillian.common.Files;
+import org.apache.openejb.arquillian.common.IO;
 import org.apache.openejb.arquillian.common.Setup;
 import org.apache.openejb.arquillian.common.TomEEContainer;
 import org.apache.openejb.config.RemoteServer;
@@ -91,7 +93,7 @@ public class RemoteTomEEContainer extend
         Files.readable(openejbHome);
         Files.writable(openejbHome);
 
-        Setup.updateServerXml(openejbHome, configuration.getHttpPort(), 
configuration.getStopPort(), configuration.getAjpPort());
+        Setup.configureServerXml(openejbHome, configuration);
 
         Setup.exportProperties(openejbHome, configuration);
 
@@ -100,7 +102,7 @@ public class RemoteTomEEContainer extend
         }
 
         if (logger.isLoggable(Level.FINE)) {
-            Map<Object, Object> map = new TreeMap(System.getProperties());
+            final Map<Object, Object> map = new TreeMap<Object, 
Object>(System.getProperties());
             for (Map.Entry<Object, Object> entry : map.entrySet()) {
                 logger.log(Level.FINE, String.format("%s = %s\n", 
entry.getKey(), entry.getValue()));
             }

Modified: 
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java?rev=1351122&r1=1351121&r2=1351122&view=diff
==============================================================================
--- 
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
 (original)
+++ 
openejb/trunk/openejb/arquillian/arquillian-tomee-webapp-remote/src/main/java/org/apache/tomee/arquillian/webapp/TomEEWebappContainer.java
 Sun Jun 17 16:25:36 2012
@@ -101,7 +101,8 @@ public class TomEEWebappContainer extend
             Files.readable(openejbHome);
             Files.writable(openejbHome);
 
-            Setup.updateServerXml(openejbHome, configuration.getHttpPort(), 
configuration.getStopPort(), 0);
+            Setup.configureServerXml(openejbHome, configuration);
+
             Setup.exportProperties(openejbHome, configuration);
 
             final URL logging = 
Thread.currentThread().getContextClassLoader().getResource("default.remote.logging.properties");

Modified: 
openejb/trunk/openejb/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java?rev=1351122&r1=1351121&r2=1351122&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
 Sun Jun 17 16:25:36 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.tomee.embedded;
 
+import java.io.File;
+
 /**
 * @version $Rev$ $Date$
 */
@@ -26,6 +28,7 @@ public class Configuration {
     private int stopPort = 8005;
     private String host = "localhost";
     protected String dir;
+    private File serverXml = null;
 
     public int getHttpPort() {
         return httpPort;
@@ -66,4 +69,19 @@ public class Configuration {
     public void setHost(String host) {
         this.host = host;
     }
+
+    public void setServerXml(String file) {
+        final File sXml = new File(file);
+        if (sXml.exists()) {
+            serverXml = sXml;
+        }
+    }
+
+    public File getServerXmlFile() {
+        return serverXml;
+    }
+
+    public boolean hasServerXml() {
+        return serverXml != null && serverXml.exists();
+    }
 }

Modified: 
openejb/trunk/openejb/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java?rev=1351122&r1=1351121&r2=1351122&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
 Sun Jun 17 16:25:36 2012
@@ -17,6 +17,7 @@
 package org.apache.tomee.embedded;
 
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
@@ -114,9 +115,18 @@ public class Container {
         copyTemplateTo(conf, "catalina.properties");
         copyFileTo(conf, "context.xml");
         copyFileTo(conf, "openejb.xml");
-        copyFileTo(conf, "server.xml");
         copyFileTo(conf, "tomcat-users.xml");
         copyFileTo(conf, "web.xml");
+        if (configuration.hasServerXml()) {
+            final FileOutputStream fos = new FileOutputStream(new File(conf, 
"server.xml"));
+            try {
+                IO.copy(configuration.getServerXmlFile(), fos);
+            } finally {
+                IO.close(fos);
+            }
+        } else {
+            copyFileTo(conf, "server.xml");
+        }
 
         // Need to use JULI so log messages from the tests are visible
         // using openejb logging conf in embedded mode


Reply via email to