diff --git a/CONTRIBUTORS b/CONTRIBUTORS index dd5f77880..268a994a1 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -21,6 +21,7 @@ Bruce Atherton Charles Hudak Charlie Hubbard Chris Povirk +Christian Knorr Christoph Wilhelms Christophe Labouisse Christopher A. Longo diff --git a/WHATSNEW b/WHATSNEW index ba0d5d748..c35d7e1ac 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -156,6 +156,8 @@ Fixed bugs: * and didn't close the session. Bugzilla Report 25935. +* and XmlLogger didn't play nicley together. + Other changes: -------------- * doc fix concerning the dependencies of the ftp task diff --git a/src/main/org/apache/tools/ant/taskdefs/SubAnt.java b/src/main/org/apache/tools/ant/taskdefs/SubAnt.java index 6c109565f..ba03b3719 100644 --- a/src/main/org/apache/tools/ant/taskdefs/SubAnt.java +++ b/src/main/org/apache/tools/ant/taskdefs/SubAnt.java @@ -61,6 +61,7 @@ public class SubAnt private Path buildpath; + private Ant ant = null; private String target = null; private String antfile = "build.xml"; private File genericantfile = null; @@ -72,6 +73,90 @@ public class SubAnt private Vector properties = new Vector(); private Vector references = new Vector(); private Vector propertySets = new Vector(); + + /** + * Pass output sent to System.out to the new project. + * + * @param output a line of output + * @since Ant 1.6.2 + */ + public void handleOutput(String output) { + if (ant != null) { + ant.handleOutput(output); + } else { + super.handleOutput(output); + } + } + + /** + * Process input into the ant task + * + * @param buffer the buffer into which data is to be read. + * @param offset the offset into the buffer at which data is stored. + * @param length the amount of data to read + * + * @return the number of bytes read + * + * @exception IOException if the data cannot be read + * + * @see Task#handleInput(byte[], int, int) + * + * @since Ant 1.6.2 + */ + public int handleInput(byte[] buffer, int offset, int length) + throws IOException { + if (ant != null) { + return ant.handleInput(buffer, offset, length); + } else { + return super.handleInput(buffer, offset, length); + } + } + + /** + * Pass output sent to System.out to the new project. + * + * @param output The output to log. Should not be null. + * + * @since Ant 1.6.2 + */ + public void handleFlush(String output) { + if (ant != null) { + ant.handleFlush(output); + } else { + super.handleFlush(output); + } + } + + /** + * Pass output sent to System.err to the new project. + * + * @param output The error output to log. Should not be null. + * + * @since Ant 1.6.2 + */ + public void handleErrorOutput(String output) { + if (ant != null) { + ant.handleErrorOutput(output); + } else { + super.handleErrorOutput(output); + } + } + + /** + * Pass output sent to System.err to the new project. + * + * @param output The error output to log. Should not be null. + * + * @since Ant 1.6.2 + */ + public void handleErrorFlush(String output) { + if (ant != null) { + ant.handleErrorFlush(output); + } else { + super.handleErrorFlush(output); + } + } + /** * Runs the various sub-builds. */ @@ -167,7 +252,7 @@ public class SubAnt return; } - Ant ant = createAntTask(directory); + ant = createAntTask(directory); String antfilename = null; try { antfilename = file.getCanonicalPath(); @@ -193,7 +278,9 @@ public class SubAnt + "' of: " + antfilename + "\n" + e.toString(), Project.MSG_WARN); - } + } finally { + ant = null; + } } /** diff --git a/src/main/org/apache/tools/ant/util/XMLFragment.java b/src/main/org/apache/tools/ant/util/XMLFragment.java index 7d419e00c..ba714cd0a 100644 --- a/src/main/org/apache/tools/ant/util/XMLFragment.java +++ b/src/main/org/apache/tools/ant/util/XMLFragment.java @@ -87,7 +87,7 @@ public class XMLFragment implements DynamicConfiguratorNS { } } - public class Child implements DynamicConfiguratorNS { + public class Child implements DynamicConfiguratorNS { private Element e; Child(Element e) {