Browse Source

Much better solution to unterminated output - better backward compat

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273938 13f79535-47bb-0310-9956-ffa450edef68
master
Conor MacNeill 22 years ago
parent
commit
6ceeb5d3da
9 changed files with 79 additions and 83 deletions
  1. +6
    -5
      src/main/org/apache/tools/ant/DemuxOutputStream.java
  2. +16
    -5
      src/main/org/apache/tools/ant/Project.java
  3. +10
    -10
      src/main/org/apache/tools/ant/Task.java
  4. +6
    -6
      src/main/org/apache/tools/ant/UnknownElement.java
  5. +10
    -10
      src/main/org/apache/tools/ant/taskdefs/Ant.java
  6. +8
    -8
      src/main/org/apache/tools/ant/taskdefs/CallTarget.java
  7. +8
    -16
      src/main/org/apache/tools/ant/taskdefs/Java.java
  8. +11
    -11
      src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
  9. +4
    -12
      src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java

+ 6
- 5
src/main/org/apache/tools/ant/DemuxOutputStream.java View File

@@ -191,7 +191,9 @@ public class DemuxOutputStream extends OutputStream {
* @see Project#demuxOutput(String,boolean) * @see Project#demuxOutput(String,boolean)
*/ */
protected void processBuffer(ByteArrayOutputStream buffer) { protected void processBuffer(ByteArrayOutputStream buffer) {
processBuffer(buffer, true);
String output = buffer.toString();
project.demuxOutput(output, isErrorStream);
resetBufferInfo();
} }


/** /**
@@ -202,10 +204,9 @@ public class DemuxOutputStream extends OutputStream {
* *
* @see Project#demuxOutput(String,boolean) * @see Project#demuxOutput(String,boolean)
*/ */
protected void processBuffer(ByteArrayOutputStream buffer,
boolean terminated) {
protected void processFlush(ByteArrayOutputStream buffer) {
String output = buffer.toString(); String output = buffer.toString();
project.demuxOutput(output, isErrorStream, terminated);
project.demuxFlush(output, isErrorStream);
resetBufferInfo(); resetBufferInfo();
} }


@@ -230,7 +231,7 @@ public class DemuxOutputStream extends OutputStream {
public void flush() throws IOException { public void flush() throws IOException {
BufferInfo bufferInfo = getBufferInfo(); BufferInfo bufferInfo = getBufferInfo();
if (bufferInfo.buffer.size() > 0) { if (bufferInfo.buffer.size() > 0) {
processBuffer(bufferInfo.buffer, false);
processFlush(bufferInfo.buffer);
} }
} }
} }

+ 16
- 5
src/main/org/apache/tools/ant/Project.java View File

