Browse Source

two more places where Appendable can be used

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@718486 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 16 years ago
parent
commit
b10fa1121f
3 changed files with 44 additions and 4 deletions
  1. +15
    -4
      src/main/org/apache/tools/ant/taskdefs/SQLExec.java
  2. +26
    -0
      src/main/org/apache/tools/ant/types/resources/ContentTransformingResource.java
  3. +3
    -0
      src/main/org/apache/tools/ant/types/resources/MappedResource.java

+ 15
- 4
src/main/org/apache/tools/ant/taskdefs/SQLExec.java View File

@@ -25,6 +25,7 @@ import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Resource; import org.apache.tools.ant.types.Resource;
import org.apache.tools.ant.types.ResourceCollection; import org.apache.tools.ant.types.ResourceCollection;
import org.apache.tools.ant.types.resources.Appendable;
import org.apache.tools.ant.types.resources.FileProvider; import org.apache.tools.ant.types.resources.FileProvider;
import org.apache.tools.ant.types.resources.FileResource; import org.apache.tools.ant.types.resources.FileResource;
import org.apache.tools.ant.types.resources.Union; import org.apache.tools.ant.types.resources.Union;
@@ -569,16 +570,26 @@ public class SQLExec extends JDBCTask {
try { try {
if (output != null) { if (output != null) {
log("Opening PrintStream to output Resource " + output, Project.MSG_VERBOSE); log("Opening PrintStream to output Resource " + output, Project.MSG_VERBOSE);
OutputStream os;
OutputStream os = null;
FileProvider fp = FileProvider fp =
(FileProvider) output.as(FileProvider.class); (FileProvider) output.as(FileProvider.class);
if (fp != null) { if (fp != null) {
os = new FileOutputStream(fp.getFile(), append); os = new FileOutputStream(fp.getFile(), append);
} else { } else {
// TODO use Appendable
os = output.getOutputStream();
if (append) { if (append) {
log("Ignoring append=true for non-file resource " + output, Project.MSG_WARN);
Appendable a =
(Appendable) output.as(Appendable.class);
if (a != null) {
os = a.getAppendOutputStream();
}
}
if (os == null) {
os = output.getOutputStream();
if (append) {
log("Ignoring append=true for non-appendable"
+ " resource " + output,
Project.MSG_WARN);
}
} }
} }
out = new PrintStream(new BufferedOutputStream(os)); out = new PrintStream(new BufferedOutputStream(os));


+ 26
- 0
src/main/org/apache/tools/ant/types/resources/ContentTransformingResource.java View File

@@ -251,6 +251,32 @@ public abstract class ContentTransformingResource extends Resource {
super.setRefid(r); super.setRefid(r);
} }


/**
* Suppress FileProvider, re-implement Appendable
*/
public Object as(Class clazz) {
if (Appendable.class.isAssignableFrom(clazz)) {
final Appendable a =
(Appendable) getResource().as(Appendable.class);
if (a != null) {
return new Appendable() {
public OutputStream getAppendOutputStream()
throws IOException {
OutputStream out = a.getAppendOutputStream();
if (out != null) {
out = wrapStream(out);
}
return out;
}
};
}
return null;
}

return FileProvider.class.isAssignableFrom(clazz)
? null : getResource().as(clazz);
}

/** /**
* Is supposed to wrap the stream. * Is supposed to wrap the stream.
* *


+ 3
- 0
src/main/org/apache/tools/ant/types/resources/MappedResource.java View File

@@ -159,6 +159,9 @@ public class MappedResource extends Resource {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }


/**
* Suppress FileProvider
*/
public Object as(Class clazz) { public Object as(Class clazz) {
return FileProvider.class.isAssignableFrom(clazz) return FileProvider.class.isAssignableFrom(clazz)
? null : wrapped.as(clazz); ? null : wrapped.as(clazz);


Loading…
Cancel
Save