[jboss-cvs] JBossAS SVN: r90204 - projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/jzipfile.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Jun 15 14:34:09 EDT 2009
Author: david.lloyd at jboss.com
Date: 2009-06-15 14:34:09 -0400 (Mon, 15 Jun 2009)
New Revision: 90204
Modified:
projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/jzipfile/JZipFileZipEntryProvider.java
Log:
Fix incorrect jzipfile API usage
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/jzipfile/JZipFileZipEntryProvider.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/jzipfile/JZipFileZipEntryProvider.java 2009-06-15 18:17:50 UTC (rev 90203)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/spi/zip/jzipfile/JZipFileZipEntryProvider.java 2009-06-15 18:34:09 UTC (rev 90204)
@@ -23,10 +23,9 @@
import java.io.IOException;
import java.io.InputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ByteArrayInputStream;
-import java.util.ArrayList;
-import java.util.List;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.Iterator;
import org.jboss.jzipfile.Zip;
import org.jboss.jzipfile.ZipCatalog;
@@ -39,36 +38,36 @@
*/
public class JZipFileZipEntryProvider implements ZipEntryProvider
{
- private InputStream copy;
- private List<org.jboss.jzipfile.ZipEntry> entries;
- private int index;
- private int size;
+ private Iterator<org.jboss.jzipfile.ZipEntry> entries;
+ private File tempFile;
+ private org.jboss.jzipfile.ZipEntry current;
public JZipFileZipEntryProvider(InputStream is) throws IOException
{
if (is == null)
throw new IllegalArgumentException("Null input stream");
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- VFSUtils.copyStreamAndClose(is, baos);
- copy = new ByteArrayInputStream(baos.toByteArray());
+ final File tempFile = File.createTempFile("jzfzep", "zip");
+ final FileOutputStream os = new FileOutputStream(tempFile);
+ VFSUtils.copyStreamAndClose(is, os);
- ZipCatalog catalog = Zip.readCatalog(is);
- entries = new ArrayList<org.jboss.jzipfile.ZipEntry>(catalog.allEntries());
- size = entries.size();
+ ZipCatalog catalog = Zip.readCatalog(tempFile);
+ entries = catalog.allEntries().iterator();
+ this.tempFile = tempFile;
}
public ZipEntry getNextEntry() throws IOException
{
- if (index >= size)
+ if (entries.hasNext()) {
+ return new JZipFileZipEntry(current = entries.next());
+ } else {
+ tempFile.delete();
return null;
-
- org.jboss.jzipfile.ZipEntry entry = entries.get(index++);
- return new JZipFileZipEntry(entry);
+ }
}
public InputStream currentStream() throws IOException
{
- return Zip.openEntry(copy, entries.get(index));
+ return Zip.openEntry(tempFile, current);
}
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list