mbenson     2005/02/02 15:55:51

  Modified:    .        WHATSNEW
               docs/manual/CoreTasks zip.html ear.html jar.html war.html
               src/main/org/apache/tools/ant/taskdefs Zip.java
               src/etc/testcases/taskdefs zip.xml
               src/testcases/org/apache/tools/ant/taskdefs ZipTest.java
               src/main/org/apache/tools/zip ZipOutputStream.java
  Log:
  Added level attribute to zip & subclasses.
  PR: 25513
  
  Revision  Changes    Path
  1.739     +3 -0      ant/WHATSNEW
  
  Index: WHATSNEW
  ===================================================================
  RCS file: /home/cvs/ant/WHATSNEW,v
  retrieving revision 1.738
  retrieving revision 1.739
  diff -u -r1.738 -r1.739
  --- WHATSNEW  2 Feb 2005 20:08:57 -0000       1.738
  +++ WHATSNEW  2 Feb 2005 23:55:49 -0000       1.739
  @@ -101,6 +101,9 @@
   
   * mail task accepts nested header element.  Bugzilla report 24713.
   
  +* zip/jar/war/ear supports level attribute for deflate compression level.
  +  Bugzilla report 25513.
  +
   Changes from Ant 1.6.2 to current Ant 1.6 CVS version
   =====================================================
   
  
  
  
  1.30      +7 -0      ant/docs/manual/CoreTasks/zip.html
  
  Index: zip.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/manual/CoreTasks/zip.html,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- zip.html  21 Jan 2005 07:12:52 -0000      1.29
  +++ zip.html  2 Feb 2005 23:55:49 -0000       1.30
  @@ -189,6 +189,13 @@
       <td valign="top">Comment to store in the archive. <em>Since Ant 
