git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1095736 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -353,6 +353,7 @@ Victor Toni | |||||
| Vincent Legoll | Vincent Legoll | ||||
| Waldek Herka | Waldek Herka | ||||
| Will Wang | Will Wang | ||||
| William Bernardet | |||||
| William Ferguson | William Ferguson | ||||
| William Webber | William Webber | ||||
| Wolf Siberski | Wolf Siberski | ||||
| @@ -44,6 +44,9 @@ Fixed bugs: | |||||
| It will now fail with a more useful error message. | It will now fail with a more useful error message. | ||||
| Bugzilla Report 51035. | Bugzilla Report 51035. | ||||
| * Exec task may mix the stderr and stdout output while logging it | |||||
| Bugzilla Report 50507. | |||||
| Other changes: | Other changes: | ||||
| -------------- | -------------- | ||||
| @@ -62,7 +65,7 @@ Other changes: | |||||
| * The expandproperties filter now accepts a nested propertyset | * The expandproperties filter now accepts a nested propertyset | ||||
| which, if specified, provides the properties for expansion. | which, if specified, provides the properties for expansion. | ||||
| Bugzilla Report 51044. | Bugzilla Report 51044. | ||||
| Changes from Ant 1.8.1 TO Ant 1.8.2 | Changes from Ant 1.8.1 TO Ant 1.8.2 | ||||
| =================================== | =================================== | ||||
| @@ -1424,6 +1424,10 @@ | |||||
| <first>Will</first> | <first>Will</first> | ||||
| <last>Wang</last> | <last>Wang</last> | ||||
| </name> | </name> | ||||
| <name> | |||||
| <first>William</first> | |||||
| <last>Bernardet</last> | |||||
| </name> | |||||
| <name> | <name> | ||||
| <first>William</first> | <first>William</first> | ||||
| <last>Ferguson</last> | <last>Ferguson</last> | ||||
| @@ -37,6 +37,8 @@ import org.apache.tools.ant.ProjectComponent; | |||||
| import org.apache.tools.ant.Task; | import org.apache.tools.ant.Task; | ||||
| import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
| import org.apache.tools.ant.filters.util.ChainReaderHelper; | import org.apache.tools.ant.filters.util.ChainReaderHelper; | ||||
| import org.apache.tools.ant.util.LineOrientedOutputStream; | |||||
| import org.apache.tools.ant.util.LineOrientedOutputStreamRedirector; | |||||
| import org.apache.tools.ant.util.StringUtils; | import org.apache.tools.ant.util.StringUtils; | ||||
| import org.apache.tools.ant.util.TeeOutputStream; | import org.apache.tools.ant.util.TeeOutputStream; | ||||
| import org.apache.tools.ant.util.ReaderInputStream; | import org.apache.tools.ant.util.ReaderInputStream; | ||||
| @@ -720,8 +722,8 @@ public class Redirector { | |||||
| OutputStreamFunneler funneler = new OutputStreamFunneler( | OutputStreamFunneler funneler = new OutputStreamFunneler( | ||||
| outputStream, funnelTimeout); | outputStream, funnelTimeout); | ||||
| try { | try { | ||||
| outputStream = funneler.getFunnelInstance(); | |||||
| errorStream = funneler.getFunnelInstance(); | |||||
| outputStream = new LineOrientedOutputStreamRedirector(funneler.getFunnelInstance()); | |||||
| errorStream = new LineOrientedOutputStreamRedirector(funneler.getFunnelInstance()); | |||||
| } catch (IOException eyeOhEx) { | } catch (IOException eyeOhEx) { | ||||
| throw new BuildException( | throw new BuildException( | ||||
| "error splitting output/error streams", eyeOhEx); | "error splitting output/error streams", eyeOhEx); | ||||
| @@ -66,10 +66,7 @@ public abstract class LineOrientedOutputStream extends OutputStream { | |||||
| * Flush this log stream | * Flush this log stream | ||||
| * @throws IOException if there is an error. | * @throws IOException if there is an error. | ||||
| */ | */ | ||||
| public final void flush() throws IOException { | |||||
| if (buffer.size() > 0) { | |||||
| processBuffer(); | |||||
| } | |||||
| public void flush() throws IOException { | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -97,7 +94,7 @@ public abstract class LineOrientedOutputStream extends OutputStream { | |||||
| * Writes all remaining | * Writes all remaining | ||||
| * @throws IOException if there is an error. | * @throws IOException if there is an error. | ||||
| */ | */ | ||||
| public final void close() throws IOException { | |||||
| public void close() throws IOException { | |||||
| if (buffer.size() > 0) { | if (buffer.size() > 0) { | ||||
| processBuffer(); | processBuffer(); | ||||
| } | } | ||||
| @@ -0,0 +1,48 @@ | |||||
| /* | |||||
| * Licensed to the Apache Software Foundation (ASF) under one or more | |||||
| * contributor license agreements. See the NOTICE file distributed with | |||||
| * this work for additional information regarding copyright ownership. | |||||
| * The ASF licenses this file to You under the Apache License, Version 2.0 | |||||
| * (the "License"); you may not use this file except in compliance with | |||||
| * the License. You may obtain a copy of the License at | |||||
| * | |||||
| * http://www.apache.org/licenses/LICENSE-2.0 | |||||
| * | |||||
| * Unless required by applicable law or agreed to in writing, software | |||||
| * distributed under the License is distributed on an "AS IS" BASIS, | |||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
| * See the License for the specific language governing permissions and | |||||
| * limitations under the License. | |||||
| * | |||||
| */ | |||||
| package org.apache.tools.ant.util; | |||||
| import java.io.IOException; | |||||
| import java.io.OutputStream; | |||||
| /** | |||||
| * provide a concrete implementation of LineOrientedOutputStream | |||||
| * @since Ant 1.8.3 | |||||
| * | |||||
| */ | |||||
| public class LineOrientedOutputStreamRedirector | |||||
| extends | |||||
| LineOrientedOutputStream { | |||||
| private OutputStream stream; | |||||
| public LineOrientedOutputStreamRedirector(OutputStream stream) { | |||||
| this.stream = stream; | |||||
| } | |||||
| protected void processLine(String line) throws IOException { | |||||
| stream.write((line + System.getProperty("line.separator")).getBytes()); | |||||
| } | |||||
| public void close() throws IOException { | |||||
| super.close(); | |||||
| stream.close(); | |||||
| } | |||||
| public void flush() throws IOException { | |||||
| super.flush(); | |||||
| stream.flush(); | |||||
| } | |||||
| } | |||||