[jboss-cvs] JBossAS SVN: r78113 - in projects/vfs/trunk/src: test/java/org/jboss/test/virtual/test and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Sep 5 19:31:05 EDT 2008


Author: mstruk
Date: 2008-09-05 19:31:05 -0400 (Fri, 05 Sep 2008)
New Revision: 78113

Modified:
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipStreamWrapper.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARVFSContextUnitTestCase.java
Log:
JBVFS-57  Carlo's patch

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipStreamWrapper.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipStreamWrapper.java	2008-09-05 22:02:27 UTC (rev 78112)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipStreamWrapper.java	2008-09-05 23:31:05 UTC (rev 78113)
@@ -29,7 +29,6 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.Enumeration;
@@ -170,10 +169,21 @@
       while(it.hasNext())
       {
          InMemoryFile memFile = it.next();
-         if (memFile.entry.getName().startsWith(path))
+         ZipEntry oldEntry = memFile.entry;
+         if (oldEntry.getName().startsWith(path))
          {
-            zout.putNextEntry(memFile.entry);
-            zout.write(memFile.fileBytes);
+            String newName = oldEntry.getName().substring(path.length());
+            if(newName.length() == 0)
+               continue;
+
+            ZipEntry newEntry = new ZipEntry(newName);
+            newEntry.setComment(oldEntry.getComment());
+            newEntry.setTime(oldEntry.getTime());
+            newEntry.setSize(oldEntry.getSize());
+            newEntry.setCrc(oldEntry.getCrc());
+            zout.putNextEntry(newEntry);
+            if (oldEntry.isDirectory() == false)
+               zout.write(memFile.fileBytes);
          }
       }
       zout.close();

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARVFSContextUnitTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARVFSContextUnitTestCase.java	2008-09-05 22:02:27 UTC (rev 78112)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARVFSContextUnitTestCase.java	2008-09-05 23:31:05 UTC (rev 78113)
@@ -26,6 +26,7 @@
 import java.net.URL;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.Set;
 import java.util.jar.JarEntry;
 import java.util.jar.JarInputStream;
 
@@ -268,20 +269,23 @@
             "web_pkg_scope/servlet/",
             "web_pkg_scope/entity/Account.class",
             "web_pkg_scope/servlet/JpaServlet.class",
-            "META-INF/",
+            // JarInputStream never returns META-INF/ entry - it just skips it
+            // "META-INF/",
             "META-INF/persistence.xml"
       };
       JarInputStream jis = new JarInputStream( classesURL.openStream() );
       HashSet<String> missingEntries = new HashSet<String>(Arrays.asList(entryNames));
-      int count = 0;
+      Set<String> excess = new HashSet<String>();
       JarEntry jarEntry;
       while((jarEntry = jis.getNextJarEntry()) != null)
       {
          String name = jarEntry.getName();
-         missingEntries.remove(name);
-         count ++;
+         boolean removed = missingEntries.remove(name);
+         if(!removed)
+            excess.add(name);
       }
       assertEquals("No missing entries: "+missingEntries, 0, missingEntries.size());
+      assertEquals("Excess entries: " + excess, 0, excess.size());
       classes.closeStreams();
    }
 




More information about the jboss-cvs-commits mailing list