Miscellaneous improvements to "jar".

Martin Buchholz martinrb at google.com
Thu Jun 25 19:00:32 UTC 2009

I have an updated version of this fix, with these changes:

- Documented the turkish i problem

     * Compares two strings for equality, ignoring case.  The second
     * argument must contain only upper-case ASCII characters.
     * We don't want case comparison to be locale-dependent (else we
     * have the notorious "turkish i bug").
    private boolean equalsIgnoreCase(String s, String upper) {

- Refactored code so that updateEntry now also sets the method to STORED.

         * Updates a ZipEntry which describes the data read by this
         * output stream, in STORED mode.
        public void updateEntry(ZipEntry e) {

- addIndex was never updating the size in the ZipEntry (as required),
  which was not previously noticed because closeEntry was never called.

    private void addIndex(JarIndex index, ZipOutputStream zos)
        throws IOException
        ZipEntry e = new ZipEntry(INDEX_NAME);
        if (flag0) {
            CRC32OutputStream os = new CRC32OutputStream(crc32);

Previous webrev:


On Wed, Jun 24, 2009 at 19:34, Martin Buchholz <martinrb at google.com> wrote:

> Hi jar team,
> I have a bunch of minor improvements to
>  src/share/classes/sun/tools/jar/Main.java
> Toby and Xueming, please review.
> Warning: the index code has not been maintained for many years.
> Xueming, please file a bug.
> Synopsis: Miscellaneous improvements to "jar".
> Description:
> - Use standard jdk coding style for javadoc
> - Don't create a temp file for jar index in STORED mode.
> - Don't use synchronized collections.
> - Fix javac warnings.
> - Don't define new names for things like INDEX_NAME;
>   use static import instead.
> - more efficiently compare special file names in update mode.
>   Update mode should be measurably faster.
> - make CRC32OutputStream a nested class.
>   refactor crc32.reset and updating entry into CRC32OutputStream.
> - Fix apparently benign bug updating n in CRC32OutputStream.write(byte[],
> int, int)
> Evaluation: Yep.
> http://cr.openjdk.java.net/~martin/jar-misc/<http://cr.openjdk.java.net/%7Emartin/jar-misc/>
> Thanks,
> Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/core-libs-dev/attachments/20090625/e13a5733/attachment.html>

More information about the core-libs-dev mailing list