You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by se...@apache.org on 2009/03/30 19:17:58 UTC

svn commit: r760053 - /commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveOutputStream.java

Author: sebb
Date: Mon Mar 30 17:17:58 2009
New Revision: 760053

URL: http://svn.apache.org/viewvc?rev=760053&view=rev
Log:
Initial Javadoc
Implement common write(byte) method

Modified:
    commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveOutputStream.java

Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveOutputStream.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveOutputStream.java?rev=760053&r1=760052&r2=760053&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveOutputStream.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveOutputStream.java Mon Mar 30 17:17:58 2009
@@ -21,9 +21,46 @@
 import java.io.IOException;
 import java.io.OutputStream;
 
+/**
+ * Archive output stream implementations are expected to override the
+ * {@link #write(byte[], int, int)} method to improve performance.
+ * They should also override {@link #close()} to ensure that any necessary
+ * trailers are added.
+ * <p>
+ * Example usage:<br/>
+ * TBA
+ */
 public abstract class ArchiveOutputStream extends OutputStream {
+    
+    /** Temporary buffer used for the {@link #write(int)} method */
+    private final byte[] oneByte = new byte[1];
+    static final int BYTE_MASK = 0xFF;
 
     public abstract void putArchiveEntry(ArchiveEntry entry) throws IOException;
 
+    /**
+     * Closes the archive entry, writing any trailer information that may
+     * be required.
+     * @throws IOException
+     */
     public abstract void closeArchiveEntry() throws IOException;
+
+    // Generic implementations of OutputStream methods that may be useful to sub-classes
+    
+    /**
+     * Writes a byte to the current archive entry.
+     *
+     * This method simply calls write( byte[], 0, 1 ).
+     *
+     * MUST be overridden if the {@link #write(byte[], int, int)} method
+     * is not overridden; may be overridden otherwise.
+     * 
+     * @param b The byte to be written.
+     * @throws IOException on error
+     */
+    public void write(int b) throws IOException {
+        oneByte[0] = (byte) (b & BYTE_MASK);
+        write(oneByte, 0, 1);
+    }
+
 }