git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277573 13f79535-47bb-0310-9956-ffa450edef68master
@@ -198,6 +198,8 @@ Other changes: | |||||
* Added length task to get strings' and files' lengths. | * Added length task to get strings' and files' lengths. | ||||
* <natice2ascii> now also supports Kaffe's version. | |||||
Fixed bugs: | Fixed bugs: | ||||
----------- | ----------- | ||||
@@ -40,6 +40,15 @@ | |||||
and <code><patternset></code> elements. | and <code><patternset></code> elements. | ||||
</p> | </p> | ||||
<p>It is possible to use different converters. This can be selected | |||||
with the <code>implementation</code> attribute. | |||||
<a name="implementationvalues">Here are the choices</a>:</p> | |||||
<ul> | |||||
<li>default - the default converter (kaffe or sun) for the platform.</li> | |||||
<li>sun (the standard converter of the JDK)</li> | |||||
<li>kaffe (the standard converter of <a href="http://www.kaffe.org" target="_top">Kaffe</a>)</li> | |||||
</ul> | |||||
<table border="1" cellpadding="2" cellspacing="0"> | <table border="1" cellpadding="2" cellspacing="0"> | ||||
<tr> | <tr> | ||||
<td><b>Attribute</b></td> | <td><b>Attribute</b></td> | ||||
@@ -49,7 +58,8 @@ | |||||
<tr> | <tr> | ||||
<td>reverse</td> | <td>reverse</td> | ||||
<td>Reverse the sense of the conversion, | <td>Reverse the sense of the conversion, | ||||
i.e. convert from ASCII to native</td> | |||||
i.e. convert from ASCII to native <b>only supported by the | |||||
sun converter</b></td> | |||||
<td align="center">No</td> | <td align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -105,8 +115,57 @@ | |||||
taken to be an exclude pattern</td> | taken to be an exclude pattern</td> | ||||
<td align="center">No</td> | <td align="center">No</td> | ||||
</tr> | </tr> | ||||
<tr> | |||||
<td valign="top">implementation</td> | |||||
<td valign="top">The converter implementation to use. | |||||
If this attribute is not set, the default converter for the | |||||
current VM will be used. (See the above <a | |||||
href="#implementationvalues">list</a> of valid converters.)</td> | |||||
<td align="center" valign="top">No</td> | |||||
</tr> | |||||
</table> | </table> | ||||
<h3>Parameters specified as nested elements</h3> | |||||
<h4>arg</h4> | |||||
<p>You can specify additional command line arguments for the converter | |||||
with nested <code><arg></code> elements. These elements are | |||||
specified like <a href="../using.html#arg">Command-line Arguments</a> | |||||
but have an additional attribute that can be used to enable arguments | |||||
only if a given converter implementation will be used.</p> | |||||
<table border="1" cellpadding="2" cellspacing="0"> | |||||
<tr> | |||||
<td width="12%" valign="top"><b>Attribute</b></td> | |||||
<td width="78%" valign="top"><b>Description</b></td> | |||||
<td width="10%" valign="top"><b>Required</b></td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">value</td> | |||||
<td align="center" rowspan="4">See | |||||
<a href="../using.html#arg">Command-line Arguments</a>.</td> | |||||
<td align="center" rowspan="4">Exactly one of these.</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">line</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">file</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">path</td> | |||||
</tr> | |||||
<tr> | |||||
<td valign="top">implementation</td> | |||||
<td>Only pass the specified argument if the chosen converter | |||||
implementation matches the value of this attribute. Legal values | |||||
are the same as those in the above <a | |||||
href="#implementationvalues">list</a> of valid compilers.)</td> | |||||
<td align="center">No</td> | |||||
</tr> | |||||
</table> | |||||
<h3>Examples</h3> | <h3>Examples</h3> | ||||
<pre> | <pre> | ||||
@@ -133,6 +192,6 @@ | |||||
</p> | </p> | ||||
</body> | </body> | ||||
<hr> | <hr> | ||||
<p align="center">Copyright © 2000-2002,2004 The Apache Software Foundation. All rights | |||||
<p align="center">Copyright © 2000-2002,2004-2005 The Apache Software Foundation. All rights | |||||
Reserved.</p> | Reserved.</p> | ||||
</html> | </html> |
@@ -29,6 +29,8 @@ import org.apache.tools.ant.types.Mapper; | |||||
import org.apache.tools.ant.util.FileNameMapper; | import org.apache.tools.ant.util.FileNameMapper; | ||||
import org.apache.tools.ant.util.IdentityMapper; | import org.apache.tools.ant.util.IdentityMapper; | ||||
import org.apache.tools.ant.util.SourceFileScanner; | import org.apache.tools.ant.util.SourceFileScanner; | ||||
import org.apache.tools.ant.util.facade.FacadeTaskHelper; | |||||
import org.apache.tools.ant.util.facade.ImplementationSpecificArgument; | |||||
/** | /** | ||||
* Converts files from native encodings to ASCII. | * Converts files from native encodings to ASCII. | ||||
@@ -44,6 +46,11 @@ public class Native2Ascii extends MatchingTask { | |||||
private String extension = null; // Extension of output files if different | private String extension = null; // Extension of output files if different | ||||
private Mapper mapper; | private Mapper mapper; | ||||
private FacadeTaskHelper facade = null; | |||||
public Native2Ascii() { | |||||
facade = new FacadeTaskHelper(Native2AsciiAdapterFactory.getDefault()); | |||||
} | |||||
/** | /** | ||||
* Flag the conversion to run in the reverse sense, | * Flag the conversion to run in the reverse sense, | ||||
@@ -114,6 +121,19 @@ public class Native2Ascii extends MatchingTask { | |||||
this.extension = ext; | this.extension = ext; | ||||
} | } | ||||
/** | |||||
* Choose the implementation for this particular task. | |||||
* @param compiler the name of the compiler | |||||
* @since Ant 1.6.3 | |||||
*/ | |||||
public void setImplementation(String impl) { | |||||
if ("default".equals(impl)) { | |||||
facade.setImplementation(Native2AsciiAdapterFactory.getDefault()); | |||||
} else { | |||||
facade.setImplementation(impl); | |||||
} | |||||
} | |||||
/** | /** | ||||
* Defines the FileNameMapper to use (nested mapper element). | * Defines the FileNameMapper to use (nested mapper element). | ||||
* | * | ||||
@@ -139,6 +159,18 @@ public class Native2Ascii extends MatchingTask { | |||||
createMapper().add(fileNameMapper); | createMapper().add(fileNameMapper); | ||||
} | } | ||||
/** | |||||
* Adds an implementation specific command-line argument. | |||||
* @return a ImplementationSpecificArgument to be configured | |||||
* | |||||
* @since Ant 1.6.3 | |||||
*/ | |||||
public ImplementationSpecificArgument createArg() { | |||||
ImplementationSpecificArgument arg = | |||||
new ImplementationSpecificArgument(); | |||||
facade.addImplementationArgument(arg); | |||||
return arg; | |||||
} | |||||
/** | /** | ||||
* Execute the task | * Execute the task | ||||
@@ -230,12 +262,23 @@ public class Native2Ascii extends MatchingTask { | |||||
log("converting " + srcName, Project.MSG_VERBOSE); | log("converting " + srcName, Project.MSG_VERBOSE); | ||||
Native2AsciiAdapter ad = | Native2AsciiAdapter ad = | ||||
Native2AsciiAdapterFactory.getAdapter(null, this); | |||||
Native2AsciiAdapterFactory.getAdapter(facade.getImplementation(), | |||||
this); | |||||
if (!ad.convert(this, srcFile, destFile)) { | if (!ad.convert(this, srcFile, destFile)) { | ||||
throw new BuildException("conversion failed"); | throw new BuildException("conversion failed"); | ||||
} | } | ||||
} | } | ||||
/** | |||||
* Returns the (implementation specific) settings given as nested | |||||
* arg elements. | |||||
* | |||||
* @since Ant 1.6.3 | |||||
*/ | |||||
public String[] getCurrentArgs() { | |||||
return facade.getArgs(); | |||||
} | |||||
private class ExtMapper implements FileNameMapper { | private class ExtMapper implements FileNameMapper { | ||||
public void setFrom(String s) { | public void setFrom(String s) { | ||||
@@ -50,7 +50,8 @@ public abstract class DefaultNative2Ascii implements Native2AsciiAdapter { | |||||
/** | /** | ||||
* Sets up the initial command line. | * Sets up the initial command line. | ||||
* | * | ||||
* <p>only the -encoding argument gets handled here.</p> | |||||
* <p>only the -encoding argument and nested arg elements get | |||||
* handled here.</p> | |||||
* | * | ||||
* @param cmd Command line to add to | * @param cmd Command line to add to | ||||
* @param args provides the user-setting and access to Ant's | * @param args provides the user-setting and access to Ant's | ||||
@@ -62,6 +63,7 @@ public abstract class DefaultNative2Ascii implements Native2AsciiAdapter { | |||||
cmd.createArgument().setValue("-encoding"); | cmd.createArgument().setValue("-encoding"); | ||||
cmd.createArgument().setValue(args.getEncoding()); | cmd.createArgument().setValue(args.getEncoding()); | ||||
} | } | ||||
cmd.addArguments(args.getCurrentArgs()); | |||||
} | } | ||||
/** | /** | ||||