@@ -1228,29 +1228,40 @@ public class Project {
* or information (<code>false</code>). * or information (<code>false</code>).
*/ */
public void demuxOutput(String line, boolean isError) { public void demuxOutput(String line, boolean isError) {
demuxOutput(line, isError, true);
Task task = (Task) threadTasks.get(Thread.currentThread());
if (task == null) {
fireMessageLogged(this, line, isError ? MSG_ERR : MSG_INFO);
} else {
if (isError) {
task.handleErrorOutput(line);
} else {
task.handleOutput(line);
}
}
} }


/** /**
* Demultiplexes output so that each task receives the appropriate
* Demultiplexes flush operation so that each task receives the appropriate
* messages. If the current thread is not currently executing a task, * messages. If the current thread is not currently executing a task,
* the message is logged directly. * the message is logged directly.
* *
* @since Ant 1.5.2
*
* @param line Message to handle. Should not be <code>null</code>. * @param line Message to handle. Should not be <code>null</code>.
* @param isError Whether the text represents an error (<code>true</code>) * @param isError Whether the text represents an error (<code>true</code>)
* or information (<code>false</code>). * or information (<code>false</code>).
* @param terminated true if this line should be terminated with an * @param terminated true if this line should be terminated with an
* end-of-line marker * end-of-line marker
*/ */
public void demuxOutput(String line, boolean isError, boolean terminated) {
public void demuxFlush(String line, boolean isError) {
Task task = (Task) threadTasks.get(Thread.currentThread()); Task task = (Task) threadTasks.get(Thread.currentThread());
if (task == null) { if (task == null) {
fireMessageLogged(this, line, isError ? MSG_ERR : MSG_INFO); fireMessageLogged(this, line, isError ? MSG_ERR : MSG_INFO);
} else { } else {
if (isError) { if (isError) {
task.handleErrorOutput(line, terminated);
task.handleErrorFlush(line);
} else { } else {
task.handleOutput(line, terminated);
task.handleFlush(line);
} }
} }
} }


+ 10
- 10
src/main/org/apache/tools/ant/Task.java View File

@@ -298,18 +298,18 @@ public abstract class Task extends ProjectComponent {
* @param line The line of output to log. Should not be <code>null</code>. * @param line The line of output to log. Should not be <code>null</code>.
*/ */
protected void handleOutput(String line) { protected void handleOutput(String line) {
handleOutput(line + "X7", true);
log(line, Project.MSG_INFO);
} }


/** /**
* Handles a line of output by logging it with the INFO priority. * Handles a line of output by logging it with the INFO priority.
* *
* @param line The line of output to log. Should not be <code>null</code>. * @param line The line of output to log. Should not be <code>null</code>.
* @param terminated true if this line should be terminated with an
* end-of-line marker
*
* @since Ant 1.5.2
*/ */
protected void handleOutput(String line, boolean terminated) {
log(line, Project.MSG_INFO);
protected void handleFlush(String line) {
handleOutput(line);
} }


/** /**
@@ -318,18 +318,18 @@ public abstract class Task extends ProjectComponent {
* @param line The error line to log. Should not be <code>null</code>. * @param line The error line to log. Should not be <code>null</code>.
*/ */
protected void handleErrorOutput(String line) { protected void handleErrorOutput(String line) {
handleErrorOutput(line, true);
log(line, Project.MSG_ERR);
} }


/** /**
* Handles an error line by logging it with the INFO priority. * Handles an error line by logging it with the INFO priority.
* *
* @param line The error line to log. Should not be <code>null</code>. * @param line The error line to log. Should not be <code>null</code>.
* @param terminated true if this line should be terminated with an
* end-of-line marker
*
* @since Ant 1.5.2
*/ */
protected void handleErrorOutput(String line, boolean terminated) {
log(line, Project.MSG_ERR);
protected void handleErrorFlush(String line) {
handleErrorOutput(line);
} }


/** /**


+ 6
- 6
src/main/org/apache/tools/ant/UnknownElement.java View File

@@ -161,11 +161,11 @@ public class UnknownElement extends Task {
* *
* @param line The line of output to log. Should not be <code>null</code>. * @param line The line of output to log. Should not be <code>null</code>.
*/ */
protected void handleOutput(String line, boolean terminated) {
protected void handleFlush(String line) {
if (realThing instanceof Task) { if (realThing instanceof Task) {
((Task) realThing).handleOutput(line, terminated);
((Task) realThing).handleFlush(line);
} else { } else {
super.handleOutput(line, terminated);
super.handleFlush(line);
} }
} }


@@ -188,11 +188,11 @@ public class UnknownElement extends Task {
* *
* @param line The error line to log. Should not be <code>null</code>. * @param line The error line to log. Should not be <code>null</code>.
*/ */
protected void handleErrorOutput(String line, boolean terminated) {
protected void handleErrorFlush(String line) {
if (realThing instanceof Task) { if (realThing instanceof Task) {
((Task) realThing).handleErrorOutput(line, terminated);
((Task) realThing).handleErrorOutput(line);
} else { } else {
super.handleErrorOutput(line, terminated);
super.handleErrorOutput(line);
} }
} }


+ 10
- 10
src/main/org/apache/tools/ant/taskdefs/Ant.java View File

@@ -288,7 +288,7 @@ public class Ant extends Task {
* *
* @since Ant 1.5 * @since Ant 1.5
*/ */
protected void handleOutput(String line) {
public void handleOutput(String line) {
if (newProject != null) { if (newProject != null) {
newProject.demuxOutput(line, false); newProject.demuxOutput(line, false);
} else { } else {
@@ -299,13 +299,13 @@ public class Ant extends Task {
/** /**
* Pass output sent to System.out to the new project. * Pass output sent to System.out to the new project.
* *
* @since Ant 1.6
* @since Ant 1.5.2
*/ */
protected void handleOutput(String line, boolean terminated) {
public void handleFlush(String line) {
if (newProject != null) { if (newProject != null) {
newProject.demuxOutput(line, false, terminated);
newProject.demuxFlush(line, false);
} else { } else {
super.handleOutput(line, terminated);
super.handleFlush(line);
} }
} }


@@ -314,7 +314,7 @@ public class Ant extends Task {
* *
* @since Ant 1.5 * @since Ant 1.5
*/ */
protected void handleErrorOutput(String line) {
public void handleErrorOutput(String line) {
if (newProject != null) { if (newProject != null) {
newProject.demuxOutput(line, true); newProject.demuxOutput(line, true);
} else { } else {
@@ -325,13 +325,13 @@ public class Ant extends Task {
/** /**
* Pass output sent to System.err to the new project. * Pass output sent to System.err to the new project.
* *
* @since Ant 1.6
* @since Ant 1.5.2
*/ */
protected void handleErrorOutput(String line, boolean terminated) {
public void handleErrorFlush(String line) {
if (newProject != null) { if (newProject != null) {
newProject.demuxOutput(line, true, terminated);
newProject.demuxFlush(line, true);
} else { } else {
super.handleErrorOutput(line, terminated);
super.handleErrorFlush(line);
} }
} }




+ 8
- 8
src/main/org/apache/tools/ant/taskdefs/CallTarget.java View File

@@ -188,13 +188,13 @@ public class CallTarget extends Task {
/** /**
* Pass output sent to System.out to the new project. * Pass output sent to System.out to the new project.
* *
* @since Ant 1.6
* @since Ant 1.5.2
*/ */
protected void handleOutput(String line, boolean terminated) {
public void handleFlush(String line) {
if (callee != null) { if (callee != null) {
callee.handleOutput(line, terminated);
callee.handleFlush(line);
} else { } else {
super.handleOutput(line, terminated);
super.handleFlush(line);
} }
} }
@@ -214,13 +214,13 @@ public class CallTarget extends Task {
/** /**
* Pass output sent to System.err to the new project. * Pass output sent to System.err to the new project.
* *
* @since Ant 1.6
* @since Ant 1.5.2
*/ */
protected void handleErrorOutput(String line, boolean terminated) {
public void handleErrorFlush(String line) {
if (callee != null) { if (callee != null) {
callee.handleErrorOutput(line, terminated);
callee.handleErrorFlush(line);
} else { } else {
super.handleErrorOutput(line, terminated);
super.handleErrorFlush(line);
} }
} }
} }

+ 8
- 16
src/main/org/apache/tools/ant/taskdefs/Java.java View File

@@ -376,17 +376,13 @@ public class Java extends Task {
/** /**
* Pass output sent to System.out to specified output file. * Pass output sent to System.out to specified output file.
* *
* @since Ant 1.6
* @since Ant 1.5.2
*/ */
protected void handleOutput(String line, boolean terminated) {
protected void handleFlush(String line) {
if (outStream != null) { if (outStream != null) {
if (terminated) {
outStream.println(line);
} else {
outStream.print(line);
}
outStream.print(line);
} else { } else {
super.handleOutput(line, terminated);
super.handleFlush(line);
} }
} }
@@ -406,17 +402,13 @@ public class Java extends Task {
/** /**
* Pass output sent to System.err to specified output file. * Pass output sent to System.err to specified output file.
* *
* @since Ant 1.6
* @since Ant 1.5.2
*/ */
protected void handleErrorOutput(String line, boolean terminated) {
protected void handleErrorFlush(String line) {
if (outStream != null) { if (outStream != null) {
if (terminated) {
outStream.println(line);
} else {
outStream.print(line);
}
outStream.println(line);
} else { } else {
super.handleErrorOutput(line, terminated);
super.handleErrorOutput(line);
} }
} }


+ 11
- 11
src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java View File

@@ -717,16 +717,16 @@ public class JUnitTask extends Task {
* Pass output sent to System.out to the TestRunner so it can * Pass output sent to System.out to the TestRunner so it can
* collect ot for the formatters. * collect ot for the formatters.
* *
* @since Ant 1.6
* @since Ant 1.5.2
*/ */
protected void handleOutput(String line, boolean terminated) {
protected void handleFlush(String line) {
if (runner != null) { if (runner != null) {
runner.handleOutput(line, terminated);
runner.handleFlush(line);
if (showOutput) { if (showOutput) {
super.handleOutput(line, terminated);
super.handleFlush(line);
} }
} else { } else {
super.handleOutput(line, terminated);
super.handleFlush(line);
} }
} }


@@ -736,7 +736,7 @@ public class JUnitTask extends Task {
* *
* @since Ant 1.5 * @since Ant 1.5
*/ */
protected void handleErrorOutput(String line) {
public void handleErrorOutput(String line) {
if (runner != null) { if (runner != null) {
runner.handleErrorOutput(line); runner.handleErrorOutput(line);
if (showOutput) { if (showOutput) {
@@ -752,16 +752,16 @@ public class JUnitTask extends Task {
* Pass output sent to System.err to the TestRunner so it can * Pass output sent to System.err to the TestRunner so it can
* collect ot for the formatters. * collect ot for the formatters.
* *
* @since Ant 1.6
* @since Ant 1.5.2
*/ */
protected void handleErrorOutput(String line, boolean terminated) {
public void handleErrorFlush(String line) {
if (runner != null) { if (runner != null) {
runner.handleErrorOutput(line, terminated);
runner.handleErrorFlush(line);
if (showOutput) { if (showOutput) {
super.handleErrorOutput(line, terminated);
super.handleErrorFlush(line);
} }
} else { } else {
super.handleErrorOutput(line, terminated);
super.handleErrorFlush(line);
} }
} }




+ 4
- 12
src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.java View File

@@ -416,23 +416,15 @@ public class JUnitTestRunner implements TestListener {
} }
} }
protected void handleOutput(String line, boolean terminated) {
protected void handleFlush(String line) {
if (systemOut != null) { if (systemOut != null) {
if (terminated) {
systemOut.println(line);
} else {
systemOut.print(line);
}
systemOut.print(line);
} }
} }
protected void handleErrorOutput(String line, boolean terminated) {
protected void handleErrorFlush(String line) {
if (systemError != null) { if (systemError != null) {
if (terminated) {
systemError.println(line);
} else {
systemError.print(line);
}
systemError.print(line);
} }
} }


Loading…
Cancel
Save