bodewig     2003/08/04 05:11:37

  Modified:    .        WHATSNEW
               docs     external.html
               src/etc/testcases/taskdefs unzip.xml zip.xml
               src/main/org/apache/tools/ant/taskdefs Zip.java
               src/main/org/apache/tools/zip ZipOutputStream.java
               src/testcases/org/apache/tools/ant/taskdefs UnzipTest.java
  Log:
  Only calculate the CRC of STORED entries in <zip> if absolutely necessary.
  
  PR: 21899
  
  Revision  Changes    Path
  1.477     +3 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.476
  retrieving revision 1.477
  diff -u -r1.476 -r1.477
  --- WHATSNEW  1 Aug 2003 06:45:01 -0000       1.476
  +++ WHATSNEW  4 Aug 2003 12:11:37 -0000       1.477
  @@ -548,6 +548,9 @@
     <parallel> to throw an exception if any thread fails without
     waiting for all other threads to complete.
   
  +* <zip> and friends will consume far less memory than they used to
  +  when run with compress="false".  Bugzilla Report 21899.
  +
   Changes from Ant 1.5.2 to Ant 1.5.3
   ===================================
   
  
  
  
  1.126     +37 -0     ant/docs/external.html
  
  Index: external.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/external.html,v
  retrieving revision 1.125
  retrieving revision 1.126
  diff -u -r1.125 -r1.126
  --- external.html     1 Aug 2003 12:28:22 -0000       1.125
  +++ external.html     4 Aug 2003 12:11:37 -0000       1.126
  @@ -3893,6 +3893,43 @@
         </td>
         </tr>
           </table>
  +                                                    <h4 class="subsection">
  +        <a name="Zelix KlassMaster Java Obfuscator"></a>
  +        Zelix KlassMaster Java Obfuscator
  +      </h4>
  +                        <p>The task ZKMTask allows the Zelix KlassMaster 
Java obfuscator to be integrated into an Ant build.</p>
  +                                      <table class="externals" 
cellspacing="1" cellpadding="4">
  +              <tr>
  +                      <th colspan="1" rowspan="1"
  +      valign="top" align="left">
  +          Compatibility:
  +      </th>
  +                          <td colspan="1" rowspan="1"
  +      valign="top" align="left">
  +          Ant 1.4.1
  +      </td>
  +      </tr>
  +                  <tr>
  +                      <th colspan="1" rowspan="1"
  +      valign="top" align="left">
  +          URL:
  +      </th>
  +                          <td colspan="1" rowspan="1"
  +      valign="top" align="left">
  +          <a 
