summaryrefslogtreecommitdiff
path: root/src/main/org/apache
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/org/apache')
-rw-r--r--src/main/org/apache/tools/ant/taskdefs/PathConvert.java42
1 files changed, 32 insertions, 10 deletions
diff --git a/src/main/org/apache/tools/ant/taskdefs/PathConvert.java b/src/main/org/apache/tools/ant/taskdefs/PathConvert.java
index be46bbdd2..cc7581de0 100644
--- a/src/main/org/apache/tools/ant/taskdefs/PathConvert.java
+++ b/src/main/org/apache/tools/ant/taskdefs/PathConvert.java
@@ -37,6 +37,7 @@ import org.apache.tools.ant.types.EnumeratedAttribute;
import org.apache.tools.ant.types.Mapper;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
+import org.apache.tools.ant.types.Resource;
import org.apache.tools.ant.types.ResourceCollection;
import org.apache.tools.ant.types.resources.Resources;
import org.apache.tools.ant.types.resources.Union;
@@ -62,19 +63,19 @@ public class PathConvert extends Task {
/**
* Path to be converted
*/
- private Resources path = null;
+ private Resources path;
/**
* Reference to path/fileset to convert
*/
- private Reference refid = null;
+ private Reference refid;
/**
* The target OS type
*/
- private String targetOS = null;
+ private String targetOS;
/**
* Set when targetOS is set to windows
*/
- private boolean targetWindows = false;
+ private boolean targetWindows;
/**
* Set if we should create a new property even if the result is empty
*/
@@ -82,7 +83,7 @@ public class PathConvert extends Task {
/**
* The property to receive the conversion
*/
- private String property = null;
+ private String property;
/**
* Path prefix map
*/
@@ -90,17 +91,20 @@ public class PathConvert extends Task {
/**
* User override on path sep char
*/
- private String pathSep = null;
+ private String pathSep;
/**
* User override on directory sep char
*/
- private String dirSep = null;
+ private String dirSep;
/** Filename mapper */
- private Mapper mapper = null;
+ private Mapper mapper;
private boolean preserveDuplicates;
+ /** Destination {@link Resource} */
+ private Resource dest;
+
/**
* Helper class, holds the nested <map> values. Elements will look like
* this: <map from="d:" to="/foo"/>
@@ -328,6 +332,19 @@ public class PathConvert extends Task {
}
/**
+ * Set destination resource.
+ * @param dest
+ */
+ public void setDest(Resource dest) {
+ if (dest != null) {
+ if (this.dest != null) {
+ throw new BuildException("@dest already set");
+ }
+ }
+ this.dest = dest;
+ }
+
+ /**
* Do the execution.
* @throws BuildException if something is invalid.
*/
@@ -370,7 +387,10 @@ public class PathConvert extends Task {
}
}
- private OutputStream createOutputStream() {
+ private OutputStream createOutputStream() throws IOException {
+ if (dest != null) {
+ return dest.getOutputStream();
+ }
if (property == null) {
return new LogOutputStream(this);
}
@@ -451,10 +471,12 @@ public class PathConvert extends Task {
* @throws BuildException if something is not set up properly.
*/
private void validateSetup() throws BuildException {
-
if (path == null) {
throw new BuildException("You must specify a path to convert");
}
+ if (property != null && dest != null) {
+ throw new BuildException("@property and @dest are mutually exclusive");
+ }
// Determine the separator strings. The dirsep and pathsep attributes
// override the targetOS settings.
String dsep = File.separator;