[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