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