[jboss-svn-commits] JBoss Common SVN: r3249 - in jzipfile/trunk: src/main/java/org/jboss/jzipfile and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jun 12 21:33:46 EDT 2009


Author: david.lloyd at jboss.com
Date: 2009-06-12 21:33:46 -0400 (Fri, 12 Jun 2009)
New Revision: 3249

Modified:
   jzipfile/trunk/pom.xml
   jzipfile/trunk/src/main/java/org/jboss/jzipfile/Zip.java
   jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalog.java
   jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalogBuilder.java
Log:
More minor fixes

Modified: jzipfile/trunk/pom.xml
===================================================================
--- jzipfile/trunk/pom.xml	2009-06-13 01:19:08 UTC (rev 3248)
+++ jzipfile/trunk/pom.xml	2009-06-13 01:33:46 UTC (rev 3249)
@@ -62,6 +62,15 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <includes>
+                        <include>**/*Tests.java</include>
+                    </includes>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
     <distributionManagement>

Modified: jzipfile/trunk/src/main/java/org/jboss/jzipfile/Zip.java
===================================================================
--- jzipfile/trunk/src/main/java/org/jboss/jzipfile/Zip.java	2009-06-13 01:19:08 UTC (rev 3248)
+++ jzipfile/trunk/src/main/java/org/jboss/jzipfile/Zip.java	2009-06-13 01:33:46 UTC (rev 3249)
@@ -173,25 +173,33 @@
      * @throws IOException if an I/O error occurs
      */
     public static InputStream openEntry(InputStream inputStream, ZipEntry zipEntry) throws IOException {
-        // read the local file header...
-        final ZipDataInputStream zdis = inputStream instanceof ZipDataInputStream ? (ZipDataInputStream) inputStream : new ZipDataInputStream(inputStream);
-        readLocalFile(zdis, zipEntry);
-        switch (zipEntry.getEntryType()) {
-            case FILE: break;
-            default: {
-                throw new ZipException("Attempt to open a zip entry with an unsupported type");
+        boolean ok = false;
+        try {
+            // read the local file header...
+            final ZipDataInputStream zdis = inputStream instanceof ZipDataInputStream ? (ZipDataInputStream) inputStream : new ZipDataInputStream(inputStream);
+            readLocalFile(zdis, zipEntry);
+            switch (zipEntry.getEntryType()) {
+                case FILE: break;
+                default: {
+                    throw new ZipException("Attempt to open a zip entry with an unsupported type");
+                }
             }
-        }
-        switch (zipEntry.getCompressionMethod()) {
-            case STORE: {
-                return new LimitedInputStream(inputStream, zipEntry.getCompressedSize());
+            switch (zipEntry.getCompressionMethod()) {
+                case STORE: {
+                    final LimitedInputStream is = new LimitedInputStream(inputStream, zipEntry.getCompressedSize());
+                    ok = true;
+                    return is;
+                }
+                case DEFLATE: {
+                    final LimitedInputStream is = new LimitedInputStream(new InflaterInputStream(new LimitedInputStream(inputStream, zipEntry.getCompressedSize()), new Inflater(true)), zipEntry.getSize());
+                    ok = true;
+                    return is;
+                }
             }
-            case DEFLATE: {
-                final Inflater inflater = new Inflater(true);
-                return new LimitedInputStream(new InflaterInputStream(new LimitedInputStream(inputStream, zipEntry.getCompressedSize()), inflater), zipEntry.getSize());
-            }
+            throw new ZipException("Unsupported compression algorithm " + zipEntry.getCompressionMethod());
+        } finally {
+            if (! ok) safeClose(inputStream);
         }
-        throw new ZipException("Unsupported compression algorithm " + zipEntry.getCompressionMethod());
     }
 
     private static void readLocalFile(final ZipDataInputStream is, final ZipEntry entry) throws IOException {

Modified: jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalog.java
===================================================================
--- jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalog.java	2009-06-13 01:19:08 UTC (rev 3248)
+++ jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalog.java	2009-06-13 01:33:46 UTC (rev 3249)
@@ -23,12 +23,25 @@
 package org.jboss.jzipfile;
 
 import java.util.Map;
+import java.util.Collection;
 
 /**
  * A zip file catalog.
  */
 public interface ZipCatalog {
+
+    /**
+     * Get all the named entries, indexed by name.  The returned hash map will return the names
+     * in the order that they were found in the file.  If a name occurs more than once, the first occurrence is used.
+     *
+     * @return the named entries
+     */
     Map<String, ZipEntry> indexedByName();
 
-    Iterable<ZipEntry> allEntries();
+    /**
+     * Get all the zip entries, including unnamed and duplicate entries, in the order they appear in the file.
+     *
+     * @return the entries
+     */
+    Collection<ZipEntry> allEntries();
 }

Modified: jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalogBuilder.java
===================================================================
--- jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalogBuilder.java	2009-06-13 01:19:08 UTC (rev 3248)
+++ jzipfile/trunk/src/main/java/org/jboss/jzipfile/ZipCatalogBuilder.java	2009-06-13 01:33:46 UTC (rev 3249)
@@ -44,6 +44,8 @@
     }
 
     void readDirectory(ZipDataInputStream is) throws IOException {
+        final List<ZipEntry> allEntries = this.allEntries;
+        final Map<String, ZipEntry> entryMap = this.entryMap;
         try {
             // Format:
             // central directory
@@ -61,7 +63,9 @@
                 is.readUnsignedShort(); // gpbits
                 final ZipCompressionMethod method = ZipCompressionMethod.getMethod(is.readUnsignedShort());
                 int modTimeBytes = is.readUnsignedShort();
+                System.out.printf("Mod time bytes %d or %08x\n", modTimeBytes, modTimeBytes);
                 int modDateBytes = is.readUnsignedShort();
+                System.out.printf("Mod date bytes %d or %08x\n", modDateBytes, modDateBytes);
                 int crc32 = is.readInt();
                 int compSize = is.readInt();
                 int uncompSize = is.readInt();
@@ -95,7 +99,9 @@
                 final String comment = new String(commentBytes, "US-ASCII");
                 final ZipEntryImpl entry = new ZipEntryImpl(name, comment, localHeaderOffs, uncompSize & 0xffffffffL, compSize & 0xffffffffL, crc32, type, 0L, method, extraBytes);
                 allEntries.add(entry);
-                entryMap.put(name, entry);
+                if (! entryMap.containsKey(name) && name.length() > 0) {
+                    entryMap.put(name, entry);
+                }
                 // next sig
                 sig = is.readInt();
             }
@@ -148,7 +154,7 @@
                 return byNameMap;
             }
 
-            public Iterable<ZipEntry> allEntries() {
+            public Collection<ZipEntry> allEntries() {
                 return allEntries;
             }
         };




More information about the jboss-svn-commits mailing list