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