From 2bd38f0df1294b986163ec1ff27d12d0aab9c270 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Fri, 19 Sep 2003 08:31:06 +0000 Subject: [PATCH] Restart stream reading and writing for each execution in . PR: 22446 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@275263 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/tools/ant/taskdefs/Execute.java | 8 +++++++- .../apache/tools/ant/taskdefs/ExecuteOn.java | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/Execute.java b/src/main/org/apache/tools/ant/taskdefs/Execute.java index b7ee3a7c2..44f6e4012 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Execute.java +++ b/src/main/org/apache/tools/ant/taskdefs/Execute.java @@ -348,10 +348,16 @@ public class Execute { */ public Execute(ExecuteStreamHandler streamHandler, ExecuteWatchdog watchdog) { - this.streamHandler = streamHandler; + setStreamHandler(streamHandler); this.watchdog = watchdog; } + /** + * @since Ant 1.6 + */ + public void setStreamHandler(ExecuteStreamHandler streamHandler) { + this.streamHandler = streamHandler; + } /** * Returns the commandline used to create a subprocess. diff --git a/src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java b/src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java index 556088a1d..ae838c433 100644 --- a/src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java +++ b/src/main/org/apache/tools/ant/taskdefs/ExecuteOn.java @@ -333,6 +333,11 @@ public class ExecuteOn extends ExecTask { log(Commandline.describeCommand(command), Project.MSG_VERBOSE); exe.setCommandline(command); + if (haveExecuted) { + // need to reset the stream handler to restart + // reading of pipes + exe.setStreamHandler(createHandler()); + } runExecute(exe); haveExecuted = true; } @@ -376,6 +381,11 @@ public class ExecuteOn extends ExecTask { log(Commandline.describeCommand(command), Project.MSG_VERBOSE); exe.setCommandline(command); + if (haveExecuted) { + // need to reset the stream handler to restart + // reading of pipes + exe.setStreamHandler(createHandler()); + } runExecute(exe); haveExecuted = true; } @@ -595,6 +605,11 @@ public class ExecuteOn extends ExecTask { String[] command = getCommandline(cs, cb); log(Commandline.describeCommand(command), Project.MSG_VERBOSE); exe.setCommandline(command); + if (currentOffset > 0) { + // need to reset the stream handler to restart + // reading of pipes + exe.setStreamHandler(createHandler()); + } runExecute(exe); stillToDo -= currentAmount; @@ -615,4 +630,4 @@ public class ExecuteOn extends ExecTask { return new String[] {"file", "dir", "both"}; } } -} \ No newline at end of file +}