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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 2 18:10:16 EST 2009


Author: alesj
Date: 2009-02-02 18:10:16 -0500 (Mon, 02 Feb 2009)
New Revision: 83788

Modified:
   projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/DelegatingHandler.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileHandler.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/jar/AbstractJarHandler.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/memory/MemoryContextHandler.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/temp/BasicTempInfo.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledDirectoryHandler.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledFileHandler.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/ByteArrayHandler.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryHandler.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java
Log:
Change how temps handle url/uri --> pointing to original.

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -122,6 +122,9 @@
    /** The temp marker flag */
    public static final String IS_TEMP_FILE = "IS_TEMP_FILE";
 
+   /** The old root string */
+   public static final String OLD_ROOT_STRING = "OLD_ROOT_STRING";
+
    /**
     * Stop cache.
     */

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -108,6 +108,9 @@
    /** The cached last modified */
    protected transient long cachedLastModified;
 
+   /** The vfsUrlCache */
+   private transient URL vfsUrlCached;
+
    /**
     * Create a new handler
     * 
@@ -270,6 +273,60 @@
 
    public URL toVfsUrl() throws MalformedURLException, URISyntaxException
    {
+      if (vfsUrlCached == null)
+      {
+         if (isTemporary())
+         {
+            StringBuffer buf = new StringBuffer(getProtocol()).append(':');
+
+            VFSContext context = getVFSContext();
+            String rootString = context.getOptions().get(VFSUtils.OLD_ROOT_STRING);
+            if (rootString == null)
+            {
+               URI rootURI = context.getRootURI();
+               rootString = VFSUtils.stripProtocol(rootURI);
+            }
+
+            buf.append(rootString);
+            String path = getPathName();
+            if (path != null && path.length() > 0)
+            {
+               if (buf.charAt(buf.length() - 1) != '/')
+               {
+                  buf.append('/');
+               }
+               buf.append(getPathName());
+            }
+
+            vfsUrlCached = new URL(buf.toString());
+         }
+         else
+         {
+            vfsUrlCached = toInternalVfsUrl();
+         }
+      }
+      return vfsUrlCached;
+   }
+
+   /**
+    * Get the protocol.
+    *
+    * @return the protocol
+    */
+   protected String getProtocol()
+   {
+      throw new IllegalArgumentException("Unsupported impl.");
+   }
+
+   /**
+    * Get internal representation of vfs url.
+    *
+    * @return the vfs url
+    * @throws MalformedURLException for any error
+    * @throws URISyntaxException for any error
+    */
+   protected URL toInternalVfsUrl() throws MalformedURLException, URISyntaxException
+   {
       return vfsUrl;
    }
 

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/DelegatingHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/DelegatingHandler.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/DelegatingHandler.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -89,6 +89,15 @@
       return delegate;
    }
 
+   protected String getProtocol()
+   {
+      if (delegate instanceof AbstractVirtualFileHandler)
+      {
+         return ((AbstractVirtualFileHandler)delegate).getProtocol();
+      }
+      return null;
+   }
+
    /**
     * Set the vfs url.
     *

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileHandler.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileHandler.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -98,8 +98,13 @@
       // ignore that url.openConnection.lastModified
    }
 
-   public URL toVfsUrl() throws MalformedURLException, URISyntaxException
+   protected String getProtocol()
    {
+      return "vfsfile";
+   }
+
+   protected URL toInternalVfsUrl() throws MalformedURLException, URISyntaxException
+   {
       if (getVfsUrl() == null)
       {
          setVfsUrl(new URL("vfs" + getURL()));

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	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -64,7 +64,7 @@
  */
 public class FileSystemContext extends AbstractVFSContext
 {
-   private static final Logger log = Logger.getLogger(FileSystemContext.class);
+   protected static final Logger log = Logger.getLogger(FileSystemContext.class);
 
    /** true if forcing fallback to vfsjar from default vfszip */
    private static boolean forceVfsJar;

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -80,6 +80,11 @@
       this.entry = entry;
    }
 