1.6.3</em></td>
       <td valign="top" align="center">No</td>
     </tr>
  +  <tr>
  +    <td valign="top">level</td>
  +    <td valign="top">Non-default level at which file compression should be
  +    performed. Valid values range from 0 (no compression/fastest) to 9
  +    (maximum compression/slowest). <em>Since Ant 1.7</em></td>
  +    <td valign="top" align="center">No</td>
  +  </tr>
   </table>
   <h3>Parameters specified as nested elements</h3>
   <h4>fileset</h4>
  
  
  
  1.21      +7 -0      ant/docs/manual/CoreTasks/ear.html
  
  Index: ear.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/manual/CoreTasks/ear.html,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- ear.html  22 Nov 2004 22:53:50 -0000      1.20
  +++ ear.html  2 Feb 2005 23:55:49 -0000       1.21
  @@ -134,6 +134,13 @@
       Defaults to true.  <em>Since Ant 1.6.2</em></td>
       <td align="center" valign="top">No</td>
     </tr>
  +  <tr>
  +    <td valign="top">level</td>
  +    <td valign="top">Non-default level at which file compression should be
  +    performed. Valid values range from 0 (no compression/fastest) to 9
  +    (maximum compression/slowest). <em>Since Ant 1.7</em></td>
  +    <td valign="top" align="center">No</td>
  +  </tr>
   </table>
   <h3>Nested elements</h3>
   <h4>metainf</h4>
  
  
  
  1.34      +7 -0      ant/docs/manual/CoreTasks/jar.html
  
  Index: jar.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/manual/CoreTasks/jar.html,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- jar.html  22 Nov 2004 22:53:50 -0000      1.33
  +++ jar.html  2 Feb 2005 23:55:49 -0000       1.34
  @@ -194,6 +194,13 @@
       Defaults to true.  <em>Since Ant 1.6.2</em></td>
       <td align="center" valign="top">No</td>
     </tr>
  +  <tr>
  +    <td valign="top">level</td>
  +    <td valign="top">Non-default level at which file compression should be
  +    performed. Valid values range from 0 (no compression/fastest) to 9
  +    (maximum compression/slowest). <em>Since Ant 1.7</em></td>
  +    <td valign="top" align="center">No</td>
  +  </tr>
   </table>
   
   <h3>Nested elements</h3>
  
  
  
  1.25      +7 -0      ant/docs/manual/CoreTasks/war.html
  
  Index: war.html
  ===================================================================
  RCS file: /home/cvs/ant/docs/manual/CoreTasks/war.html,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- war.html  22 Nov 2004 22:53:50 -0000      1.24
  +++ war.html  2 Feb 2005 23:55:49 -0000       1.25
  @@ -141,6 +141,13 @@
       Defaults to true.  <em>Since Ant 1.6.2</em></td>
       <td align="center" valign="top">No</td>
     </tr>
  +  <tr>
  +    <td valign="top">level</td>
  +    <td valign="top">Non-default level at which file compression should be
  +    performed. Valid values range from 0 (no compression/fastest) to 9
  +    (maximum compression/slowest). <em>Since Ant 1.7</em></td>
  +    <td valign="top" align="center">No</td>
  +  </tr>
   </table>
   <h3>Nested elements</h3>
   <h4>lib</h4>
  
  
  
  1.135     +30 -12    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.134
  retrieving revision 1.135
  diff -u -r1.134 -r1.135
  --- Zip.java  18 Jan 2005 12:48:57 -0000      1.134
  +++ Zip.java  2 Feb 2005 23:55:50 -0000       1.135
  @@ -120,6 +120,8 @@
        */
       private String comment = "";
   
  +    private int level = ZipOutputStream.DEFAULT_COMPRESSION;
  +
       /**
        * This is the name/location of where to
        * create the .zip file.
  @@ -336,6 +338,25 @@
       }
   
       /**
  +     * Set the compression level to use.  Default is
  +     * ZipOutputStream.DEFAULT_COMPRESSION.
  +     * @param level compression level.
  +     * @since Ant 1.7
  +     */
  +    public void setLevel(int level) {
  +        this.level = level;
  +    }
  +
  +    /**
  +     * Get the compression level.
  +     * @return compression level.
  +     * @since Ant 1.7
  +     */
  +    public int getLevel() {
  +        return level;
  +    }
  +
  +    /**
        * Whether the file modification times will be rounded up to the
        * next even number of seconds.
        *
  @@ -481,16 +502,13 @@
   
               ZipOutputStream zOut = null;
               try {
  -
                   if (!skipWriting) {
                       zOut = new ZipOutputStream(zipFile);
   
                       zOut.setEncoding(encoding);
  -                    if (doCompress) {
  -                        zOut.setMethod(ZipOutputStream.DEFLATED);
  -                    } else {
  -                        zOut.setMethod(ZipOutputStream.STORED);
  -                    }
  +                    zOut.setMethod(doCompress
  +                        ? ZipOutputStream.DEFLATED : ZipOutputStream.STORED);
  +                    zOut.setLevel(level);
                   }
                   initZipOutputStream(zOut);
   
  @@ -1080,12 +1098,12 @@
               ze.setMethod(doCompress ? ZipEntry.DEFLATED : ZipEntry.STORED);
   
               /*
  -            * ZipOutputStream.putNextEntry expects the ZipEntry to
  -            * know its size and the CRC sum before you start writing
  -            * the data when using STORED mode - unless it is seekable.
  -            *
  -            * This forces us to process the data twice.
  -            */
  +             * ZipOutputStream.putNextEntry expects the ZipEntry to
  +             * know its size and the CRC sum before you start writing
  +             * the data when using STORED mode - unless it is seekable.
  +             *
  +             * This forces us to process the data twice.
  +             */
               if (!zOut.isSeekable() && !doCompress) {
                   long size = 0;
                   CRC32 cal = new CRC32();
  
  
  
  1.17      +17 -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.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- zip.xml   27 Dec 2004 10:15:05 -0000      1.16
  +++ zip.xml   2 Feb 2005 23:55:51 -0000       1.17
  @@ -139,6 +139,23 @@
         <zip destfile="test3.zip" basedir="empty" whenempty="create" 
includes="*.xyz"/>
     </target>
   
  +  <target name="testCompressionLevel" depends="test6">
  +    <length property="test6.length" file="test6.zip" />
  +    <zip destFile="testLevel.zip" basedir="." level="9">
  +      <include name="*.xml" />
  +      <exclude name="zip.*" />
  +    </zip>
  +    <fail>
  +      <condition>
  +        <not>
  +          <isfileselected file="testLevel.zip">
  +            <size when="less" value="${test6.length}" />
  +          </isfileselected>
  +        </not>
  +      </condition>
  +    </fail>
  +  </target>
  +
     <target name="cleanup">
       <delete file="test3.zip"/>
       <delete file="test4.zip"/>
  
  
  
  1.24      +4 -1      
ant/src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java
  
  Index: ZipTest.java
  ===================================================================
  RCS file: 
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/ZipTest.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ZipTest.java      27 Dec 2004 10:15:05 -0000      1.23
  +++ ZipTest.java      2 Feb 2005 23:55:51 -0000       1.24
  @@ -143,6 +143,9 @@
           executeTarget("zipEmptyCreate");
           assertTrue("archive should be created",
                      getProject().resolveFile("test3.zip").exists());
  -
  +    }
  +    // Bugzilla Report 25513
  +    public void testCompressionLevel() {
  +        executeTarget("testCompressionLevel");
       }
   }
  
  
  
  1.33      +33 -20    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.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- ZipOutputStream.java      6 Jan 2005 18:27:36 -0000       1.32
  +++ ZipOutputStream.java      2 Feb 2005 23:55:51 -0000       1.33
  @@ -55,6 +55,27 @@
   public class ZipOutputStream extends FilterOutputStream {
   
       /**
  +     * Compression method for deflated entries.
  +     *
  +     * @since 1.1
  +     */
  +    public static final int DEFLATED = java.util.zip.ZipEntry.DEFLATED;
  +
  +    /**
  +     * Default compression level for deflated entries.
  +     *
  +     * @since Ant 1.7
  +     */
  +    public static final int DEFAULT_COMPRESSION = 
Deflater.DEFAULT_COMPRESSION;
  +
  +    /**
  +     * Compression method for stored entries.
  +     *
  +     * @since 1.1
  +     */
  +    public static final int STORED = java.util.zip.ZipEntry.STORED;
  +
  +    /**
        * Current entry.
        *
        * @since 1.1
  @@ -73,7 +94,7 @@
        *
        * @since 1.1
        */
  -    private int level = Deflater.DEFAULT_COMPRESSION;
  +    private int level = DEFAULT_COMPRESSION;
   
       /**
        * Has the compression level changed when compared to the last
  @@ -182,7 +203,7 @@
        *
        * @since 1.14
        */
  -    protected Deflater def = new Deflater(Deflater.DEFAULT_COMPRESSION, 
true);
  +    protected Deflater def = new Deflater(level, true);
   
       /**
        * This buffer servers as a Deflater.
  @@ -204,20 +225,6 @@
       private RandomAccessFile raf = null;
   
       /**
  -     * Compression method for deflated entries.
  -     *
  -     * @since 1.1
  -     */
  -    public static final int DEFLATED = java.util.zip.ZipEntry.DEFLATED;
  -
  -    /**
  -     * Compression method for stored entries.
  -     *
  -     * @since 1.1
  -     */
  -    public static final int STORED = java.util.zip.ZipEntry.STORED;
  -
  -    /**
        * Creates a new ZIP OutputStream filtering the underlying stream.
        * @param out the outputstream to zip
        * @since 1.1
  @@ -430,10 +437,16 @@
        * Sets the compression level for subsequent entries.
        *
        * <p>Default is Deflater.DEFAULT_COMPRESSION.</p>
  -     * @param level the compression level
  +     * @param level the compression level.
  +     * @throws IllegalArgumentException if an invalid compression level is 
specified.
        * @since 1.1
        */
       public void setLevel(int level) {
  +        if (level < Deflater.DEFAULT_COMPRESSION
  +            || level > Deflater.BEST_COMPRESSION) {
  +            throw new IllegalArgumentException(
  +                "Invalid compression level: " + level);
  +        }
           hasCompressionLevelChanged = (this.level != level);
           this.level = level;
       }
  @@ -843,7 +856,7 @@
        *
        * @since 1.14
        */
  -    protected final void writeOut(byte [] data) throws IOException {
  +    protected final void writeOut(byte[] data) throws IOException {
           writeOut(data, 0, data.length);
       }
   
  @@ -856,7 +869,7 @@
        *
        * @since 1.14
        */
  -    protected final void writeOut(byte [] data, int offset, int length)
  +    protected final void writeOut(byte[] data, int offset, int length)
           throws IOException {
           if (raf != null) {
               raf.write(data, offset, length);
  
  
  

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

Reply via email to