Author: bodewig
Date: Tue Feb 10 15:57:46 2009
New Revision: 743003

URL: http://svn.apache.org/viewvc?rev=743003&view=rev
Log:
merge TarArchive*Stream with Tar*Stream

Removed:
    
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java
    
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
Modified:
    
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
    
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarInputStream.java
    
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarOutputStream.java
    
commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/DetectArchiverTestCase.java

Modified: 
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java?rev=743003&r1=743002&r2=743003&view=diff
==============================================================================
--- 
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
 (original)
+++ 
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
 Tue Feb 10 15:57:46 2009
@@ -28,8 +28,8 @@
 import org.apache.commons.compress.archivers.cpio.CpioArchiveOutputStream;
 import org.apache.commons.compress.archivers.jar.JarArchiveInputStream;
 import org.apache.commons.compress.archivers.jar.JarArchiveOutputStream;
-import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
-import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
+import org.apache.commons.compress.archivers.tar.TarInputStream;
+import org.apache.commons.compress.archivers.tar.TarOutputStream;
 import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
 import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
 
@@ -52,7 +52,7 @@
         } else if("zip".equalsIgnoreCase(archiverName)) {
             return new ZipArchiveInputStream(in);
         } else if("tar".equalsIgnoreCase(archiverName)) {
-            return new TarArchiveInputStream(in);
+            return new TarInputStream(in);
         } else if("jar".equalsIgnoreCase(archiverName)) {
             return new JarArchiveInputStream(in);
         } else if("cpio".equalsIgnoreCase(archiverName)) {
@@ -67,7 +67,7 @@
         } else if("zip".equalsIgnoreCase(archiverName)) {
             return new ZipArchiveOutputStream(out);
         } else if("tar".equalsIgnoreCase(archiverName)) {
-            return new TarArchiveOutputStream(out);
+            return new TarOutputStream(out);
         } else if("jar".equalsIgnoreCase(archiverName)) {
             return new JarArchiveOutputStream(out);
         } else if("cpio".equalsIgnoreCase(archiverName)) {
@@ -88,8 +88,8 @@
             return new ZipArchiveInputStream(input);
         } else if(JarArchiveInputStream.matches(signature, signatureLength)) {
             return new JarArchiveInputStream(input);
-        } else if(TarArchiveInputStream.matches(signature, signatureLength)) {
-            return new TarArchiveInputStream(input);
+        } else if(TarInputStream.matches(signature, signatureLength)) {
+            return new TarInputStream(input);
         } else if(ArArchiveInputStream.matches(signature, signatureLength)) {
             return new ArArchiveInputStream(input);
         } else if(CpioArchiveInputStream.matches(signature, signatureLength)) {

Modified: 
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarInputStream.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarInputStream.java?rev=743003&r1=743002&r2=743003&view=diff
==============================================================================
--- 
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarInputStream.java
 (original)
+++ 
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarInputStream.java
 Tue Feb 10 15:57:46 2009
@@ -23,10 +23,11 @@
 
 package org.apache.commons.compress.archivers.tar;
 
-import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import org.apache.commons.compress.archivers.ArchiveEntry;
+import org.apache.commons.compress.archivers.ArchiveInputStream;
 
 /**
  * The TarInputStream reads a UNIX tar archive as an InputStream.
@@ -35,7 +36,7 @@
  * using read().
  *
  */
-public class TarInputStream extends FilterInputStream {
+public class TarInputStream extends ArchiveInputStream {
     private static final int SMALL_BUFFER_SIZE = 256;
     private static final int BUFFER_SIZE = 8 * 1024;
     private static final int LARGE_BUFFER_SIZE = 32 * 1024;
@@ -59,6 +60,8 @@
 
     // CheckStyle:VisibilityModifier ON
 
+    private final InputStream in;
+
     /**
      * Constructor for TarInputStream.
      * @param is the input stream to use
@@ -83,7 +86,7 @@
      * @param recordSize the record size to use
      */
     public TarInputStream(InputStream is, int blockSize, int recordSize) {
-        super(is);
+        this.in = is;
 
         this.buffer = new TarBuffer(is, blockSize, recordSize);
         this.readBuf = null;
@@ -167,23 +170,6 @@
     }
 
     /**
-     * Since we do not support marking just yet, we return false.
-     *
-     * @return False.
-     */
-    public boolean markSupported() {
-        return false;
-    }
-
-    /**
-     * Since we do not support marking just yet, we do nothing.
-     *
-     * @param markLimit The limit to mark.
-     */
-    public void mark(int markLimit) {
-    }
-
-    /**
      * Since we do not support marking just yet, we do nothing.
      */
     public void reset() {
@@ -202,7 +188,7 @@
      * @return The next TarEntry in the archive, or null.
      * @throws IOException on error
      */
-    public TarArchiveEntry getNextEntry() throws IOException {
+    public ArchiveEntry getNextEntry() throws IOException {
         if (hasHitEOF) {
             return null;
         }
@@ -399,4 +385,47 @@
             out.write(buf, 0, numRead);
         }
     }
+
+    // used to be implemented via FilterInputStream
+    public int read(byte[] b) throws IOException {
+        return read(b, 0, b.length);
+    }
+
+    // ArchiveInputStream
+
+    public static boolean matches(byte[] signature, int length) {
+        // 6574 7473 2e31 6d78
+        
+        if (length < 8) {
+            return false;
+        }
+
+        if (signature[0] != 0x74) {
+            return false;
+        }
+        if (signature[1] != 0x65) {
+            return false;
+        }
+        if (signature[2] != 0x73) {
+            return false;
+        }
+        if (signature[3] != 0x74) {
+            return false;
+        }
+        if (signature[4] != 0x31) {
+            return false;
+        }
+        if (signature[5] != 0x2e) {
+            return false;
+        }
+        if (signature[6] != 0x78) {
+            return false;
+        }
+        if (signature[7] != 0x6d) {
+            return false;
+        }
+        
+        return true;
+    }
+    
 }

Modified: 
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarOutputStream.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarOutputStream.java?rev=743003&r1=743002&r2=743003&view=diff
==============================================================================
--- 
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarOutputStream.java
 (original)
+++ 
commons/sandbox/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarOutputStream.java
 Tue Feb 10 15:57:46 2009
@@ -18,9 +18,10 @@
  */
 package org.apache.commons.compress.archivers.tar;
 
-import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import org.apache.commons.compress.archivers.ArchiveEntry;
+import org.apache.commons.compress.archivers.ArchiveOutputStream;
 
 /**
  * The TarOutputStream writes a UNIX tar archive as an OutputStream.
@@ -28,7 +29,7 @@
  * by writing to this stream using write().
  *
  */
-public class TarOutputStream extends FilterOutputStream {
+public class TarOutputStream extends ArchiveOutputStream {
     /** Fail if a long file name is required in the archive. */
     public static final int LONGFILE_ERROR = 0;
 
@@ -53,6 +54,8 @@
 
     private boolean closed = false;
 
+    private final OutputStream out;
+
     /**
      * Constructor for TarInputStream.
      * @param os the output stream to use
@@ -77,7 +80,7 @@
      * @param recordSize the record size to use
      */
     public TarOutputStream(OutputStream os, int blockSize, int recordSize) {
-        super(os);
+        out = os;
 
         this.buffer = new TarBuffer(os, blockSize, recordSize);
         this.debug = false;
@@ -345,4 +348,33 @@
 
         buffer.writeRecord(recordBuf);
     }
+
+    // used to be implemented via FilterOutputStream
+    public void flush() throws IOException {
+        out.flush();
+    }
+        
+    // ArchiveOutputStream
+
+    public void closeArchiveEntry() throws IOException {
+        closeEntry();
+    }
+
+    public void putArchiveEntry(ArchiveEntry entry) throws IOException {
+        putNextEntry((TarArchiveEntry) entry);
+    }
+
+    public String getDefaultFileExtension() {
+        return "tar";
+    }
+
+    public byte[] getHeader() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public String getName() {
+        return "tar";
+    }
+
 }

Modified: 
commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/DetectArchiverTestCase.java
URL: 
http://svn.apache.org/viewvc/commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/DetectArchiverTestCase.java?rev=743003&r1=743002&r2=743003&view=diff
==============================================================================
--- 
commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/DetectArchiverTestCase.java
 (original)
+++ 
commons/sandbox/compress/trunk/src/test/java/org/apache/commons/compress/DetectArchiverTestCase.java
 Tue Feb 10 15:57:46 2009
@@ -29,7 +29,7 @@
 import org.apache.commons.compress.archivers.ar.ArArchiveInputStream;
 import org.apache.commons.compress.archivers.cpio.CpioArchiveInputStream;
 import org.apache.commons.compress.archivers.jar.JarArchiveInputStream;
-import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
+import org.apache.commons.compress.archivers.tar.TarInputStream;
 import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
 
 public final class DetectArchiverTestCase extends TestCase {
@@ -46,7 +46,7 @@
                                new BufferedInputStream(new FileInputStream(
                                                new 
File(getClass().getClassLoader().getResource("bla.tar").getFile()))));
                assertNotNull(tar);
-               assertTrue(tar instanceof TarArchiveInputStream);
+               assertTrue(tar instanceof TarInputStream);
 
                final ArchiveInputStream zip = factory.createArchiveInputStream(
                                new BufferedInputStream(new FileInputStream(


Reply via email to