diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt
index e7709ef037a..498b7350b5e 100644
--- a/hadoop-common-project/hadoop-common/CHANGES.txt
+++ b/hadoop-common-project/hadoop-common/CHANGES.txt
@@ -146,6 +146,9 @@ Release 0.23.1 - Unreleased
HADOOP-7986. Adding config for MapReduce History Server protocol in
hadoop-policy.xml for service level authorization. (Mahadev Konar via vinodkv)
+ HADOOP-7981. Improve documentation for org.apache.hadoop.io.compress.
+ Decompressor.getRemaining (Jonathan Eagles via mahadev)
+
Release 0.23.0 - 2011-11-01
INCOMPATIBLE CHANGES
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/Decompressor.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/Decompressor.java
index 406642fc4ce..8cb0b2a7a15 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/Decompressor.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/io/compress/Decompressor.java
@@ -49,7 +49,7 @@ public interface Decompressor {
public void setInput(byte[] b, int off, int len);
/**
- * Returns true if the input data buffer is empty and
+ * Returns true
if the input data buffer is empty and
* {@link #setInput(byte[], int, int)} should be called to
* provide more input.
*
@@ -76,8 +76,11 @@ public interface Decompressor {
public boolean needsDictionary();
/**
- * Returns true if the end of the decompressed
- * data output stream has been reached.
+ * Returns true
if the end of the decompressed
+ * data output stream has been reached. Indicates a concatenated data stream
+ * when finished() returns true
and {@link #getRemaining()}
+ * returns a positive value. finished() will be reset with the
+ * {@link #reset()} method.
* @return true
if the end of the decompressed
* data output stream has been reached.
*/
@@ -98,15 +101,23 @@ public interface Decompressor {
public int decompress(byte[] b, int off, int len) throws IOException;
/**
- * Returns the number of bytes remaining in the compressed-data buffer;
- * typically called after the decompressor has finished decompressing
- * the current gzip stream (a.k.a. "member").
+ * Returns the number of bytes remaining in the compressed data buffer.
+ * Indicates a concatenated data stream if {@link #finished()} returns
+ * true
and getRemaining() returns a positive value. If
+ * {@link #finished()} returns true
and getRemaining() returns
+ * a zero value, indicates that the end of data stream has been reached and
+ * is not a concatenated data stream.
+ * @return The number of bytes remaining in the compressed data buffer.
*/
public int getRemaining();
/**
* Resets decompressor and input and output buffers so that a new set of
- * input data can be processed.
+ * input data can be processed. If {@link #finished()}} returns
+ * true
and {@link #getRemaining()} returns a positive value,
+ * reset() is called before processing of the next data stream in the
+ * concatenated data stream. {@link #finished()} will be reset and will
+ * return false
when reset() is called.
*/
public void reset();