From 1970f53722f544819fd7b00698c79785c79b3df9 Mon Sep 17 00:00:00 2001
From: Adam Domurad <adomurad@redhat.com>
Date: Fri, 26 Apr 2013 12:44:48 -0400
Subject: Decode local-file URLs leniently

---
 netx/net/sourceforge/jnlp/cache/ResourceTracker.java | 5 +----
 netx/net/sourceforge/jnlp/util/UrlUtils.java         | 5 +++++
 2 files changed, 6 insertions(+), 4 deletions(-)

(limited to 'netx')

diff --git a/netx/net/sourceforge/jnlp/cache/ResourceTracker.java b/netx/net/sourceforge/jnlp/cache/ResourceTracker.java
index dffbb3b..7b6a772 100644
--- a/netx/net/sourceforge/jnlp/cache/ResourceTracker.java
+++ b/netx/net/sourceforge/jnlp/cache/ResourceTracker.java
@@ -390,7 +390,7 @@ public class ResourceTracker {
                 return resource.localFile;
 
             if (location.getProtocol().equalsIgnoreCase("file")) {
-                File file = new File(location.toURI().getPath());
+                File file = UrlUtils.decodeUrlAsFile(location);
                 if (file.exists())
                     return file;
             }
@@ -401,9 +401,6 @@ public class ResourceTracker {
                 ex.printStackTrace();
 
             return null; // need an error exception to throw
-        } catch (URISyntaxException e) {
-            e.printStackTrace();
-            return null;
         }
     }
 
diff --git a/netx/net/sourceforge/jnlp/util/UrlUtils.java b/netx/net/sourceforge/jnlp/util/UrlUtils.java
index d9d6866..af36a9c 100644
--- a/netx/net/sourceforge/jnlp/util/UrlUtils.java
+++ b/netx/net/sourceforge/jnlp/util/UrlUtils.java
@@ -37,6 +37,7 @@ exception statement from your version.
 
 package net.sourceforge.jnlp.util;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.MalformedURLException;
@@ -134,4 +135,8 @@ public class UrlUtils {
         return normalizeUrlQuietly(url, false);
     }
 
+    /* Decode a URL as a file, being tolerant of URLs with mixed encoded & decoded portions. */
+    public static File decodeUrlAsFile(URL url) {
+        return new File(decodeUrlQuietly(url).getFile());
+    }
 }
-- 
cgit v1.2.3