Author: sebb
Date: Tue Mar 31 00:35:56 2009
New Revision: 760276

URL: http://svn.apache.org/viewvc?rev=760276&view=rev
Log:
Add generic methods for creating Archive Entries.
This helps with testing, and will make it easier to implement put(File) later

Modified:
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ArchiveOutputStream.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveEntry.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStream.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveOutputStream.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
    
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.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=760276&r1=760275&r2=760276&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
 Tue Mar 31 00:35:56 2009
@@ -18,6 +18,7 @@
  */
 package org.apache.commons.compress.archivers;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
 
@@ -55,6 +56,17 @@
      */
     public abstract void closeArchiveEntry() throws IOException;
 
+    /**
+     * Create an archive entry using the inputFile and entryName provided.
+     * 
+     * @param inputFile
+     * @param entryName 
+     * @return the ArchiveEntry set up with details from the file
+     * 
+     * @throws IOException
+     */
+    public abstract ArchiveEntry createArchiveEntry(File inputFile, String 
entryName) throws IOException;
+    
     // Generic implementations of OutputStream methods that may be useful to 
sub-classes
     
     /**

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveEntry.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveEntry.java?rev=760276&r1=760275&r2=760276&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveEntry.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveEntry.java
 Tue Mar 31 00:35:56 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.commons.compress.archivers.ar;
 
+import java.io.File;
+
 import org.apache.commons.compress.archivers.ArchiveEntry;
 
 /**
@@ -54,7 +56,12 @@
                this.lastModified = lastModified;
        }
 
-       public long getSize() {
+       public ArArchiveEntry(File inputFile, String entryName) {
+           // TODO sort out mode
+        this(entryName, inputFile.length(), 0, 0, 0, inputFile.lastModified());
+    }
+
+    public long getSize() {
                return this.getLength();
        }
        

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStream.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStream.java?rev=760276&r1=760275&r2=760276&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStream.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/ar/ArArchiveOutputStream.java
 Tue Mar 31 00:35:56 2009
@@ -18,6 +18,7 @@
  */
 package org.apache.commons.compress.archivers.ar;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
 
@@ -99,7 +100,7 @@
 
         final String n = pEntry.getName();
         if (n.length() > 16) {
-            throw new IOException("filename too long");
+            throw new IOException("filename too long, > 16 chars: "+n);
         }
         offset += write(n);
 
@@ -156,4 +157,9 @@
         prevEntry = null;
     }
 
+    public ArchiveEntry createArchiveEntry(File inputFile, String entryName)
+            throws IOException {
+        return new ArArchiveEntry(inputFile, entryName);
+    }
+
 }

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java?rev=760276&r1=760275&r2=760276&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveEntry.java
 Tue Mar 31 00:35:56 2009
@@ -18,6 +18,8 @@
  */
 package org.apache.commons.compress.archivers.cpio;
 
+import java.io.File;
+
 import org.apache.commons.compress.archivers.ArchiveEntry;
 
 /**
@@ -249,6 +251,20 @@
         this.setSize(size);
     }
 
+    public CpioArchiveEntry(File inputFile, String entryName) {
+        this(entryName, inputFile.length());
+        long mode=0;
+        if (inputFile.isDirectory()){
+            mode |= C_ISDIR;
+        } else if (inputFile.isFile()){
+            mode |= C_ISREG;
+        } else {
+            throw new IllegalArgumentException("Cannot determine type of file 
"+inputFile.getName());
+        }
+        // TODO set other fields as needed
+        setMode(mode);
+    }
+
     /**
      * Check if the method is allowed for the defined format.
      */

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveOutputStream.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveOutputStream.java?rev=760276&r1=760275&r2=760276&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveOutputStream.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveOutputStream.java
 Tue Mar 31 00:35:56 2009
@@ -18,6 +18,7 @@
  */
 package org.apache.commons.compress.archivers.cpio;
 
+import java.io.File;
 import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -379,4 +380,9 @@
         out.write('\0');
     }
 
+    public ArchiveEntry createArchiveEntry(File inputFile, String entryName)
+            throws IOException {
+        return new CpioArchiveEntry(inputFile, entryName);
+    }
+
 }

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java?rev=760276&r1=760275&r2=760276&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java
 Tue Mar 31 00:35:56 2009
@@ -193,15 +193,26 @@
     /**
      * Construct an entry for a file. File is set to file, and the
      * header is constructed from information from the file.
+     * The name is set from the normalized file path.
      *
      * @param file The file that the entry represents.
      */
     public TarArchiveEntry(File file) {
+        this(file, normalizeFileName(file.getPath()));
+    }
+    
+    /**
+     * Construct an entry for a file. File is set to file, and the
+     * header is constructed from information from the file.
+     *
+     * @param file The file that the entry represents.
+     * @param fileName the name to be used for the entry.
+     */
+    public TarArchiveEntry(File file, String fileName) {
         this();
 
         this.file = file;
 
-        String fileName = normalizeFileName(file.getPath());
         this.linkName = new StringBuffer("");
         this.name = new StringBuffer(fileName);
 

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java?rev=760276&r1=760275&r2=760276&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
 Tue Mar 31 00:35:56 2009
@@ -18,6 +18,7 @@
  */
 package org.apache.commons.compress.archivers.tar;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
 import org.apache.commons.compress.archivers.ArchiveEntry;
@@ -336,4 +337,9 @@
         return "tar";
     }
 
+    public ArchiveEntry createArchiveEntry(File inputFile, String entryName)
+            throws IOException {
+        return new TarArchiveEntry(inputFile, entryName);
+    }
+
 }

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java?rev=760276&r1=760275&r2=760276&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.java
 Tue Mar 31 00:35:56 2009
@@ -17,6 +17,7 @@
  */
 package org.apache.commons.compress.archivers.zip;
 
+import java.io.File;
 import java.util.LinkedHashMap;
 import java.util.zip.ZipException;
 import org.apache.commons.compress.archivers.ArchiveEntry;
@@ -84,6 +85,11 @@
         super("");
     }
 
+    public ZipArchiveEntry(File inputFile, String entryName) {
+        this(entryName);
+        // TODO are there any other fields we can set here?
+    }
+
     /**
      * Overwrite clone.
      * @return a cloned copy of this ZipArchiveEntry

Modified: 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java
URL: 
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java?rev=760276&r1=760275&r2=760276&view=diff
==============================================================================
--- 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java
 (original)
+++ 
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.java
 Tue Mar 31 00:35:56 2009
@@ -910,4 +910,9 @@
             return name;
         }
     }
+
+    public ArchiveEntry createArchiveEntry(File inputFile, String entryName)
+            throws IOException {
+        return new ZipArchiveEntry(inputFile, entryName);
+    }
 }


Reply via email to