conor 2003/03/22 01:53:16
Modified: docs/manual/CoreTasks Tag: ANT_15_BRANCH jar.html manifest.html src/main/org/apache/tools/ant/taskdefs Tag: ANT_15_BRANCH Jar.java ManifestTask.java Log: Merge Revision Changes Path No revision No revision 1.16.2.7 +5 -0 ant/docs/manual/CoreTasks/jar.html Index: jar.html =================================================================== RCS file: /home/cvs/ant/docs/manual/CoreTasks/jar.html,v retrieving revision 1.16.2.6 retrieving revision 1.16.2.7 diff -u -w -u -r1.16.2.6 -r1.16.2.7 --- jar.html 19 Feb 2003 08:13:58 -0000 1.16.2.6 +++ jar.html 22 Mar 2003 09:53:15 -0000 1.16.2.7 @@ -144,6 +144,11 @@ <td valign="top">whether to create an <A HREF="http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html#JAR%20Index">index list</A> to speed up classloading. This is a JDK 1.3+ specific feature. Defaults to false. </td> <td valign="top" align="center">No</td> </tr> + <tr> + <td valign="top">manifestencoding</td> + <td valign="top">The encoding used to read the JAR manifest, when a manifest file is specified.</td> + <td valign="top" align="center">No, defaults to the platform encoding.</td> + </tr> </table> <h3>Nested elements</h3> 1.4.2.3 +5 -0 ant/docs/manual/CoreTasks/manifest.html Index: manifest.html =================================================================== RCS file: /home/cvs/ant/docs/manual/CoreTasks/manifest.html,v retrieving revision 1.4.2.2 retrieving revision 1.4.2.3 diff -u -w -u -r1.4.2.2 -r1.4.2.3 --- manifest.html 4 Sep 2002 11:21:12 -0000 1.4.2.2 +++ manifest.html 22 Mar 2003 09:53:15 -0000 1.4.2.3 @@ -39,6 +39,11 @@ <td valign="top">One of "update" or "replace", default is "replace".</td> <td valign="top" align="center">No</td> </tr> + <tr> + <td valign="top">encoding</td> + <td valign="top">The encoding used to read the existing manifest when updating.</td> + <td valign="top" align="center">No, defaults to UTF-8 encoding.</td> + </tr> </table> <h3>Nested elements</h3> No revision No revision 1.51.2.18 +45 -7 ant/src/main/org/apache/tools/ant/taskdefs/Jar.java Index: Jar.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Jar.java,v retrieving revision 1.51.2.17 retrieving revision 1.51.2.18 diff -u -w -u -r1.51.2.17 -r1.51.2.18 --- Jar.java 12 Mar 2003 11:29:10 -0000 1.51.2.17 +++ Jar.java 22 Mar 2003 09:53:15 -0000 1.51.2.18 @@ -61,6 +61,7 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.io.UnsupportedEncodingException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; @@ -129,6 +130,9 @@ /** the manifest specified by the 'manifest' attribute **/ private Manifest manifest; + /** The encoding to use when reading in a manifest file */ + private String manifestEncoding; + /** * The file found from the 'manifest' attribute. This can be * either the location of a manifest, or the name of a jar added @@ -178,6 +182,14 @@ } /** + * Set whether or not to create an index list for classes. + * This may speed up classloading in some cases. + */ + public void setManifestEncoding(String manifestEncoding) { + this.manifestEncoding = manifestEncoding; + } + + /** * Allows the manifest for the archive file to be provided inline * in the build file rather than in an external file. * @@ -217,8 +229,15 @@ InputStreamReader isr = null; try { fis = new FileInputStream(manifestFile); - isr = new InputStreamReader(fis, "UTF-8"); + if (manifestEncoding == null) { + isr = new InputStreamReader(fis); + } else { + isr = new InputStreamReader(fis, manifestEncoding); + } newManifest = getManifest(isr); + } catch (UnsupportedEncodingException e) { + throw new BuildException("Unsupported encoding while reading manifest: " + + e.getMessage(), e); } catch (IOException e) { throw new BuildException("Unable to read manifest file: " + manifestFile @@ -470,11 +489,22 @@ // If this is the same name specified in 'manifest', this // is the manifest to use log("Found manifest " + file, Project.MSG_VERBOSE); + try { if (is != null) { - manifest = getManifest(new InputStreamReader(is, "UTF-8")); + InputStreamReader isr; + if (manifestEncoding == null) { + isr = new InputStreamReader(is); + } else { + isr = new InputStreamReader(is, manifestEncoding); + } + manifest = getManifest(isr); } else { manifest = getManifest(file); } + } catch (UnsupportedEncodingException e) { + throw new BuildException("Unsupported encoding while reading " + + "manifest: " + e.getMessage(), e); + } } else if (filesetManifestConfig != null && !filesetManifestConfig.getValue().equals("skip")) { // we add this to our group of fileset manifests @@ -484,8 +514,13 @@ try { Manifest newManifest = null; if (is != null) { - newManifest - = getManifest(new InputStreamReader(is, "UTF-8")); + InputStreamReader isr; + if (manifestEncoding == null) { + isr = new InputStreamReader(is); + } else { + isr = new InputStreamReader(is, manifestEncoding); + } + newManifest = getManifest(isr); } else { newManifest = getManifest(file); } @@ -495,6 +530,9 @@ } else { filesetManifest.merge(newManifest); } + } catch (UnsupportedEncodingException e) { + throw new BuildException("Unsupported encoding while reading " + + "manifest: " + e.getMessage(), e); } catch (ManifestException e) { log("Manifest in file " + file + " is invalid: " + e.getMessage(), Project.MSG_ERR); 1.1.2.4 +18 -1 ant/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java Index: ManifestTask.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/ManifestTask.java,v retrieving revision 1.1.2.3 retrieving revision 1.1.2.4 diff -u -w -u -r1.1.2.3 -r1.1.2.4 --- ManifestTask.java 16 Feb 2003 03:24:43 -0000 1.1.2.3 +++ ManifestTask.java 22 Mar 2003 09:53:15 -0000 1.1.2.4 @@ -98,6 +98,11 @@ private Mode mode; /** + * The encoding of the manifest file + */ + private String encoding; + + /** * Helper class for Manifest's mode attribute. */ public static class Mode extends EnumeratedAttribute { @@ -150,6 +155,14 @@ } /** + * The encoding to use for reading in an existing manifest file + * @param encoding the maniofets file encoding. + */ + public void setEncoding(String encoding) { + this.encoding = encoding; + } + + /** * Update policy: either "update" or "replace"; default is "replace". * @param m the mode value - update or replace. */ @@ -176,7 +189,11 @@ InputStreamReader isr = null; try { fis = new FileInputStream(manifestFile); + if (encoding == null) { isr = new InputStreamReader(fis, "UTF-8"); + } else { + isr = new InputStreamReader(fis, encoding); + } current = new Manifest(isr); } catch (ManifestException m) { error = new BuildException("Existing manifest " + manifestFile