This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git


The following commit(s) were added to refs/heads/master by this push:
     new 7f9d2c8d3 Javadoc
7f9d2c8d3 is described below

commit 7f9d2c8d39914d6493b58c7ddc210ebcfeaf9532
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Thu Jan 2 14:51:27 2025 -0500

    Javadoc
---
 .../gzip/GzipCompressorInputStream.java            | 72 ++++++++++++++++------
 1 file changed, 54 insertions(+), 18 deletions(-)

diff --git 
a/src/main/java/org/apache/commons/compress/compressors/gzip/GzipCompressorInputStream.java
 
b/src/main/java/org/apache/commons/compress/compressors/gzip/GzipCompressorInputStream.java
index efb0e24c6..644cb2c06 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/gzip/GzipCompressorInputStream.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/gzip/GzipCompressorInputStream.java
@@ -35,46 +35,63 @@ import 
org.apache.commons.compress.compressors.CompressorInputStream;
 import org.apache.commons.compress.utils.ByteUtils;
 import org.apache.commons.compress.utils.InputStreamStatistics;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.build.AbstractOrigin;
 import org.apache.commons.io.build.AbstractStreamBuilder;
 import org.apache.commons.io.function.IOConsumer;
 import org.apache.commons.io.input.BoundedInputStream;
 
 /**
- * Input stream that decompresses .gz files.
+ * Input stream that decompresses GZIP (.gz) files.
  *
  * <p>
- * This supports decompressing concatenated .gz files which is important when 
decompressing standalone .gz files.
+ * This supports decompressing concatenated GZIP files which is important when 
decompressing standalone GZIP files.
  * </p>
- *
  * <p>
- * Instead of using {@code java.util.zip.GZIPInputStream}, this class has its 
own GZIP member decoder. The actual decompression is done with
+ * Instead of using {@code java.util.zip.GZIPInputStream}, this class has its 
own GZIP member decoder. Internally, decompression is done using
  * {@link java.util.zip.Inflater}.
  * </p>
- *
  * <p>
- * If you use the constructor {@code GzipCompressorInputStream(in)} or {@code 
GzipCompressorInputStream(in, false)}, then {@link #read} will return -1 as soon
- * as the first encoded GZIP member has been completely read. In this case, if 
the underlying input stream supports {@link InputStream#mark mark()} and
- * {@link InputStream#reset reset()}, then it will be left positioned just 
after the end of the encoded GZIP member; otherwise, some indeterminate number 
of
- * extra bytes following the encoded GZIP member will have been consumed and 
discarded.
+ * If you use the constructor {@code GzipCompressorInputStream(in)}, {@code 
Builder.setDecompressConcatenated(false)}, or
+ * {@code GzipCompressorInputStream(in, false)}, then {@link #read} will 
return -1 as soon as the first encoded GZIP member has been completely read. In 
this
+ * case, if the underlying input stream supports {@link InputStream#mark 
mark()} and {@link InputStream#reset reset()}, then it will be left positioned 
just
+ * after the end of the encoded GZIP member; otherwise, some indeterminate 
number of extra bytes following the encoded GZIP member will have been consumed 
and
+ * discarded.
+ * </p>
+ * <p>
+ * If you use the {@code Builder.setDecompressConcatenated(true)} or {@code 
GzipCompressorInputStream(in, true)} then {@link #read} will return -1 only 
after
+ * the entire input stream has been exhausted; any bytes that follow an 
encoded GZIP member must constitute a new encoded GZIP member, otherwise an
+ * {@link IOException} is thrown. The data read from a stream constructed this 
way will consist of the concatenated data of all of the encoded GZIP members in
+ * order.
  * </p>
- *
  * <p>
- * If you use the constructor {@code GzipCompressorInputStream(in, true)} then 
{@link #read} will return -1 only after the entire input stream has been
- * exhausted; any bytes that follow an encoded GZIP member must constitute a 
new encoded GZIP member, otherwise an {@link IOException} is thrown. The data 
read
- * from a stream constructed this way will consist of the concatenated data of 
all of the encoded GZIP members in order.
+ * To build an instance, use {@link Builder}.
  * </p>
  *
+ * @see Builder
  * @see <a href="https://datatracker.ietf.org/doc/html/rfc1952";>RFC 1952 GZIP 
File Format Specification</a>
  */
 public class GzipCompressorInputStream extends CompressorInputStream 
implements InputStreamStatistics {
 
     private static final IOConsumer<GzipCompressorInputStream> NOOP = 
IOConsumer.noop();
 
+    // @formatter:off
     /**
-     * Constructs a new builder of {@link GzipCompressorInputStream}.
+     * Builds a new {@link GzipCompressorInputStream}.
      *
+     * <p>
+     * For example:
+     * </p>
+     * <pre>{@code
+     * GzipCompressorInputStream s = GzipCompressorInputStream.builder()
+     *   .setPath(path)
+     *   .setFileNameCharset(StandardCharsets.ISO_8859_1)
+     *   .get();}
+     * </pre>
+     *
+     * @see #get()
      * @since 1.28.0
      */
+    // @formatter:on
     public static class Builder extends 
AbstractStreamBuilder<GzipCompressorInputStream, Builder> {
 
         /** True if decompressing multi-member streams. */
@@ -93,6 +110,17 @@ public class GzipCompressorInputStream extends 
CompressorInputStream implements
             // empty
         }
 
+        /**
+         * Builds a new {@link GzipCompressorInputStream}.
+         * <p>
+         * You must set input that supports {@link InputStream}, otherwise, 
this method throws an exception.
+         * </p>
+         *
+         * @return a new instance.
+         * @throws IllegalStateException         if the {@code origin} is 
{@code null}.
+         * @throws UnsupportedOperationException if the origin cannot be 
converted to an {@link InputStream}.
+         * @see AbstractOrigin#getInputStream(java.nio.file.OpenOption...)
+         */
         @Override
         public GzipCompressorInputStream get() throws IOException {
             return new GzipCompressorInputStream(this);
@@ -128,8 +156,13 @@ public class GzipCompressorInputStream extends 
CompressorInputStream implements
         }
 
         /**
-         * Sets the consumer called when a member header is parsed. Note that 
the member size is unknown at call time, it is stored in a member
-         * <em>trailer</em> and used for validation.
+         * Sets the consumer called when a member <em>trailer</em> is parsed.
+         * <p>
+         * When a member <em>header</em> is parsed, all {@link GzipParameters} 
values are initialized except {@code trailerCrc} and {@code trailerISize}.
+         * </p>
+         * <p>
+         * When a member <em>trailer</em> is parsed, the {@link 
GzipParameters} values {@code trailerCrc} and {@code trailerISize} are set.
+         * </p>
          *
          * @param onMemberEnd The consumer.
          * @return this instance.
@@ -141,9 +174,12 @@ public class GzipCompressorInputStream extends 
CompressorInputStream implements
         }
 
         /**
-         * Sets the consumer called when a member trailer is parsed.
+         * Sets the consumer called when a member <em>header</em> is parsed.
+         * <p>
+         * When a member <em>header</em> is parsed, all {@link GzipParameters} 
values are initialized except {@code trailerCrc} and {@code trailerISize}.
+         * </p>
          * <p>
-         * There are two values set from the trailer in the current {@link 
GzipParameters}: {@code trailerCrc} and {@code trailerISize}.
+         * When a member <em>trailer</em> is parsed, the {@link 
GzipParameters} values {@code trailerCrc} and {@code trailerISize} are set.
          * </p>
          *
          * @param onMemberStart The consumer.

Reply via email to