href="http://www.zelix.com/klassmaster/docs/buildToolApi.html";>Zelix 
KlassMaster Ant Task</a>
  +      </td>
  +      </tr>
  +                  <tr>
  +                      <th colspan="1" rowspan="1"
  +      valign="top" align="left">
  +          License:
  +      </th>
  +                          <td colspan="1" rowspan="1"
  +      valign="top" align="left">
  +          Commercial
  +      </td>
  +      </tr>
  +        </table>
                                 
       </div>
     </div>
  
  
  
  1.8       +6 -0      ant/src/etc/testcases/taskdefs/unzip.xml
  
  Index: unzip.xml
  ===================================================================
  RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/unzip.xml,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- unzip.xml 3 Jul 2003 13:02:01 -0000       1.7
  +++ unzip.xml 4 Aug 2003 12:11:37 -0000       1.8
  @@ -27,6 +27,12 @@
       <ant antfile="zip.xml" target="cleanup" />
     </target>
   
  +  <target name="testUncompressedZipTask">
  +    <ant antfile="zip.xml" target="uncompressed-feather" />
  +    <unzip src="asf-logo.gif.zip" dest="." />
  +    <ant antfile="zip.xml" target="cleanup" />
  +  </target>
  +
     <target name="realTest">
       <unzip src="expected/asf-logo.gif.zip" dest="." />
     </target>
  
  
  
  1.13      +6 -0      ant/src/etc/testcases/taskdefs/zip.xml
  
  Index: zip.xml
  ===================================================================
  RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/zip.xml,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- zip.xml   2 May 2003 14:24:57 -0000       1.12
  +++ zip.xml   4 Aug 2003 12:11:37 -0000       1.13
  @@ -55,6 +55,12 @@
            includes="asf-logo.gif" />
     </target>
   
  +  <target name="uncompressed-feather">
  +    <zip destFile="asf-logo.gif.zip"
  +         basedir=".."
  +         includes="asf-logo.gif" compress="false"/>
  +  </target>
  +
     <!-- legacy attribute support -->
     <target name="test8">
       <zip zipfile="test8.zip" basedir="." >
  
  
  
  1.113     +2 -6      ant/src/main/org/apache/tools/ant/taskdefs/Zip.java
  
  Index: Zip.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Zip.java,v
  retrieving revision 1.112
  retrieving revision 1.113
  diff -u -r1.112 -r1.113
  --- Zip.java  30 Jul 2003 12:23:10 -0000      1.112
  +++ Zip.java  4 Aug 2003 12:11:37 -0000       1.113
  @@ -977,15 +977,11 @@
               /*
               * ZipOutputStream.putNextEntry expects the ZipEntry to
               * know its size and the CRC sum before you start writing
  -            * the data when using STORED mode.
  +            * the data when using STORED mode - unless it is seekable.
               *
               * This forces us to process the data twice.
  -            *
  -            * In DEFLATED mode, it will take advantage of a Zip
  -            * Version 2 feature where size can be stored after the
  -            * data (as the data itself signals end of data).
               */
  -            if (!doCompress) {
  +            if (!zOut.isSeekable() && !doCompress) {
                   long size = 0;
                   CRC32 cal = new CRC32();
                   if (!in.markSupported()) {
  
  
  
  1.17      +20 -6     ant/src/main/org/apache/tools/zip/ZipOutputStream.java
  
  Index: ZipOutputStream.java
  ===================================================================
  RCS file: /home/cvs/ant/src/main/org/apache/tools/zip/ZipOutputStream.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ZipOutputStream.java      22 Jul 2003 12:13:10 -0000      1.16
  +++ ZipOutputStream.java      4 Aug 2003 12:11:37 -0000       1.17
  @@ -80,12 +80,12 @@
    * file.</p>
    *
    * <p>If RandomAccessFile cannot be used, this implementation will use
  - * a Data Descriptor to store size and
  - * CRC information for DEFLATED entries, this means, you don't need to
  + * a Data Descriptor to store size and CRC information for [EMAIL PROTECTED]
  + * #DEFLATED DEFLATED} entries, this means, you don't need to
    * calculate them yourself.  Unfortunately this is not possible for
  - * the STORED method, here setting the CRC and uncompressed size
  - * information is required before [EMAIL PROTECTED] #putNextEntry 
putNextEntry}
  - * will be called.</p>
  + * the [EMAIL PROTECTED] #STORED STORED} method, here setting the CRC and
  + * uncompressed size information is required before [EMAIL PROTECTED]
  + * #putNextEntry putNextEntry} can be called.</p>
    *
    * @author Stefan Bodewig
    * @author Richard Evans
  @@ -288,6 +288,20 @@
               }
               out = new FileOutputStream(file);
           }
  +    }
  +
  +    /**
  +     * Is this archive writing to a seekable stream (i.e. a random
  +     * access file)?
  +     *
  +     * <p>For seekable streams, you don't need to calculate the CRC or
  +     * uncompressed size for [EMAIL PROTECTED] #STORED STORED} entries before
  +     * invoking [EMAIL PROTECTED] #putEntry putEntry}.
  +     *
  +     * @since 1.17
  +     */
  +    public boolean isSeekable() {
  +        return raf != null;
       }
   
       /**
  
  
  
  1.13      +7 -0      
ant/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java
  
  Index: UnzipTest.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/UnzipTest.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- UnzipTest.java    3 Jul 2003 13:02:01 -0000       1.12
  +++ UnzipTest.java    4 Aug 2003 12:11:37 -0000       1.13
  @@ -101,6 +101,13 @@
                                              
project.resolveFile("asf-logo.gif")));
       }
       
  +    public void testTestUncompressedZipTask() throws java.io.IOException {
  +        FileUtils fileUtils = FileUtils.newFileUtils();
  +        executeTarget("testUncompressedZipTask");
  +        
assertTrue(fileUtils.contentEquals(project.resolveFile("../asf-logo.gif"),
  +                                           
project.resolveFile("asf-logo.gif")));
  +    }
  +    
       /*
        * PR 11100
        */
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to