2003-05-27 Michael Koch <konqueror@gmx.de>
authormkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 27 May 2003 06:34:29 +0000 (06:34 +0000)
committermkoch <mkoch@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 27 May 2003 06:34:29 +0000 (06:34 +0000)
* java/util/zip/Deflater.java
(FILTERED): Merged documentation from classpath.
* java/util/zip/DeflaterOutputStream.java
(DeflaterOutputStream): Merged documentation and argument validity
check from classpath.
(deflate): Merged documentation from classpath.
(finish): Likewise.
* java/util/zip/Inflater.java
(Inflater): Merged class documentation from classpath.
(zstream): Reordered.
(is_finished): Reordered.
(dict_needed): Reordered.
(Inflater): Reordered, merged documentation from classpath.
(end): Likewise.
(finalize): Merged documentation from classpath.
(finished): Likewise.
(getAdler): Likewise.
(getRemaining): Likewise.
(getTotalIn): Likewise.
(getTotalOut): Likewise.
(inflate): Likewise.
(needsDictionary): Likewise.
(needsInput): Likewise.
(reset): Likewise.
(setDictionary): Likewise.
(setInput): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@67185 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/util/zip/Deflater.java
libjava/java/util/zip/DeflaterOutputStream.java
libjava/java/util/zip/Inflater.java

index 1ae1bff..005410a 100644 (file)
@@ -1,5 +1,34 @@
 2003-05-27  Michael Koch  <konqueror@gmx.de>
 
+       * java/util/zip/Deflater.java
+       (FILTERED): Merged documentation from classpath.
+       * java/util/zip/DeflaterOutputStream.java
+       (DeflaterOutputStream): Merged documentation and argument validity
+       check from classpath.
+       (deflate): Merged documentation from classpath.
+       (finish): Likewise.
+       * java/util/zip/Inflater.java
+       (Inflater): Merged class documentation from classpath.
+       (zstream): Reordered.
+       (is_finished): Reordered.
+       (dict_needed): Reordered.
+       (Inflater): Reordered, merged documentation from classpath.
+       (end): Likewise.
+       (finalize): Merged documentation from classpath.
+       (finished): Likewise.
+       (getAdler): Likewise.
+       (getRemaining): Likewise.
+       (getTotalIn): Likewise.
+       (getTotalOut): Likewise.
+       (inflate): Likewise.
+       (needsDictionary): Likewise.
+       (needsInput): Likewise.
+       (reset): Likewise.
+       (setDictionary): Likewise.
+       (setInput): Likewise.
+
+2003-05-27  Michael Koch  <konqueror@gmx.de>
+
        * java/net/URLConnection.java
        (getHeaderFieldInt): Merged with classpath.
 
index ce3dc0b..52c569a 100644 (file)
@@ -48,7 +48,6 @@ import gnu.gcj.RawData;
  * and JCL book.
  * Believed complete and correct.
  */
