diff --git a/WHATSNEW b/WHATSNEW index 71e4173d2..fb1579a51 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -190,6 +190,8 @@ Other changes: * supports an "output" Resource attribute as an alternative to "file". + * "output" attribute now supports any Resource in addition to a file. + Changes from Ant 1.7.0 TO Ant 1.7.1 ============================================= diff --git a/docs/manual/CoreTasks/sql.html b/docs/manual/CoreTasks/sql.html index 8c2e05ba4..71b13c4a0 100644 --- a/docs/manual/CoreTasks/sql.html +++ b/docs/manual/CoreTasks/sql.html @@ -117,7 +117,10 @@ and abort execution and transaction and fail task.

output - Output file for result sets (defaults to System.out) + Output file for result sets (defaults to System.out) + Since Ant 1.8 can specify any Resource that supports output (see + note). + No (print to System.out by default) diff --git a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java index aa498faab..8ed207dfb 100644 --- a/src/main/org/apache/tools/ant/taskdefs/SQLExec.java +++ b/src/main/org/apache/tools/ant/taskdefs/SQLExec.java @@ -25,10 +25,12 @@ import org.apache.tools.ant.types.EnumeratedAttribute; import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.Resource; import org.apache.tools.ant.types.ResourceCollection; +import org.apache.tools.ant.types.resources.FileProvider; import org.apache.tools.ant.types.resources.FileResource; import org.apache.tools.ant.types.resources.Union; import java.io.File; +import java.io.OutputStream; import java.io.PrintStream; import java.io.BufferedOutputStream; import java.io.FileOutputStream; @@ -153,10 +155,9 @@ public class SQLExec extends JDBCTask { private boolean showtrailers = true; /** - * Results Output file. + * Results Output Resource. */ - private File output = null; - + private Resource output = null; /** * Action to perform if an error is found @@ -392,6 +393,15 @@ public class SQLExec extends JDBCTask { * @param output the output file to use for logging messages. */ public void setOutput(File output) { + setOutput(new FileResource(getProject(), output)); + } + + /** + * Set the output Resource; + * optional, defaults to the Ant log. + * @param output the output Resource to store results. + */ + public void setOutput(Resource output) { this.output = output; } @@ -556,9 +566,17 @@ public class SQLExec extends JDBCTask { PrintStream out = System.out; try { if (output != null) { - log("Opening PrintStream to output file " + output, Project.MSG_VERBOSE); - out = new PrintStream(new BufferedOutputStream( - new FileOutputStream(output.getAbsolutePath(), append))); + log("Opening PrintStream to output Resource " + output, Project.MSG_VERBOSE); + OutputStream os; + if (output instanceof FileProvider) { + os = new FileOutputStream(((FileProvider) output).getFile(), append); + } else { + os = output.getOutputStream(); + if (append) { + log("Ignoring append=true for non-file resource " + output, Project.MSG_WARN); + } + } + out = new PrintStream(new BufferedOutputStream(os)); } // Process all transactions