[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