package jetbrains.mps.build.ant;
/*Generated by MPS */
import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
import org.apache.tools.ant.Task;
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
import org.apache.tools.ant.Project;
public class MyExecuteStreamHandler implements ExecuteStreamHandler {
private Thread myOutputReadingThread;
private Thread myErrorReadingThread;
private final Task myTask;
public MyExecuteStreamHandler(Task task) {
myTask = task;
}
@Override
public void setProcessInputStream(OutputStream os) throws IOException {
}
@Override
public void setProcessErrorStream(final InputStream is) throws IOException {
myErrorReadingThread = new Thread(new Runnable() {
@Override
public void run() {
Scanner s = new Scanner(is);
while (s.hasNextLine()) {
logError(s.nextLine());
}
}
});
}
protected void logError(String line) {
myTask.log(line, Project.MSG_ERR);
}
@Override
public void setProcessOutputStream(final InputStream is) throws IOException {
myOutputReadingThread = new Thread(new Runnable() {
@Override
public void run() {
Scanner s = new Scanner(is);
while (s.hasNextLine()) {
logOutput(s.nextLine());
}
}
});
}
protected void logOutput(String line) {
myTask.log(line);
}
@Override
public void start() throws IOException {
myOutputReadingThread.start();
myErrorReadingThread.start();
}
@Override
public void stop() {
try {
myOutputReadingThread.join();
} catch (InterruptedException e) {
// ignore
}
try {
myErrorReadingThread.join();
} catch (InterruptedException e) {
// ignore
}
}
}