[jboss-cvs] JBossAS SVN: r74282 - 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
Sun Jun 8 06:59:59 EDT 2008


Author: alesj
Date: 2008-06-08 06:59:58 -0400 (Sun, 08 Jun 2008)
New Revision: 74282

Modified:
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/TempCopyMechanism.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/CopyTest.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/DetachedCopyTest.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/ExplodeTestCase.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/TempTestCase.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/UnpackTestCase.java
Log:
Fix temp handling - direct copy.

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java	2008-06-08 02:29:47 UTC (rev 74281)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java	2008-06-08 10:59:58 UTC (rev 74282)
@@ -100,12 +100,22 @@
     */
    protected abstract boolean replaceOldHandler(VirtualFileHandler parent, VirtualFileHandler oldHandler, VirtualFileHandler newHandler) throws IOException;
 
-   public VirtualFile copy(VirtualFile file, VirtualFileHandler handler) throws IOException, URISyntaxException
+   /**
+    * Unwrap the handler from possible delegate handler.
+    *
+    * @param handler the handler to unwrap
+    * @return unwrapped handler
+    */
+   protected VirtualFileHandler unwrap(VirtualFileHandler handler)
    {
-      VirtualFileHandler unwrapped = handler;
       if (handler instanceof DelegatingHandler)
-         unwrapped = ((DelegatingHandler)handler).getDelegate();
+         handler = ((DelegatingHandler)handler).getDelegate();
+      return handler;
+   }
 
