[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