From 8955e232250fbaa6832bd7a2ffab8bab39ab007c Mon Sep 17 00:00:00 2001 From: Gabe Gorelick Date: Sat, 16 Apr 2011 23:33:55 -0400 Subject: [PATCH] Parse arguments and URLs in executor instead of monitor --- .../cs/guitar/ripper/SWTGuitarExecutor.java | 30 ++++++++- src/edu/umd/cs/guitar/ripper/SWTRipper.java | 4 +- .../cs/guitar/ripper/SWTRipperMonitor.java | 61 ++----------------- 3 files changed, 37 insertions(+), 58 deletions(-) diff --git a/src/edu/umd/cs/guitar/ripper/SWTGuitarExecutor.java b/src/edu/umd/cs/guitar/ripper/SWTGuitarExecutor.java index 55d141b..d0e4799 100644 --- a/src/edu/umd/cs/guitar/ripper/SWTGuitarExecutor.java +++ b/src/edu/umd/cs/guitar/ripper/SWTGuitarExecutor.java @@ -1,6 +1,8 @@ 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; import java.util.ArrayList; @@ -84,13 +86,37 @@ protected SWTGuitarExecutor(SWTGuitarConfiguration config, Thread guiThread) { } this.config = config; - this.application = new SWTApplication(config.getMainClass(), guiThread); - + this.application = initSWTApplication(config, guiThread); this.xmlConfig = loadXmlConfig(); System.setProperty(GUITARLog.LOGFILE_NAME_SYSTEM_PROPERTY, config.getLogFile()); } + private SWTApplication initSWTApplication(SWTGuitarConfiguration config, Thread guiThread) { + SWTApplication app = new SWTApplication(config.getMainClass(), guiThread); + + // 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); + } + + return app; + } + private Configuration loadXmlConfig() { Configuration conf = null; diff --git a/src/edu/umd/cs/guitar/ripper/SWTRipper.java b/src/edu/umd/cs/guitar/ripper/SWTRipper.java index 72d4ccd..9c4885a 100755 --- a/src/edu/umd/cs/guitar/ripper/SWTRipper.java +++ b/src/edu/umd/cs/guitar/ripper/SWTRipper.java @@ -30,6 +30,7 @@ import edu.umd.cs.guitar.model.GIDGenerator; import edu.umd.cs.guitar.model.IO; +import edu.umd.cs.guitar.model.SWTApplication; import edu.umd.cs.guitar.model.SWTDefaultIDGenerator; import edu.umd.cs.guitar.model.data.ComponentListType; import edu.umd.cs.guitar.model.data.GUIStructure; @@ -94,7 +95,8 @@ public SWTRipper(SWTRipperConfiguration config, Thread guiThread) { this.config = config; } - monitor = new SWTRipperMonitor(config, guiThread); + SWTApplication app = new SWTApplication(this.config.getMainClass(), guiThread); + monitor = new SWTRipperMonitor(this.config, app); ripper = initRipper(); } diff --git a/src/edu/umd/cs/guitar/ripper/SWTRipperMonitor.java b/src/edu/umd/cs/guitar/ripper/SWTRipperMonitor.java index 54a4d35..291503c 100644 --- a/src/edu/umd/cs/guitar/ripper/SWTRipperMonitor.java +++ b/src/edu/umd/cs/guitar/ripper/SWTRipperMonitor.java @@ -9,8 +9,6 @@ */ package edu.umd.cs.guitar.ripper; -import java.net.MalformedURLException; -import java.net.URL; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; @@ -54,34 +52,17 @@ public class SWTRipperMonitor extends GRipperMonitor { * */ private volatile LinkedList tempOpenedWinStack = new LinkedList(); - + // TODO I don't think these have to be volatile private volatile LinkedList tempClosedWinStack = new LinkedList(); - /** - * Construct a new SWTRipperMonitor. This constructor is - * equivalent to - * SWTRipperMonitor(configuration, Thread.getCurrentThread()). - * Consequently, this constructor must be called on the same thread that the - * application under test is running on (usually the main - * thread). - * - * @param configuration - * ripper configuration - */ - public SWTRipperMonitor(SWTRipperConfiguration configuration) { - this(configuration, Thread.currentThread()); - } - /** * Constructor * * @param configuration * ripper configuration - * @param appThread - * thread the SWT GUI is running on (almost always the - * main thread) + * @param app */ - public SWTRipperMonitor(SWTRipperConfiguration configuration, Thread appThread) { + public SWTRipperMonitor(SWTRipperConfiguration configuration, SWTApplication app) { super(); if (configuration == null) { @@ -89,25 +70,9 @@ public SWTRipperMonitor(SWTRipperConfiguration configuration, Thread appThread) } this.configuration = configuration; + this.application = app; - // don't store application.getDisplay because it's still null at this point - - String[] URLs; - if (configuration.getUrlList() != null) { - URLs = configuration.getUrlList().split(GUITARConstants.CMD_ARGUMENT_SEPARATOR); - } else { - URLs = new String[0]; - } - - try { - application = new SWTApplication(configuration.getMainClass(), appThread); - application.setArgsToApp(parseArgumentList()); - for (String s : URLs) { - application.addURL(new URL(s)); - } - } catch (MalformedURLException e) { - e.printStackTrace(); - } + // don't store application.getDisplay because it's still null at this point } @Override @@ -143,6 +108,7 @@ public void run() { } try { + // TODO this doesn't seem to do anything Thread.sleep(50); } catch (InterruptedException e) { GUITARLog.log.error(e); @@ -189,21 +155,6 @@ public void setUp() { application.connect(); } - /** - * Convert String of - * {@link GUITARConstants.CMD_ARGUMENT_SEPERATOR}-separated arguments from - * {@link SWTRipperConfiguration} into an array of Strings. - * - * @return array of arguments to be passed to the SWT application - */ - private String[] parseArgumentList() { - if (configuration.getArgumentList() != null) { - return configuration.getArgumentList().split(GUITARConstants.CMD_ARGUMENT_SEPARATOR); - } else { - return new String[0]; - } - } - @Override public void cleanUp() { application.getDisplay().syncExec(new Runnable() {