+   public VirtualFile copy(VirtualFile file, VirtualFileHandler handler) throws IOException, URISyntaxException
+   {
+      VirtualFileHandler unwrapped = unwrap(handler);
       // check modification on unwrapped
       if (isAlreadyModified(unwrapped))
       {

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/TempCopyMechanism.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/TempCopyMechanism.java	2008-06-08 02:29:47 UTC (rev 74281)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/TempCopyMechanism.java	2008-06-08 10:59:58 UTC (rev 74282)
@@ -26,6 +26,7 @@
 
 import org.jboss.virtual.plugins.context.jar.NestedJarHandler;
 import org.jboss.virtual.plugins.context.jar.JarHandler;
+import org.jboss.virtual.plugins.context.zip.ZipEntryHandler;
 import org.jboss.virtual.spi.VirtualFileHandler;
 
 /**
@@ -50,13 +51,21 @@
    protected File copy(File guidDir, VirtualFileHandler handler) throws IOException
    {
       // leave top level archives or leaves in one piece
-      if (handler instanceof JarHandler || handler.isLeaf())
+      boolean directRewrite = handler.isLeaf();
+      if (directRewrite == false)
       {
+         VirtualFileHandler unwrapped = unwrap(handler);
+         directRewrite = unwrapped instanceof JarHandler || (unwrapped instanceof ZipEntryHandler && unwrapped.isNested() == false);
+      }
+
+      if (directRewrite)
+      {
          File temp = new File(guidDir, handler.getName());
          temp.deleteOnExit();
          rewrite(handler, temp);
          return temp;
       }
+
       return super.copy(guidDir, handler);
    }
 

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/CopyTest.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/CopyTest.java	2008-06-08 02:29:47 UTC (rev 74281)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/CopyTest.java	2008-06-08 10:59:58 UTC (rev 74282)
@@ -44,24 +44,24 @@
 
    protected abstract VirtualFile modify(VirtualFile file) throws Exception;
 
-   protected void assertNoReplacement(VFS vfs, String name) throws Throwable
+   protected void assertNoReplacement(VFS vfs, String name, boolean unpacked) throws Throwable
    {
       VirtualFile original = vfs.findChild(name);
       VirtualFile replacement = modify(original);
-      assertNoReplacement(original, replacement);
+      assertNoReplacement(original, replacement, unpacked);
    }
 
-   protected abstract void assertNoReplacement(VirtualFile original, VirtualFile replacement) throws Exception;
+   protected abstract void assertNoReplacement(VirtualFile original, VirtualFile replacement, boolean unpacked) throws Exception;
 
    public void testNoReplacement() throws Throwable
    {
       URL rootURL = getResource("/vfs/test");
       VFS vfs = VFS.getVFS(rootURL);
 
-      assertNoReplacement(vfs, "unpacked-outer.jar");
-      assertNoReplacement(vfs, "jar1-filesonly.jar");
-      assertNoReplacement(vfs, "jar1-filesonly.mf");
-      assertNoReplacement(vfs, "unpacked-with-metadata.jar/META-INF");
+      assertNoReplacement(vfs, "unpacked-outer.jar", true);
+      assertNoReplacement(vfs, "jar1-filesonly.jar", false);
+      assertNoReplacement(vfs, "jar1-filesonly.mf", false);
+      assertNoReplacement(vfs, "unpacked-with-metadata.jar/META-INF", true);
    }
 
    public void testCopyOuter() throws Throwable
@@ -170,15 +170,20 @@
 
    protected void assertReplacement(VirtualFile original, VirtualFile replacement) throws Exception
    {
+      assertReplacement(original, replacement, true);
+   }
+
+   protected void assertReplacement(VirtualFile original, VirtualFile replacement, boolean exploded) throws Exception
+   {
       assertEquals(original.getName(), replacement.getName());
       // when mounting via DelegatingHandler, getPathName changes because VFSContext changes
       //assertEquals(original.getPathName(), replacement.getPathName());
 
       // it's a directory
-      if (replacement.isLeaf())
+      if (exploded)
+         assertEquals(0, replacement.getSize());
+      else
          assertEquals(original.getSize(), replacement.getSize());
-      else
-         assertEquals(0, replacement.getSize());
       assertEquals(original.exists(), replacement.exists());
       assertEquals(original.isLeaf(), replacement.isLeaf());
       assertEquals(original.isHidden(), replacement.isHidden());

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/DetachedCopyTest.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/DetachedCopyTest.java	2008-06-08 02:29:47 UTC (rev 74281)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/DetachedCopyTest.java	2008-06-08 10:59:58 UTC (rev 74282)
@@ -35,19 +35,22 @@
       super(s);
    }
 
+   protected abstract boolean isExploded() throws Exception;
+
    protected abstract boolean isSame(VirtualFile original) throws Exception;
 
-   protected void assertNoReplacement(VirtualFile original, VirtualFile replacement) throws Exception
+   protected void assertNoReplacement(VirtualFile original, VirtualFile replacement, boolean unpacked) throws Exception
    {
       if (isSame(original))
          assertSame(original, replacement);
       else
-         assertReplacement(original, replacement);
+         assertReplacement(original, replacement, unpacked || isExploded());
    }
 
    protected void assertTopLevel(VirtualFile original, VirtualFile replacement) throws Exception
    {
-      assertExplodedReplacement(original, replacement);
+      assertReplacement(original, replacement, isExploded());
+      assertNull(replacement.getParent());
    }
 
    protected void assertNestedLevel(VirtualFile original, VirtualFile replacement) throws Exception

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/ExplodeTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/ExplodeTestCase.java	2008-06-08 02:29:47 UTC (rev 74281)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/ExplodeTestCase.java	2008-06-08 10:59:58 UTC (rev 74282)
@@ -47,6 +47,11 @@
       return VFSUtils.explode(file);
    }
 
+   protected boolean isExploded() throws Exception
+   {
+      return true;
+   }
+
    protected boolean isSame(VirtualFile original) throws Exception
    {
       return original.isLeaf();

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/TempTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/TempTestCase.java	2008-06-08 02:29:47 UTC (rev 74281)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/TempTestCase.java	2008-06-08 10:59:58 UTC (rev 74282)
@@ -47,6 +47,11 @@
       return VFSUtils.temp(file);
    }
 
+   protected boolean isExploded() throws Exception
+   {
+      return false;
+   }
+
    protected boolean isSame(VirtualFile original) throws Exception
    {
       // should almost never be same

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/UnpackTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/UnpackTestCase.java	2008-06-08 02:29:47 UTC (rev 74281)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/UnpackTestCase.java	2008-06-08 10:59:58 UTC (rev 74282)
@@ -47,7 +47,7 @@
       return VFSUtils.unpack(file);
    }
 
-   protected void assertNoReplacement(VirtualFile original, VirtualFile replacement) throws Exception
+   protected void assertNoReplacement(VirtualFile original, VirtualFile replacement, boolean exploded) throws Exception
    {
       assertSame(original, replacement);
    }




More information about the jboss-cvs-commits mailing list