Author: jgallimore
Date: Sun Oct  2 19:59:44 2011
New Revision: 1178244

URL: http://svn.apache.org/viewvc?rev=1178244&view=rev
Log:
OPENEJB-1687 configure the ports if we download TomEE/Tomcat in the adapter

Modified:
    openejb/trunk/arquillian-tomee/arquillian-tomee-remote/pom.xml
    
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/main/java/org/apache/openejb/arquillian/remote/RemoteTomEEContainer.java
    
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/TomEEContainerTest.java
    
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/test/resources/arquillian.xml

Modified: openejb/trunk/arquillian-tomee/arquillian-tomee-remote/pom.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/arquillian-tomee/arquillian-tomee-remote/pom.xml?rev=1178244&r1=1178243&r2=1178244&view=diff
==============================================================================
--- openejb/trunk/arquillian-tomee/arquillian-tomee-remote/pom.xml (original)
+++ openejb/trunk/arquillian-tomee/arquillian-tomee-remote/pom.xml Sun Oct  2 
19:59:44 2011
@@ -321,5 +321,12 @@
       <type>jar</type>
       <scope>compile</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>openejb-tomcat-common</artifactId>
+      <version>${version.openejb}</version>
+      <type>jar</type>
+      <scope>compile</scope>
+    </dependency>
   </dependencies>
 </project>

Modified: 
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/main/java/org/apache/openejb/arquillian/remote/RemoteTomEEContainer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/main/java/org/apache/openejb/arquillian/remote/RemoteTomEEContainer.java?rev=1178244&r1=1178243&r2=1178244&view=diff
==============================================================================
--- 
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/main/java/org/apache/openejb/arquillian/remote/RemoteTomEEContainer.java
 (original)
+++ 
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/main/java/org/apache/openejb/arquillian/remote/RemoteTomEEContainer.java
 Sun Oct  2 19:59:44 2011
@@ -16,23 +16,32 @@
  */
 package org.apache.openejb.arquillian.remote;
 
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.PrintWriter;
 import java.net.Socket;
-import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
 
 import org.apache.openejb.arquillian.common.MavenCache;
-import org.apache.openejb.arquillian.common.SimpleMavenBuilderImpl;
 import org.apache.openejb.arquillian.common.TomEEContainer;
 import org.apache.openejb.config.RemoteServer;
+import org.apache.openejb.tomcat.installer.Installer;
+import org.apache.openejb.tomcat.installer.Paths;
 import org.jboss.arquillian.spi.client.container.LifecycleException;
-import org.jboss.shrinkwrap.api.GenericArchive;
-import org.jboss.shrinkwrap.api.exporter.ExplodedExporter;
-import org.jboss.shrinkwrap.api.exporter.ZipExporter;
-import org.jboss.shrinkwrap.resolver.impl.maven.filter.StrictFilter;
 import org.sonatype.aether.artifact.Artifact;
 
+/*
+ * TODO: delete old embedded adapter, move the tests and set those up
+ */
 public class RemoteTomEEContainer extends TomEEContainer {
        private RemoteServer container;
        private boolean needsStart = false;
@@ -49,39 +58,52 @@ public class RemoteTomEEContainer extend
                return;
        }
        