+   protected String getProtocol()
+   {
+      return "vfsjar";
+   }
+
    /**
     * Get the jar.
     *

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/memory/MemoryContextHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/memory/MemoryContextHandler.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/memory/MemoryContextHandler.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -63,6 +63,11 @@
       }
    }
 
+   protected String getProtocol()
+   {
+      return "vfsmemory";
+   }
+
    protected synchronized void addChild(String name, MemoryContextHandler child)
    {
       if (entryMap == Collections.EMPTY_MAP)

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/temp/BasicTempInfo.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/temp/BasicTempInfo.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/temp/BasicTempInfo.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -72,4 +72,10 @@
    {
       this.handler = handler;
    }
+
+   @Override
+   public String toString()
+   {
+      return getPath() + " / " + getTempFile().getName();
+   }
 }
\ No newline at end of file

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledDirectoryHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledDirectoryHandler.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledDirectoryHandler.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -63,6 +63,11 @@
       setVfsUrl(new URL("vfs", context.getName(), -1, path, new AssembledUrlStreamHandler(context)));
    }
 
+   protected String getProtocol()
+   {
+      return "vfs";
+   }
+
    public VirtualFileHandler addChild(VirtualFileHandler handler)
    {
       if (handler.getClass().isAnnotationPresent(Assembled.class) == false)

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledFileHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledFileHandler.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledFileHandler.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -50,6 +50,12 @@
       setVfsUrl(new URL("vfs", context.getName(), -1, path, new AssembledUrlStreamHandler(context)));
    }
 
+   @Override
+   protected String getProtocol()
+   {
+      return "vfs";
+   }
+
    public List<VirtualFileHandler> getChildren(boolean ignoreErrors) throws IOException
    {
       throw new IOException("File cannot have children: " + this);

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/ByteArrayHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/ByteArrayHandler.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/ByteArrayHandler.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -60,6 +60,11 @@
       setVfsUrl(new URL("vfs", context.getName(), -1, path, new AssembledUrlStreamHandler(context)));
    }
 
+   protected String getProtocol()
+   {
+      return "vfsmemory";
+   }
+
    @Override
    public URL toURL() throws MalformedURLException, URISyntaxException
    {

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryHandler.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryHandler.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -72,6 +72,11 @@
       }
    }
 
+   protected String getProtocol()
+   {
+      return "vfszip";
+   }
+
    private synchronized void init()
    {
       if (initialized)
@@ -199,7 +204,7 @@
       return ((ZipEntryContext) getLocalVFSContext());
    }
 
-   public URL toVfsUrl()
+   protected URL toInternalVfsUrl()
    {
       init();
       return super.getVfsUrl();

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	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -134,14 +134,18 @@
       // unpack handler
       File copy = copy(guidDir, handler);
 
+      String path = handler.getPathName();
       VFSContext oldVFSContext = handler.getVFSContext();
       // create new handler
-      FileSystemContext fileSystemContext = new TempContext(copy, oldVFSContext, handler.getPathName());
+      FileSystemContext fileSystemContext = new TempContext(copy, oldVFSContext, path);
 
       // merge old options
       Map<String, String> newOptions = fileSystemContext.getOptions();
       if (newOptions != null) // shouldn't be null, but we check anyway
+      {
          newOptions.put(VFSUtils.IS_TEMP_FILE, Boolean.TRUE.toString());
+         newOptions.put(VFSUtils.OLD_ROOT_STRING, VFSUtils.stripProtocol(oldVFSContext.getRootURI()) + path);
+      }
       Map<String, String> oldOptions = oldVFSContext.getOptions();
       if (newOptions != null && oldOptions != null && oldOptions.isEmpty() == false)
          newOptions.putAll(oldOptions);
@@ -152,7 +156,7 @@
          fileSystemContext.setExceptionHandler(eh);
 
       VirtualFileHandler newHandler = fileSystemContext.getRoot();
-      oldVFSContext.addTempInfo(new BasicTempInfo(handler.getPathName(), copy, newHandler));
+      oldVFSContext.addTempInfo(new BasicTempInfo(path, copy, newHandler));
 
       VirtualFileHandler parent = handler.getParent();
       if (parent != null && replaceOldHandler(parent, handler, newHandler))

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java	2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java	2009-02-02 23:10:16 UTC (rev 83788)
@@ -268,4 +268,28 @@
 
       assertCopyMechanismFiles(0);
    }
+
+   // TODO - move this test
+   public void testTempUrls() throws Exception
+   {
+      URL url = getResource("/vfs/test");
+      String urlString = VFSUtils.stripProtocol(VFSUtils.toURI(url));
+      VFS root = VFS.getVFS(url);
+
+      VirtualFile ear = root.getChild("level1.zip");
+      VirtualFile earCopy = VFSUtils.temp(ear);
+      assertEquals("vfszip:" + urlString + "level1.zip", earCopy.toURL().toExternalForm());
+
+      VirtualFile l2 = earCopy.getChild("level2.zip");
+      assertEquals("vfszip:" + urlString + "level1.zip/level2.zip", l2.toURL().toExternalForm());
+      VirtualFile l2sub = l2.getChild("test2.txt");
+      assertEquals("vfszip:" + urlString + "level1.zip/level2.zip/test2.txt", l2sub.toURL().toExternalForm());
+
+      VirtualFile l3 = l2.getChild("level3.zip");
+      assertEquals("vfszip:" + urlString + "level1.zip/level2.zip/level3.zip", l3.toURL().toExternalForm());
+      VirtualFile l3sub = l3.getChild("test3.txt");
+      assertEquals("vfszip:" + urlString + "level1.zip/level2.zip/level3.zip/test3.txt", l3sub.toURL().toExternalForm());
+
+      ear.cleanup();
+   }
 }
\ No newline at end of file




More information about the jboss-cvs-commits mailing list