[jboss-cvs] JBossAS SVN: r74531 - in projects/vfs/trunk/src: main/java/org/jboss/virtual/plugins/context/file and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jun 13 08:41:40 EDT 2008


Author: alesj
Date: 2008-06-13 08:41:40 -0400 (Fri, 13 Jun 2008)
New Revision: 74531

Added:
   projects/vfs/trunk/src/test/resources/vfs/test/nested/
   projects/vfs/trunk/src/test/resources/vfs/test/nested/nested.jar
   projects/vfs/trunk/src/test/resources/vfs/test/nested/nested_copy.jar
Modified:
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVFSContext.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContext.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContextFactory.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARSerializationUnitTestCase.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARVFSContextUnitTestCase.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/ZipEntryVFSContextUnitTestCase.java
Log:
Expose vfszip bug - unable to re-create virtual file from nested jar url.

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVFSContext.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVFSContext.java	2008-06-13 12:21:35 UTC (rev 74530)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVFSContext.java	2008-06-13 12:41:40 UTC (rev 74531)
@@ -145,9 +145,9 @@
               .append(":").append(rootUri.getPath());
       if(parent != null)
       {
-         String pPathName = null;
+         String pPathName;
          if(parent instanceof AbstractVirtualFileHandler)
-            pPathName = ((AbstractVirtualFileHandler)parent).getLocalPathName();
+            pPathName = parent.getLocalPathName();
          else
             pPathName = parent.getPathName();
 

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java	2008-06-13 12:21:35 UTC (rev 74530)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java	2008-06-13 12:41:40 UTC (rev 74531)
@@ -65,7 +65,6 @@
  */
 public class FileSystemContext extends AbstractVFSContext
 {
-
    private static final Logger log = Logger.getLogger(ZipEntryContext.class);
 
    /** true if forcing fallback to vfsjar from default vfszip */

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContext.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContext.java	2008-06-13 12:21:35 UTC (rev 74530)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContext.java	2008-06-13 12:41:40 UTC (rev 74531)
@@ -196,7 +196,6 @@
     */
    private void init(URL localRootURL, VirtualFileHandler peer, ZipWrapper zipWrapper) throws IOException, URISyntaxException
    {
-
       if (zipWrapper == null)
       {
          if (localRootURL == null)
@@ -709,7 +708,8 @@
       try
       {
          super.finalize();
-         zipSource.close();
+         if (zipSource != null)
+            zipSource.close();
       }
       catch (Throwable ignored)
       {

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContextFactory.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContextFactory.java	2008-06-13 12:21:35 UTC (rev 74530)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryContextFactory.java	2008-06-13 12:41:40 UTC (rev 74531)
@@ -21,9 +21,6 @@
 */
 package org.jboss.virtual.plugins.context.zip;
 
-import org.jboss.virtual.plugins.context.AbstractContextFactory;
-import org.jboss.virtual.spi.VFSContext;
-
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URI;
@@ -32,13 +29,15 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.jboss.virtual.plugins.context.AbstractContextFactory;
+import org.jboss.virtual.spi.VFSContext;
+
 /**
  * ContextFactory that keeps track of ZipEntryContexts
  *
  * @author <a href="strukelj at parsek.net">Marko Strukelj</a>
  * @version $Revision: 1.0 $
  */
-
 public class ZipEntryContextFactory extends AbstractContextFactory
 {
    /** registry of all ZipEntryContext instances */
@@ -75,7 +74,6 @@
 
       String longestMatchingKey = null;
       ZipEntryContext longestMatchingCtx = null;
-
       for(Map.Entry<String, ZipEntryContext> ent : ctxCache.entrySet())
       {
          if(key.startsWith(ent.getKey()))
@@ -87,17 +85,12 @@
             }
          }
       }
-
-      ZipEntryContext ctx = null;
       if(longestMatchingCtx != null)
-         ctx = longestMatchingCtx;
+         return longestMatchingCtx;
 
-      if(ctx != null)
-         return ctx;
-
       try
       {
-         ctx = new ZipEntryContext(rootURL);
+         return new ZipEntryContext(rootURL);
       }
       catch(URISyntaxException ex)
       {
@@ -105,11 +98,6 @@
          e.initCause(ex);
          throw e;
       }
-
-      // ZipEntryContext registers newly created context with this factory
-      // by calling registerContext() which puts a newly created context into ctxCache
-      
-      return ctx;
    }
 
    public static ZipEntryContextFactory getInstance()

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARSerializationUnitTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARSerializationUnitTestCase.java	2008-06-13 12:21:35 UTC (rev 74530)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARSerializationUnitTestCase.java	2008-06-13 12:41:40 UTC (rev 74531)
@@ -121,6 +121,7 @@
       assertEquals("jar1", title1);
       jar1DSMF.close();
    }
+
    /**
     * JBVFS-17 test
     * @throws Exception
@@ -156,7 +157,6 @@
       jar1DSMF.close();
    }
 
-/*
    public void testLevelZips() throws Exception
    {
       URL rootURL = getResource("/vfs/test");
@@ -203,7 +203,6 @@
       textThree = two.findChild("level3.zip/test3.txt");
       testText(textThree);
    }
-*/
 
    protected void testText(VirtualFile file) throws Exception
    {

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-06-13 12:21:35 UTC (rev 74530)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARVFSContextUnitTestCase.java	2008-06-13 12:41:40 UTC (rev 74531)
@@ -161,4 +161,24 @@
       InputStream is = target.openStream();
       assertFalse("input stream closed", is.read() == -1);
    }
+
+   public void testInnerJarOverURL() throws Exception
+   {
+      URL url = getResource("/vfs/test/nested/" + getNestedName() + ".jar");
+      String urlString = url.toExternalForm();
+      URL vfsURL = new URL(getProtocol() + urlString.substring(4) + "/complex.jar");
+      InputStream is = vfsURL.openStream();
+      assertNotNull(is);
+   }
+
+   // we need to make sure this doesn't get touched before
+   protected String getNestedName()
+   {
+      return "nested";
+   }
+
+   protected String getProtocol()
+   {
+      return "vfsfile";
+   }
 }

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/ZipEntryVFSContextUnitTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/ZipEntryVFSContextUnitTestCase.java	2008-06-13 12:21:35 UTC (rev 74530)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/ZipEntryVFSContextUnitTestCase.java	2008-06-13 12:41:40 UTC (rev 74531)
@@ -26,6 +26,7 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URL;
+import java.util.Map;
 
 import junit.framework.Test;
 import org.jboss.virtual.VFS;
@@ -43,6 +44,8 @@
  */
 public class ZipEntryVFSContextUnitTestCase extends JARVFSContextUnitTestCase
 {
+   private Map ctxCacheMap;
+
    public ZipEntryVFSContextUnitTestCase(String name)
    {
       super(name);
@@ -55,6 +58,25 @@
       return suite(ZipEntryVFSContextUnitTestCase.class);
    }
 
+/*
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+
+      SecurityManager sm = System.getSecurityManager();
+      System.setSecurityManager(null);
+      try
+      {
+         Field field = ZipEntryContextFactory.class.getDeclaredField("ctxCache");
+         ctxCacheMap = (Map)field.get(ZipEntryContextFactory.getInstance());
+      }
+      finally
+      {
+         System.setSecurityManager(sm);
+      }
+   }
+*/
+
    protected VFSContext getVFSContext(String name) throws Exception
    {
       URL url = getResource("/vfs/context/jar/" + name + ".jar");
@@ -121,4 +143,15 @@
       handler = ctx.getRoot().getChild("notanarchive.jar");
       assertTrue("is leaf", handler.isLeaf());
    }
+
+   // we need to make sure this doesn't get touched before
+   protected String getNestedName()
+   {
+      return super.getNestedName() + "_copy";
+   }
+
+   protected String getProtocol()
+   {
+      return "vfszip";
+   }
 }
\ No newline at end of file

Added: projects/vfs/trunk/src/test/resources/vfs/test/nested/nested.jar
===================================================================
(Binary files differ)


Property changes on: projects/vfs/trunk/src/test/resources/vfs/test/nested/nested.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: projects/vfs/trunk/src/test/resources/vfs/test/nested/nested_copy.jar
===================================================================
(Binary files differ)


Property changes on: projects/vfs/trunk/src/test/resources/vfs/test/nested/nested_copy.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-cvs-commits mailing list