improve Command

This commit is contained in:
Sebastian Sdorra
2010-09-26 20:00:03 +02:00
parent b45953ba0a
commit fa41470032
3 changed files with 50 additions and 2 deletions

View File

@@ -9,6 +9,7 @@ package sonia.scm.io;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
import java.io.File;
import java.io.IOException; import java.io.IOException;
/** /**
@@ -27,4 +28,14 @@ public interface Command
* @throws IOException * @throws IOException
*/ */
public CommandResult execute() throws IOException; public CommandResult execute() throws IOException;
//~--- set methods ----------------------------------------------------------
/**
* Method description
*
*
* @param file
*/
public void setWorkDirectory(File file);
} }

View File

@@ -14,6 +14,7 @@ import sonia.scm.util.Util;
//~--- JDK imports ------------------------------------------------------------ //~--- JDK imports ------------------------------------------------------------
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
@@ -63,6 +64,22 @@ public class SimpleCommand implements Command
return getResult(process); return getResult(process);
} }
//~--- set methods ----------------------------------------------------------
/**
* Method description
*
*
* @param workDirectory
*/
@Override
public void setWorkDirectory(File workDirectory)
{
this.workDirectory = workDirectory;
}
//~--- methods --------------------------------------------------------------
/** /**
* Method description * Method description
* *
@@ -75,9 +92,12 @@ public class SimpleCommand implements Command
{ {
ProcessBuilder processBuilder = new ProcessBuilder(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 ---------------------------------------------------------- //~--- get methods ----------------------------------------------------------
@@ -140,4 +160,7 @@ public class SimpleCommand implements Command
/** Field description */ /** Field description */
private String[] command; private String[] command;
/** Field description */
private File workDirectory;
} }

View File

@@ -92,6 +92,7 @@ public abstract class AbstractSimpleRepositoryHandler<T extends SimpleRepository
throw new RepositoryException(msg.toString()); throw new RepositoryException(msg.toString());
} }
postCreate(repository, directory);
repository.setType(getType().getName()); repository.setType(getType().getName());
storeRepositoryConfig(repository); storeRepositoryConfig(repository);
} }
@@ -263,6 +264,19 @@ public abstract class AbstractSimpleRepositoryHandler<T extends SimpleRepository
} }
} }
/**
* Method description
*
*
* @param repository
* @param directory
*
* @throws IOException
* @throws RepositoryException
*/
protected void postCreate(Repository repository, File directory)
throws IOException, RepositoryException {}
/** /**
* Method description * Method description
* *