public class DryRunShawnProcess extends IShawnProcess { private Category log = Logging.get(this); private boolean running = true; @Override public void addResult(ShawnResult res) {} @Override public boolean isRunning() { return running; } @Override public void killProcess() { running = false; super.killProcess(); } @Override public void notifyTaskDone() {} @Override public LinkedList<ShawnResult> runCommand(String cmd) { return runCommand(cmd, ""); } @Override public LinkedList<ShawnResult> runCommand(String cmd, String params) { String cmdLine = toCommandLine(cmd, params); storeCommandInHistory(cmdLine); log.debug("Sending line to shawn: " + cmdLine); return new LinkedList<ShawnResult>(); } @Override public void setGlobalVariable(String name, String value) { String cmdLine = toGlobalVariableLine(name, value); storeCommandInHistory(cmdLine); log.debug("Setting global variable: " + cmdLine); } }
public class ShawnProcessFactory { private static Category log = Logging.get(ShawnProcessFactory.class); private static Vector<IShawnProcess> shawns = new Vector<IShawnProcess>(); private static EnvironmentConfig defaultValues = null; public static IShawnProcess create() throws Exception { log.debug("Creating shawn instance with default values"); IShawnProcess s = null; if (defaultValues.isDryRun()) { log.info("Creating dry run shawn instance"); s = new DryRunShawnProcess(); } else { log.info("Creating local process shawn instance"); s = new ShawnProcess(defaultValues.getShawnExecutable(), defaultValues.getWorkDir()); } shawns.add(s); return s; } public static void destroy() { log.debug("Destroying " + shawns.size() + " shawn processes."); for (IShawnProcess proc : shawns) proc.killProcess(); log.debug("Done."); } public static EnvironmentConfig getDefaultValues() { return defaultValues; } public static void setDefaultValues(EnvironmentConfig defaultValues) { ShawnProcessFactory.defaultValues = defaultValues; } }