Updated Branches:
  refs/heads/master 54c86ebbd -> b672cb2d2

WICKET-4509 url must be decoded for local files


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b672cb2d
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b672cb2d
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b672cb2d

Branch: refs/heads/master
Commit: b672cb2d215e5d65ca64c9d5afa401433318d805
Parents: 54c86eb
Author: Sven Meier <[email protected]>
Authored: Mon Apr 23 17:51:01 2012 +0200
Committer: Sven Meier <[email protected]>
Committed: Mon Apr 23 17:51:01 2012 +0200

----------------------------------------------------------------------
 .../java/org/apache/wicket/util/file/Files.java    |   13 ++++++++-
 .../org/apache/wicket/util/file/FilesTest.java     |   22 ++++++++++++---
 2 files changed, 30 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b672cb2d/wicket-util/src/main/java/org/apache/wicket/util/file/Files.java
----------------------------------------------------------------------
diff --git a/wicket-util/src/main/java/org/apache/wicket/util/file/Files.java 
b/wicket-util/src/main/java/org/apache/wicket/util/file/Files.java
index 3b5b97c..f9d2579 100644
--- a/wicket-util/src/main/java/org/apache/wicket/util/file/Files.java
+++ b/wicket-util/src/main/java/org/apache/wicket/util/file/Files.java
@@ -23,7 +23,9 @@ import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
 import java.net.URL;
+import java.net.URLDecoder;
 
 import org.apache.wicket.util.io.IOUtils;
 import org.apache.wicket.util.io.Streams;
@@ -363,7 +365,16 @@ public class Files
         */
        public static File getLocalFileFromUrl(URL url)
        {
-               return getLocalFileFromUrl(Args.notNull(url, 
"url").toExternalForm());
+               final URL location = Args.notNull(url, "url");
+
+               try
+               {
+                       return 
getLocalFileFromUrl(URLDecoder.decode(location.toExternalForm(), "UTF-8"));
+               }
+               catch (UnsupportedEncodingException ex)
+               {
+                       return null;
+               }
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/b672cb2d/wicket-util/src/test/java/org/apache/wicket/util/file/FilesTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-util/src/test/java/org/apache/wicket/util/file/FilesTest.java 
b/wicket-util/src/test/java/org/apache/wicket/util/file/FilesTest.java
index b3e362d..8e4ee9e 100644
--- a/wicket-util/src/test/java/org/apache/wicket/util/file/FilesTest.java
+++ b/wicket-util/src/test/java/org/apache/wicket/util/file/FilesTest.java
@@ -17,6 +17,7 @@
 package org.apache.wicket.util.file;
 
 import java.io.IOException;
+import java.net.URL;
 
 import org.junit.Assert;
 import org.junit.Test;
@@ -98,8 +99,8 @@ public class FilesTest extends Assert
 
                File nonExistingFile = new File(
                        
"/somethingThatDoesntExistsOnMostMachines-111111111111111111111111111111");
-               assertTrue("Even non existing file are scheduled for 
deletion.", Files.removeFolderAsync(
-                       nonExistingFile, fileCleaner));
+               assertTrue("Even non existing file are scheduled for deletion.",
+                       Files.removeFolderAsync(nonExistingFile, fileCleaner));
                assertFalse(nonExistingFile.exists());
 
                java.io.File file = 
java.io.File.createTempFile("wicket-test--", ".tmp");
@@ -148,11 +149,24 @@ public class FilesTest extends Assert
                file.createNewFile();
                assertTrue(file.exists());
 
-               assertTrue("The folder is scheduled for deletion.", 
Files.removeFolderAsync(folder,
-                       fileCleaner));
+               assertTrue("The folder is scheduled for deletion.",
+                       Files.removeFolderAsync(folder, fileCleaner));
                // give chance to the file cleaner to run and delete the folder
                System.gc();
                Thread.sleep(5);
                assertFalse("", folder.exists());
        }
+
+       /**
+        * WICKET-4509
+        * 
+        * @throws Exception
+        */
+       @Test
+       public void fileWithWhitespace() throws Exception
+       {
+               URL url = new URL("file:/file%20with%20whitespace");
+
+               assertEquals("/file with whitespace", 
Files.getLocalFileFromUrl(url).getPath());
+       }
 }

Reply via email to