Skip to content

Commit

Permalink
New option handling
Browse files Browse the repository at this point in the history
  • Loading branch information
gabegorelick committed Apr 27, 2011
1 parent 70e7afb commit a62e262
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 33 deletions.
27 changes: 14 additions & 13 deletions src/edu/umd/cs/guitar/ripper/SWTGuitarConfiguration.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package edu.umd.cs.guitar.ripper;

import java.net.URL;

import org.kohsuke.args4j.Option;

import edu.umd.cs.guitar.model.SWTApplication;
Expand Down Expand Up @@ -36,11 +38,11 @@ public abstract class SWTGuitarConfiguration {
@Option(name = "-cf", usage = "Configure file for the ripper defining terminal, ignored components and ignored windows", aliases = "--configure-file")
private String configFile = "configuration.xml";

@Option(name = "-a", usage = "arguments for the Application Under Test, separated by a colon (:) ", aliases = "--arguments")
private String argumentList;
@Option(name = "-a", usage = "arguments for the Application Under Test", aliases = "--arguments")
private String[] arguments = new String[0];

@Option(name = "-u", usage = "URLs for the Application Under Test, separated by a colon (:) ", aliases = "--urls")
private String urlList;
@Option(name = "-u", usage = "URLs for the Application Under Test", aliases = "--urls")
private URL[] urls = new URL[0];


// getters and setters
Expand Down Expand Up @@ -93,21 +95,20 @@ public String getConfigFile() {
return configFile;
}

public void setArgumentList(String argumentList) {
this.argumentList = argumentList;
public void setArguments(String[] arguments) {
this.arguments = arguments;
}

public String getArgumentList() {
return argumentList;
public String[] getArguments() {
return arguments;
}

// TODO use Args4j option handlers to make this array of URLs instead
public void setUrlList(String urlList) {
this.urlList = urlList;
public void setUrls(URL[] urls) {
this.urls = urls;
}

public String getUrlList() {
return urlList;
public URL[] getUrls() {
return urls;
}

}
24 changes: 4 additions & 20 deletions src/edu/umd/cs/guitar/ripper/SWTGuitarExecutor.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package edu.umd.cs.guitar.ripper;

import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
Expand Down Expand Up @@ -98,25 +97,10 @@ private SWTApplication initSWTApplication(SWTGuitarConfiguration config, Thread
SWTApplication app = new SWTApplication(config.getMainClass(), guiThread);

app.setTimeout(config.getGuiStartTimeout());
app.setInitialWait(config.getInitialWaitTime());

// add arguments
if (config.getArgumentList() != null) {
String[] args = config.getArgumentList().split(GUITARConstants.CMD_ARGUMENT_SEPARATOR);
app.setArgsToApp(args);
}

// add URLs
try {
if (config.getUrlList() != null) {
String[] urls = config.getUrlList().split(
GUITARConstants.CMD_ARGUMENT_SEPARATOR);
for (String s : urls) {
app.addURL(new URL(s));
}
}
} catch (MalformedURLException e) {
GUITARLog.log.error(e);
app.setInitialWait(config.getInitialWaitTime());
app.setArgsToApp(config.getArguments());
for (URL u : config.getUrls()) {
app.addURL(u);
}

return app;
Expand Down
7 changes: 7 additions & 0 deletions src/edu/umd/cs/guitar/ripper/SWTRipperMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,17 @@
*/
package edu.umd.cs.guitar.ripper;

import java.net.URL;

import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.spi.StringArrayOptionHandler;


/**
* This class provides the <code>main</code> method of SWTRipper.
*
* @author Gabe Gorelick
* @author <a href="mailto:[email protected]"> Matt Kirn </a>
* @author <a href="mailto:[email protected]"> Alex Loeb </a>
*/
Expand All @@ -50,6 +54,9 @@ public class SWTRipperMain {
* command line arguments
*/
public static void main(String[] args) {
CmdLineParser.registerHandler(String[].class, StringArrayOptionHandler.class);
CmdLineParser.registerHandler(URL[].class, URLArrayOptionHandler.class);

SWTRipperConfiguration configuration = new SWTRipperConfiguration();
CmdLineParser parser = new CmdLineParser(configuration);

Expand Down
62 changes: 62 additions & 0 deletions src/edu/umd/cs/guitar/ripper/URLArrayOptionHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package edu.umd.cs.guitar.ripper;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;

import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.OptionDef;
import org.kohsuke.args4j.spi.OptionHandler;
import org.kohsuke.args4j.spi.Parameters;
import org.kohsuke.args4j.spi.Setter;

public class URLArrayOptionHandler extends OptionHandler<URL[]> {

public URLArrayOptionHandler(CmdLineParser parser, OptionDef option,
Setter<? super URL[]> setter) {

super(parser, option, setter);
}

@Override
public int parseArguments(Parameters params) throws CmdLineException {
int counter = 0;

ArrayList<URL> values = new ArrayList<URL>();
while (true) {
String param;
try {
param = params.getParameter(counter);
} catch (CmdLineException ex) {
break;
}
if (param.startsWith("-")) {
break;
}

for (String str : param.split(" ")) {
try {
values.add(new URL(str));
} catch (MalformedURLException e) {
throw new CmdLineException("Illegal URL value: " + str);
}
}
counter++;
}

this.setter.addValue(values.toArray(new URL[values.size()]));
return counter;
}

/**
* {@inheritDoc}
*
* @return "URL[]"
*/
@Override
public String getDefaultMetaVariable() {
return "URL[]";
}

}

0 comments on commit a62e262

Please sign in to comment.