[jboss-cvs] JBossAS SVN: r76257 - in projects/vfs/trunk/src: main/java/org/jboss/virtual/protocol and 4 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Jul 27 05:39:54 EDT 2008


Author: mstruk
Date: 2008-07-27 05:39:53 -0400 (Sun, 27 Jul 2008)
New Revision: 76257

Added:
   projects/vfs/trunk/src/test/resources/vfs/test/path with spaces/tst%20nospace.jar
Modified:
   projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java
   projects/vfs/trunk/src/main/java/org/jboss/virtual/protocol/AbstractVFSHandler.java
   projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileVFSUnitTestCase.java
Log:
JBVFS-49 testcase and fix

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java	2008-07-27 02:17:58 UTC (rev 76256)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java	2008-07-27 09:39:53 UTC (rev 76257)
@@ -28,6 +28,7 @@
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLDecoder;
+import java.net.MalformedURLException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -478,13 +479,34 @@
       if (url == null)
          throw new IllegalArgumentException("Null url");
 
-      String urispec = url.toExternalForm();
-      // Escape any spaces
-      urispec = urispec.replaceAll(" ", "%20");
-      return new URI(urispec);
+      try
+      {
+         return url.toURI();
+      }
+      catch (URISyntaxException e)
+      {
+         String urispec = url.toExternalForm();
+         // Escape percent sign and spaces
+         urispec = urispec.replaceAll("%", "%25");
+         urispec = urispec.replaceAll(" ", "%20");
+         return new URI(urispec);
+      }
    }
 
    /**
+    * Ensure the url is convertible to URI by encoding spaces and percent characters if necessary
+    *
+    * @param url to be sanitized
+    * @return sanitized URL
+    * @throws URISyntaxException if URI conversion can't be fixed
+    * @throws MalformedURLException if an error occurs
+    */
+   public static URL sanitizeURL(URL url) throws URISyntaxException, MalformedURLException
+   {
+      return toURI(url).toURL();
+   }
+
+   /**
     * Get the options for this file.
     *
     * @param file the file

Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/protocol/AbstractVFSHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/protocol/AbstractVFSHandler.java	2008-07-27 02:17:58 UTC (rev 76256)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/protocol/AbstractVFSHandler.java	2008-07-27 09:39:53 UTC (rev 76257)
@@ -25,6 +25,7 @@
 import java.io.IOException;
 import java.net.URL;
 import java.net.URLConnection;
+import java.net.URLDecoder;
 import java.net.URLStreamHandler;
 import java.util.Map;
 import java.util.WeakHashMap;
@@ -64,7 +65,7 @@
 
    protected URLConnection openConnection(URL url) throws IOException
    {
-      String file = url.toExternalForm().substring(getProtocolNameLength() + 1); // strip out vfs protocol + :
+      String file = URLDecoder.decode(url.toExternalForm(), "UTF-8").substring(getProtocolNameLength() + 1); // strip out vfs protocol + :
       URL vfsurl = null;
       String relative;
       File fp = new File(file);

Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileVFSUnitTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileVFSUnitTestCase.java	2008-07-27 02:17:58 UTC (rev 76256)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileVFSUnitTestCase.java	2008-07-27 09:39:53 UTC (rev 76257)
@@ -1246,6 +1246,18 @@
       URI uri = tstjar.toURI();
       URI expectedURI = new URI("vfs"+rootURL.toString()+"/path%20with%20spaces/tst.jar");
       assertEquals(uri.getPath(), expectedURI.getPath());
+
+      InputStream is = uri.toURL().openStream();
+      is.close();
+
+      tstjar = vfs.findChild("path with spaces/tst%20nospace.jar");
+      assertNotNull("tstjar != null", tstjar);
+      uri = tstjar.toURI();
+      expectedURI = new URI("vfs"+rootURL.toString()+"/path%20with%20spaces/tst%2520nospace.jar");
+      assertEquals(uri.getPath(), expectedURI.getPath());
+
+      is = uri.toURL().openStream();
+      is.close();
    }
 
    public static void main(String[] args) throws Exception

Added: projects/vfs/trunk/src/test/resources/vfs/test/path with spaces/tst%20nospace.jar
===================================================================
(Binary files differ)


Property changes on: projects/vfs/trunk/src/test/resources/vfs/test/path with spaces/tst%20nospace.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-cvs-commits mailing list