final PipedOutputStream stdin = new PipedOutputStream();
final ByteArrayOutputStream stdout = new ByteArrayOutputStream();
final ByteArrayOutputStream stderr = new ByteArrayOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
Shell scriptShell = shellFactory.createShell(((FileResource<?>) context.getUIContext()
.getInitialSelection().get()).getUnderlyingResourceObject(),
new SettingsBuilder().inputStream(new PipedInputStream(stdin))
.outputStream(new PrintStream(stdout))
.outputStreamError(new PrintStream(stderr)).create());
BufferedReader reader = new BufferedReader(new InputStreamReader(resource.getResourceInputStream()));
try
{
long startTime = System.currentTimeMillis();
while (reader.ready())
{
try
{
Result result = execute(scriptShell, writer, reader.readLine(), timeout.getValue(),
TimeUnit.SECONDS, startTime);
results.add(result);
context.getUIContext().getProvider().getOutput().out().write(stdout.toByteArray());
context.getUIContext().getProvider().getOutput().err().write(stderr.toByteArray());
if (result instanceof Failed)
break ALL;
}
catch (TimeoutException e)
{
results.add(Results.fail(path + ": timed out.", e));
break ALL;
}
}
}
finally
{
reader.close();
scriptShell.close();
}
}
else
{
results.add(Results.fail(path + ": not found."));