-       File workingDirectory = new File(configuration.getDir());
-       workingDirectory.mkdirs();
-
-       File openejbHome = null;
-       
-       if (configuration.getTomcatVersion() == null || 
configuration.getTomcatVersion().length() == 0) {
-               downloadTomEE(workingDirectory);
-               openejbHome = findOpenEJBHome(workingDirectory);
-       } else {
-               downloadTomcat(workingDirectory, 
configuration.getTomcatVersion());
-               openejbHome = findOpenEJBHome(workingDirectory);
-            File webappsOpenEJB = new File(openejbHome, "webapps/openejb");
-            webappsOpenEJB.mkdirs();
-            downloadOpenEJBWebapp(webappsOpenEJB);
-       }
-
-       // TODO: then we need to use the Installer to fix up the ports we want 
to use.
-       
-       if (openejbHome == null || (! openejbHome.exists())) {
-               throw new LifecycleException("Error finding OPENEJB_HOME");
+       try {
+               File workingDirectory = new File(configuration.getDir());
+               workingDirectory.mkdirs();
+       
+               File openejbHome = null;
+               
+               if (configuration.getTomcatVersion() == null || 
configuration.getTomcatVersion().length() == 0) {
+                       downloadTomEE(workingDirectory);
+                       openejbHome = findOpenEJBHome(workingDirectory);
+               } else {
+                       downloadTomcat(workingDirectory, 
configuration.getTomcatVersion());
+                       openejbHome = findOpenEJBHome(workingDirectory);
+                   File webappsOpenEJB = new File(openejbHome, 
"webapps/openejb");
+                   webappsOpenEJB.mkdirs();
+                   downloadOpenEJBWebapp(webappsOpenEJB);
+       
+                   System.setProperty("catalina.home", 
openejbHome.getAbsolutePath());
+                           System.setProperty("catalina.base", 
openejbHome.getAbsolutePath());
+                           Paths paths = new Paths(new 
File(openejbHome.getAbsolutePath(), "/webapps/openejb"));
+//                         Installer installer = new Installer(paths, true);
+//                         installer.installAll();
+                           
+                           Map<String, String> replacements = new 
HashMap<String, String>();
+                           replacements.put("8080", 
String.valueOf(configuration.getHttpPort()));
+                           replacements.put("8005", 
String.valueOf(configuration.getStopPort()));
+                           replace(replacements, new File(openejbHome, 
"conf/server.xml"));
+               }
+       
+               if (openejbHome == null || (! openejbHome.exists())) {
+                       throw new LifecycleException("Error finding 
OPENEJB_HOME");
+               }
+               
+               System.setProperty("tomee.http.port", 
String.valueOf(configuration.getHttpPort()));
+               System.setProperty("tomee.shutdown.port", 
String.valueOf(configuration.getStopPort()));
+               
System.setProperty("java.naming.provider.url","http://localhost:"; + 
configuration.getHttpPort() + "/openejb/ejb");
+               System.setProperty("connect.tries","90");
+               System.setProperty("server.http.port", 
String.valueOf(configuration.getHttpPort()));
+               System.setProperty("server.shutdown.port", 
String.valueOf(configuration.getStopPort()));
+               System.setProperty("java.opts", "-Xmx512m -Xms256m 
-XX:PermSize=64m -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=64m");
+               System.setProperty("openejb.home", 
openejbHome.getAbsolutePath());
+       
+               container = new RemoteServer();
+                       container.start();
+       } catch (Exception e) {
+               throw new LifecycleException("Unable to start remote 
container", e);
        }
-       
-       System.setProperty("tomee.http.port", 
String.valueOf(configuration.getHttpPort()));
-       System.setProperty("tomee.shutdown.port", 
String.valueOf(configuration.getStopPort()));
-       System.setProperty("java.naming.provider.url","http://localhost:"; + 
configuration.getHttpPort() + "/openejb/ejb");
-       System.setProperty("connect.tries","90");
-       System.setProperty("server.http.port", 
String.valueOf(configuration.getHttpPort()));
-       System.setProperty("server.shutdown.port", 
String.valueOf(configuration.getStopPort()));
-       System.setProperty("java.opts", "-Xmx512m -Xms256m -XX:PermSize=64m 
-XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=64m");
-       System.setProperty("openejb.home", openejbHome.getAbsolutePath());
-
-       container = new RemoteServer();
-               container.start();
     }
 
        private File findOpenEJBHome(File directory) {
@@ -169,6 +191,65 @@ public class RemoteTomEEContainer extend
         out.close();
     }
 
+       private void replace(Map<String, String> replacements, File file) 
throws IOException {
+               BufferedReader reader = null;
+               PrintWriter writer = null;
+               
+               try {
+                       File tmpFile = copyToTempFile(file);
+                       reader = new BufferedReader(new FileReader(tmpFile));
+                       writer = new PrintWriter(new FileWriter(file));
+                       String line = null;
+                       
+                       while ((line = reader.readLine()) != null) {
+                               Iterator<String> iterator = 
replacements.keySet().iterator();
+                               while (iterator.hasNext()) {
+                                       String pattern = iterator.next();
+                                       String replacement = 
replacements.get(pattern);
+                                       
+                                       line = line.replaceAll(pattern, 
replacement);
+                               }
+                               
+                               writer.println(line);
+                       }
+               } catch (IOException e) {
+                       throw e;
+               } finally {
+                       if (reader != null) {
+                               reader.close();
+                       }
+                       
+                       if (writer != null) {
+                               writer.close();
+                       }
+               }
+       }
 
-
+       private File copyToTempFile(File file) throws IOException {
+               InputStream is = null;
+               OutputStream os = null;
+               
+               File tmpFile;
+               try {
+                       tmpFile = File.createTempFile("oejb", ".fil");
+                       tmpFile.deleteOnExit();
+                       
+                       is = new FileInputStream(file);
+                       os = new FileOutputStream(tmpFile);
+                       
+                       Installer.copy(is, os);
+               } catch (IOException e) {
+                       throw e;
+               } finally {
+                       if (is != null) {
+                               is.close();
+                       }
+                       
+                       if (os != null) {
+                               os.close();
+                       }
+               }
+               
+               return tmpFile;
+       }
 }

Modified: 
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/TomEEContainerTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/TomEEContainerTest.java?rev=1178244&r1=1178243&r2=1178244&view=diff
==============================================================================
--- 
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/TomEEContainerTest.java
 (original)
+++ 
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/test/java/org/apache/openejb/arquillian/TomEEContainerTest.java
 Sun Oct  2 19:59:44 2011
@@ -43,7 +43,7 @@ public class TomEEContainerTest {
 
     @Test
     public void testShouldBeAbleToAccessServletAndEjb() throws Exception {
-        InputStream is = new 
URL("http://localhost:8080/test/Test";).openStream();
+        InputStream is = new 
URL("http://localhost:9080/test/Test";).openStream();
         ByteArrayOutputStream os = new ByteArrayOutputStream();
 
         int bytesRead = -1;

Modified: 
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/test/resources/arquillian.xml
URL: 
http://svn.apache.org/viewvc/openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/test/resources/arquillian.xml?rev=1178244&r1=1178243&r2=1178244&view=diff
==============================================================================
--- 
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/test/resources/arquillian.xml
 (original)
+++ 
openejb/trunk/arquillian-tomee/arquillian-tomee-remote/src/test/resources/arquillian.xml
 Sun Oct  2 19:59:44 2011
@@ -23,10 +23,10 @@
        <container qualifier="tomee" default="true">
            <configuration>
                   <property name="dir">/tmp/arquillian-apache-tomee</property>
-               <property name="httpPort">8080</property>
-               <property name="stopPort">8005</property>
-               <property name="tomcatVersion"></property>
-               <property name="openejbVersion">1.0.0-beta-1</property>
+               <property name="httpPort">9080</property>
+               <property name="stopPort">9005</property>
+               <property name="tomcatVersion">7.0.21</property>
+               <property name="openejbVersion">4.0.0-beta-1</property>
            </configuration>
        </container>
 </arquillian>
\ No newline at end of file


Reply via email to