From fa4147003235a2d31713bbe5276a0cebd1bd1cd8 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sun, 26 Sep 2010 20:00:03 +0200 Subject: [PATCH] improve Command --- .../src/main/java/sonia/scm/io/Command.java | 11 ++++++++ .../main/java/sonia/scm/io/SimpleCommand.java | 27 +++++++++++++++++-- .../AbstractSimpleRepositoryHandler.java | 14 ++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/io/Command.java b/scm-core/src/main/java/sonia/scm/io/Command.java index 9063fbd33c..701c445a04 100644 --- a/scm-core/src/main/java/sonia/scm/io/Command.java +++ b/scm-core/src/main/java/sonia/scm/io/Command.java @@ -9,6 +9,7 @@ package sonia.scm.io; //~--- JDK imports ------------------------------------------------------------ +import java.io.File; import java.io.IOException; /** @@ -27,4 +28,14 @@ public interface Command * @throws IOException */ public CommandResult execute() throws IOException; + + //~--- set methods ---------------------------------------------------------- + + /** + * Method description + * + * + * @param file + */ + public void setWorkDirectory(File file); } diff --git a/scm-core/src/main/java/sonia/scm/io/SimpleCommand.java b/scm-core/src/main/java/sonia/scm/io/SimpleCommand.java index 42c0a8230d..3bff17a838 100644 --- a/scm-core/src/main/java/sonia/scm/io/SimpleCommand.java +++ b/scm-core/src/main/java/sonia/scm/io/SimpleCommand.java @@ -14,6 +14,7 @@ import sonia.scm.util.Util; //~--- JDK imports ------------------------------------------------------------ import java.io.BufferedReader; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -63,6 +64,22 @@ public class SimpleCommand implements Command return getResult(process); } + //~--- set methods ---------------------------------------------------------- + + /** + * Method description + * + * + * @param workDirectory + */ + @Override + public void setWorkDirectory(File workDirectory) + { + this.workDirectory = workDirectory; + } + + //~--- methods -------------------------------------------------------------- + /** * Method description * @@ -75,9 +92,12 @@ public class SimpleCommand implements Command { ProcessBuilder processBuilder = new ProcessBuilder(command); - processBuilder.redirectErrorStream(true); + if (workDirectory != null) + { + processBuilder = processBuilder.directory(workDirectory); + } - return processBuilder.start(); + return processBuilder.redirectErrorStream(true).start(); } //~--- get methods ---------------------------------------------------------- @@ -140,4 +160,7 @@ public class SimpleCommand implements Command /** Field description */ private String[] command; + + /** Field description */ + private File workDirectory; } diff --git a/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java b/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java index decf245284..c41874a04d 100644 --- a/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java +++ b/scm-core/src/main/java/sonia/scm/repository/AbstractSimpleRepositoryHandler.java @@ -92,6 +92,7 @@ public abstract class AbstractSimpleRepositoryHandler