diff --git a/src/main/org/apache/tools/ant/taskdefs/Redirector.java b/src/main/org/apache/tools/ant/taskdefs/Redirector.java index 78b912183..ff6ec4812 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Redirector.java +++ b/src/main/org/apache/tools/ant/taskdefs/Redirector.java @@ -458,56 +458,8 @@ public class Redirector { * configuration options. */ public synchronized void createStreams() { - if (out != null && out.length > 0) { - String logHead = new StringBuffer("Output ").append( - ((append) ? "appended" : "redirected")).append( - " to ").toString(); - outputStream = foldFiles(out, logHead, Project.MSG_VERBOSE); - } - if (outputProperty != null) { - if (baos == null) { - baos = new PropertyOutputStream(outputProperty); - managingTask.log("Output redirected to property: " - + outputProperty, Project.MSG_VERBOSE); - } - //shield it from being closed by a filtering StreamPumper - OutputStream keepAliveOutput = new KeepAliveOutputStream(baos); - outputStream = (outputStream == null) ? keepAliveOutput - : new TeeOutputStream(outputStream, keepAliveOutput); - } else { - baos = null; - } - - if (error != null && error.length > 0) { - String logHead = new StringBuffer("Error ").append( - ((append) ? "appended" : "redirected")).append( - " to ").toString(); - errorStream = foldFiles(error, logHead, Project.MSG_VERBOSE); - } else if (!(logError || outputStream == null)) { - long funnelTimeout = 0L; - OutputStreamFunneler funneler - = new OutputStreamFunneler(outputStream, funnelTimeout); - try { - outputStream = funneler.getFunnelInstance(); - errorStream = funneler.getFunnelInstance(); - } catch (IOException eyeOhEx) { - throw new BuildException( - "error splitting output/error streams", eyeOhEx); - } - } - if (errorProperty != null) { - if (errorBaos == null) { - errorBaos = new PropertyOutputStream(errorProperty); - managingTask.log("Error redirected to property: " + errorProperty, - Project.MSG_VERBOSE); - } - //shield it from being closed by a filtering StreamPumper - OutputStream keepAliveError = new KeepAliveOutputStream(errorBaos); - errorStream = (error == null || error.length == 0) ? keepAliveError - : new TeeOutputStream(errorStream, keepAliveError); - } else { - errorBaos = null; - } + outStreams(); + errorStreams(); if (alwaysLog || outputStream == null) { OutputStream outputLog = new LogOutputStream(managingTask, Project.MSG_INFO); @@ -620,6 +572,62 @@ public class Redirector { } } + /** outStreams */ + private void outStreams() { + if (out != null && out.length > 0) { + String logHead = new StringBuffer("Output ").append( + ((append) ? "appended" : "redirected")).append( + " to ").toString(); + outputStream = foldFiles(out, logHead, Project.MSG_VERBOSE); + } + if (outputProperty != null) { + if (baos == null) { + baos = new PropertyOutputStream(outputProperty); + managingTask.log("Output redirected to property: " + + outputProperty, Project.MSG_VERBOSE); + } + //shield it from being closed by a filtering StreamPumper + OutputStream keepAliveOutput = new KeepAliveOutputStream(baos); + outputStream = (outputStream == null) ? keepAliveOutput + : new TeeOutputStream(outputStream, keepAliveOutput); + } else { + baos = null; + } + } + + private void errorStreams() { + if (error != null && error.length > 0) { + String logHead = new StringBuffer("Error ").append( + ((append) ? "appended" : "redirected")).append( + " to ").toString(); + errorStream = foldFiles(error, logHead, Project.MSG_VERBOSE); + } else if (!(logError || outputStream == null)) { + long funnelTimeout = 0L; + OutputStreamFunneler funneler + = new OutputStreamFunneler(outputStream, funnelTimeout); + try { + outputStream = funneler.getFunnelInstance(); + errorStream = funneler.getFunnelInstance(); + } catch (IOException eyeOhEx) { + throw new BuildException( + "error splitting output/error streams", eyeOhEx); + } + } + if (errorProperty != null) { + if (errorBaos == null) { + errorBaos = new PropertyOutputStream(errorProperty); + managingTask.log("Error redirected to property: " + errorProperty, + Project.MSG_VERBOSE); + } + //shield it from being closed by a filtering StreamPumper + OutputStream keepAliveError = new KeepAliveOutputStream(errorBaos); + errorStream = (error == null || error.length == 0) ? keepAliveError + : new TeeOutputStream(errorStream, keepAliveError); + } else { + errorBaos = null; + } + } + /** * Create the StreamHandler to use with our Execute instance. *