private Resource stdOutFile = null;
private Resource stdErrFile = null;
+ private Resource stdInFile = null;
private Map<String, List<Object>> osCommands = new HashMap<String, List<Object>>();
private Map<String, String> osCmds = new HashMap<String, String>();
/** Executes the system call. */
public void run() {
+ // Manage streams
final Writer stdOutWriter;
final Writer stdErrWriter;
+ final InputStream stdInStream;
if (stdOutFile != null) {
stdOutWriter = createWriter(stdOutFile);
- } else
+ } else {
stdOutWriter = null;
+ }
+
if (stdErrFile != null) {
stdErrWriter = createWriter(stdErrFile);
} else {
if (stdOutFile != null) {
stdErrWriter = createWriter(stdOutFile);
- } else
+ } else {
stdErrWriter = null;
+ }
}
+ if (stdInFile != null)
+ try {
+ stdInStream = stdInFile.getInputStream();
+ } catch (IOException e2) {
+ throw new SlcException("Cannot open a stream for " + stdInFile,
+ e2);
+ }
+ else
+ stdInStream = null;
+
if (log.isTraceEnabled()) {
log.debug("os.name=" + System.getProperty("os.name"));
log.debug("os.arch=" + System.getProperty("os.arch"));
if (redirectStreams) {
// Redirect standard streams
executor.setStreamHandler(createExecuteStreamHandler(stdOutWriter,
- stdErrWriter));
+ stdErrWriter, stdInStream));
} else {
// Dummy stream handler (otherwise pump is used)
executor.setStreamHandler(new DummyexecuteStreamHandler());
} finally {
IOUtils.closeQuietly(stdOutWriter);
IOUtils.closeQuietly(stdErrWriter);
+ IOUtils.closeQuietly(stdInStream);
}
}
* logging mechanism.
*/
protected ExecuteStreamHandler createExecuteStreamHandler(
- final Writer stdOutWriter, final Writer stdErrWriter) {
+ final Writer stdOutWriter, final Writer stdErrWriter,
+ final InputStream stdInStream) {
+
// Log writers
PumpStreamHandler pumpStreamHandler = new PumpStreamHandler(
if (stdErrWriter != null)
appendLineToFile(stdErrWriter, line);
}
- }, null);
+ }, stdInStream);
return pumpStreamHandler;
}
this.stdErrFile = stdErrFile;
}
+ public void setStdInFile(Resource stdInFile) {
+ this.stdInFile = stdInFile;
+ }
+
public void setTestResult(TestResult testResult) {
this.testResult = testResult;
}