-
 public class Deflater
 {
   /**
@@ -73,6 +72,10 @@ public class Deflater
    * The default strategy.
    */
   public static final int DEFAULT_STRATEGY = 0;
+  /**
+   * This strategy will only allow longer string repetitions.  It is
+   * useful for random data with a small character set.
+   */
   public static final int FILTERED = 1;
 
   /** 
index 755d8e7..ff66b08 100644 (file)
@@ -56,6 +56,7 @@ import java.io.IOException;
  * finishing the stream.
  *
  * @author Tom Tromey, Jochen Hoenicke
+ * @date Jan 11, 2001 
  */
 public class DeflaterOutputStream extends FilterOutputStream
 {
@@ -65,6 +66,11 @@ public class DeflaterOutputStream extends FilterOutputStream
     out.close();
   }
 
+  /**
+   * Deflates everything in the def's input buffers.  This will call
+   * <code>def.deflate()</code> until all bytes from the input buffers
+   * are processed.
+   */
   protected void deflate () throws IOException
   {
     do
@@ -76,23 +82,49 @@ public class DeflaterOutputStream extends FilterOutputStream
     while (! def.needsInput());
   }
 
+  /** 
+   * Creates a new DeflaterOutputStream with a default Deflater and
+   * default buffer size.
+   * @param out the output stream where deflated output should be written.
+   */
   public DeflaterOutputStream (OutputStream out)
   {
     this (out, new Deflater (), 512);
   }
 
+  /** 
+   * Creates a new DeflaterOutputStream with the given Deflater and
+   * default buffer size.
+   * @param out the output stream where deflated output should be written.
+   * @param defl the underlying deflater.
+   */
   public DeflaterOutputStream (OutputStream out, Deflater defl)
   {
     this (out, defl, 512);
   }
 
+  /** 
+   * Creates a new DeflaterOutputStream with the given Deflater and
+   * buffer size.
+   * @param out the output stream where deflated output should be written.
+   * @param defl the underlying deflater.
+   * @param bufsize the buffer size.
+   * @exception IllegalArgumentException if bufsize isn't positive.
+   */
   public DeflaterOutputStream(OutputStream out, Deflater defl, int bufsize)
   {
     super (out);
+    if (bufsize <= 0)
+      throw new IllegalArgumentException("bufsize <= 0");
     buf = new byte[bufsize];
     def = defl;
   }
 
+  /**
+   * Finishes the stream by calling finish() on the deflater.  This
+   * was the only way to ensure that all bytes are flushed in Sun's
+   * JDK.  
+   */
   public void finish () throws IOException
   {
     if (inbufLength > 0)
index c1d7741..28e89ea 100644 (file)
@@ -1,5 +1,5 @@
 /* Inflater.java - Decompress a data stream
-   Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000, 2001, 2003  Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -39,87 +39,231 @@ package java.util.zip;
 
 import gnu.gcj.RawData;
 
-/**
- * @author Tom Tromey
- * @date May 17, 1999
- */
-
 /* Written using on-line Java Platform 1.2 API Specification
  * and JCL book.
  * Believed complete and correct.
  */
 
+/**
+ * Inflater is used to decompress data that has been compressed according 
+ * to the "deflate" standard described in rfc1950.
+ *
+ * The usage is as following.  First you have to set some input with
+ * <code>setInput()</code>, then inflate() it.  If inflate doesn't
+ * inflate any bytes there may be three reasons:
+ * <ul>
+ * <li>needsInput() returns true because the input buffer is empty.
+ * You have to provide more input with <code>setInput()</code>.  
+ * NOTE: needsInput() also returns true when, the stream is finished.
+ * </li>
+ * <li>needsDictionary() returns true, you have to provide a preset 
+ *     dictionary with <code>setDictionary()</code>.</li>
+ * <li>finished() returns true, the inflater has finished.</li>
+ * </ul>
+ * Once the first output byte is produced, a dictionary will not be
+ * needed at a later stage.
+ *
+ * @author John Leuner, Jochen Hoenicke
+ * @author Tom Tromey
+ * @date May 17, 1999
+ * @since JDK 1.1
+ */
 public class Inflater
 {
-  public native void end ();
+  // The zlib stream.
+  private RawData zstream;
+
+  // True if finished.
+  private boolean is_finished;
+
+  // True if dictionary needed.
+  private boolean dict_needed;
+
+  /**
+   * Creates a new inflater.
+   */
+  public Inflater ()
+  {
+    this (false);
+  }
+
+  /**
+   * Creates a new inflater.
+   * @param nowrap true if no header and checksum field appears in the
+   * stream.  This is used for GZIPed input.  For compatibility with
+   * Sun JDK you should provide one byte of input more than needed in
+   * this case.
+   */
+  public Inflater (boolean noHeader)
+  {
+    init (noHeader);
+  }
 
+  /**
+   * Finalizes this object.
+   */
   protected void finalize ()
   {
     end ();
   }
 
+  /**
+   * Frees all objects allocated by the inflater.  There's no reason
+   * to call this, since you can just rely on garbage collection (even
+   * for the Sun implementation).  Exists only for compatibility
+   * with Sun's JDK, where the compressor allocates native memory.
+   * If you call any method (even reset) afterwards the behaviour is
+   * <i>undefined</i>.  
+   * @deprecated Just clear all references to inflater instead.
+   */
+  public native void end ();
+
+  /**
+   * Returns true, if the inflater has finished.  This means, that no
+   * input is needed and no output can be produced.
+   */
   public synchronized boolean finished ()
   {
     return is_finished;
   }
 
+  /**
+   * Gets the adler checksum.  This is either the checksum of all
+   * uncompressed bytes returned by inflate(), or if needsDictionary()
+   * returns true (and thus no output was yet produced) this is the
+   * adler checksum of the expected dictionary.
+   * @returns the adler checksum.
+   */
   public native int getAdler ();
+  
+  /**
+   * Gets the number of unprocessed input.  Useful, if the end of the
+   * stream is reached and you want to further process the bytes after
+   * the deflate stream.  
+   * @return the number of bytes of the input which were not processed.
+   */
   public native int getRemaining ();
+  
+  /**
+   * Gets the total number of processed compressed input bytes.
+   * @return the total number of bytes of processed input bytes.
+   */
   public native int getTotalIn ();
+
+  /**
+   * Gets the total number of output bytes returned by inflate().
+   * @return the total number of output bytes.
+   */
   public native int getTotalOut ();
 
+  /**
+   * Inflates the compressed stream to the output buffer.  If this
+   * returns 0, you should check, whether needsDictionary(),
+   * needsInput() or finished() returns true, to determine why no 
+   * further output is produced.
+   * @param buffer the output buffer.
+   * @return the number of bytes written to the buffer, 0 if no further
+   * output can be produced.  
+   * @exception DataFormatException if deflated stream is invalid.
+   * @exception IllegalArgumentException if buf has length 0.
+   */
   public int inflate (byte[] buf) throws DataFormatException
   {
     return inflate (buf, 0, buf.length);
   }
 
+  /**
+   * Inflates the compressed stream to the output buffer.  If this
+   * returns 0, you should check, whether needsDictionary(),
+   * needsInput() or finished() returns true, to determine why no 
+   * further output is produced.
+   * @param buffer the output buffer.
+   * @param off the offset into buffer where the output should start.
+   * @param len the maximum length of the output.
+   * @return the number of bytes written to the buffer, 0 if no further
+   * output can be produced.  
+   * @exception DataFormatException if deflated stream is invalid.
+   * @exception IndexOutOfBoundsException if the off and/or len are wrong.
+   */
   public native int inflate (byte[] buf, int off, int len)
     throws DataFormatException;
 
   private native void init (boolean noHeader);
 
-  public Inflater ()
-  {
-    this (false);
-  }
-
-  public Inflater (boolean noHeader)
-  {
-    init (noHeader);
-  }
-
+  /**
+   * Returns true, if a preset dictionary is needed to inflate the input.
+   */
   public synchronized boolean needsDictionary ()
   {
     return dict_needed;
   }
 
+  /**
+   * Returns true, if the input buffer is empty.
+   * You should then call setInput(). <br>
+   *
+   * <em>NOTE</em>: This method also returns true when the stream is finished.
+   */
   public synchronized boolean needsInput ()
   {
     return getRemaining () == 0;
   }
 
+  /**
+   * Resets the inflater so that a new stream can be decompressed.  All
+   * pending input and output will be discarded.
+   */
   public native void reset ();
 
+  /**
+   * Sets the preset dictionary.  This should only be called, if
+   * needsDictionary() returns true and it should set the same
+   * dictionary, that was used for deflating.  The getAdler()
+   * function returns the checksum of the dictionary needed.
+   * @param buffer the dictionary.
+   * @exception IllegalStateException if no dictionary is needed.
+   * @exception IllegalArgumentException if the dictionary checksum is
+   * wrong.  
+   */
   public void setDictionary (byte[] buf)
   {
     setDictionary (buf, 0, buf.length);
   }
 
+  /**
+   * Sets the preset dictionary.  This should only be called, if
+   * needsDictionary() returns true and it should set the same
+   * dictionary, that was used for deflating.  The getAdler()
+   * function returns the checksum of the dictionary needed.
+   * @param buffer the dictionary.
+   * @param off the offset into buffer where the dictionary starts.
+   * @param len the length of the dictionary.
+   * @exception IllegalStateException if no dictionary is needed.
+   * @exception IllegalArgumentException if the dictionary checksum is
+   * wrong.  
+   * @exception IndexOutOfBoundsException if the off and/or len are wrong.
+   */
   public native void setDictionary (byte[] buf, int off, int len);
 
+  /**
+   * Sets the input.  This should only be called, if needsInput()
+   * returns true.
+   * @param buffer the input.
+   * @exception IllegalStateException if no input is needed.
+   */
   public void setInput (byte[] buf)
   {
     setInput (buf, 0, buf.length);
   }
 
+  /**
+   * Sets the input.  This should only be called, if needsInput()
+   * returns true.
+   * @param buffer the input.
+   * @param off the offset into buffer where the input starts.
+   * @param len the length of the input.  
+   * @exception IllegalStateException if no input is needed.
+   * @exception IndexOutOfBoundsException if the off and/or len are wrong.
+   */
   public native void setInput (byte[] buf, int off, int len);
-
-  // The zlib stream.
-  private RawData zstream;
-
-  // True if finished.
-  private boolean is_finished;
-
-  // True if dictionary needed.
-  private boolean dict_needed;
 }