You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/10/15 13:38:38 UTC
svn commit: r1398254 - in
/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote:
RemoteTomEEConfiguration.java RemoteTomEEContainer.java
Author: rmannibucau
Date: Mon Oct 15 11:38:38 2012
New Revision: 1398254
URL: http://svn.apache.org/viewvc?rev=1398254&view=rev
Log:
TOMEE-467 adding CATALINA_OPTS to arquillian tomee remote in arquillian.xml
Modified:
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEContainer.java
Modified: openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java?rev=1398254&r1=1398253&r2=1398254&view=diff
==============================================================================
--- openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java (original)
+++ openejb/trunk/openejb/arquillian/arquillian-tomee-remote/src/main/java/org/apache/tomee/arquillian/remote/RemoteTomEEConfiguration.java Mon Oct 15 11:38:38 2012
@@ -41,6 +41,7 @@ public class RemoteTomEEConfiguration ex
private boolean cleanOnStartUp;
private boolean debug;
private int debugPort = 5005;
+ private String CATALINA_OPTS = null; // using this format to match the script one
public String getGroupId() {
return groupId;
@@ -168,4 +169,12 @@ public class RemoteTomEEConfiguration ex
public void setDebugPort(int debugPort) {
this.debugPort = debugPort;
}
+
+ public String getCATALINA_OPTS() {
+ return CATALINA_OPTS;
+ }
+
+ public void setCATALINA_OPTS(final String opts) {
+ this.CATALINA_OPTS = opts;
+ }
}
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=1398254&r1=1398253&r2=1398254&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 Mon Oct 15 11:38:38 2012
@@ -27,6 +27,10 @@ import org.jboss.arquillian.container.sp
import javax.naming.NamingException;
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.logging.Level;
@@ -74,7 +78,7 @@ public class RemoteTomEEContainer extend
}
container = new RemoteServer();
- container.start();
+ container.start(args(), "start", true);
} catch (Exception e) {
logger.log(Level.SEVERE, "Unable to start remote container", e);
throw new LifecycleException("Unable to start remote container:" + e.getMessage(), e);
@@ -87,6 +91,23 @@ public class RemoteTomEEContainer extend
}
}
+ private List<String> args() {
+ String opts = configuration.getCATALINA_OPTS();
+ if (opts == null || (opts = opts.trim()).isEmpty()) {
+ return Collections.emptyList();
+ }
+
+ final List<String> splitOnSpace = new ArrayList<String>();
+ opts = opts.replace("\n", " ").trim();
+
+ final Iterator<String> it = new ArgsIterator(opts);
+ while (it.hasNext()) {
+ splitOnSpace.add(it.next());
+ }
+
+ return splitOnSpace;
+ }
+
private static void resetSystemProperty(final String key, final String value) {
if (value == null) {
System.getProperties().remove(key);
@@ -181,4 +202,61 @@ public class RemoteTomEEContainer extend
throw ne;
}
}
+
+ private static class ArgsIterator implements Iterator<String> {
+ private final String string;
+ private int currentIndex;
+
+ public ArgsIterator(final String opts) {
+ string = opts;
+ currentIndex = 0;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return string != null && currentIndex < string.length();
+ }
+
+ @Override
+ public String next() {
+ skipWhiteCharacters();
+
+ if (done()) {
+ throw new UnsupportedOperationException("No more element");
+ }
+
+ char endChar;
+ if (string.charAt(currentIndex) == '"') {
+ currentIndex++;
+ endChar = '"';
+ } else {
+ endChar = ' ';
+ }
+
+ final int start = currentIndex;
+ int end = string.indexOf(endChar, currentIndex + 1);
+ if (end <= 0) {
+ end = string.length();
+ }
+
+ currentIndex = end + 1;
+
+ return string.substring(start, end);
+ }
+
+ private void skipWhiteCharacters() {
+ while (!done() && (string.charAt(currentIndex) == ' ' || string.charAt(currentIndex) == '\t')) {
+ currentIndex++;
+ }
+ }
+
+ private boolean done() {
+ return currentIndex >= string.length();
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+ }
}