@@ -19,6 +19,8 @@ package org.apache.tools.ant.taskdefs;
import java.io.File;
import java.io.File;
import java.util.StringTokenizer;
import java.util.StringTokenizer;
import java.util.Vector;
import java.util.Vector;
import java.util.List;
import java.util.ArrayList;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Task;
@@ -29,6 +31,8 @@ import org.apache.tools.ant.types.FileList;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
import org.apache.tools.ant.types.Reference;
import org.apache.tools.ant.types.Mapper;
import org.apache.tools.ant.util.FileNameMapper;
/**
/**
* Converts path and classpath information to a specific target OS
* Converts path and classpath information to a specific target OS
@@ -83,6 +87,9 @@ public class PathConvert extends Task {
*/
*/
private String dirSep = null;
private String dirSep = null;
/** Filename mapper */
private Mapper mapper = null;
/**
/**
* constructor
* constructor
*/
*/
@@ -352,6 +359,18 @@ public class PathConvert extends Task {
// Get the list of path components in canonical form
// Get the list of path components in canonical form
String[] elems = path.list();
String[] elems = path.list();
if (mapper != null) {
FileNameMapper impl = mapper.getImplementation();
List ret = new ArrayList();
for (int i = 0; i < elems.length; ++i) {
String[] mapped = impl.mapFileName(elems[i]);
for (int m = 0; mapped != null && m < mapped.length; ++m) {
ret.add(mapped[m]);
}
}
elems = (String[]) ret.toArray(new String[] {});
}
for (int i = 0; i < elems.length; i++) {
for (int i = 0; i < elems.length; i++) {
String elem = elems[i];
String elem = elems[i];
@@ -435,6 +454,18 @@ public class PathConvert extends Task {
return elem;
return elem;
}
}
/**
* Add a mapper to convert the file names.
*
* @param mapper a <code>Mapper</code> value
*/
public void addMapper(Mapper mapper) {
if (this.mapper != null) {
throw new BuildException(
"Cannot define more than one mapper");
}
this.mapper = mapper;
}
/**
/**
* Validate that all our parameters have been properly initialized.
* Validate that all our parameters have been properly initialized.