From 8195ed0fa714966dcfb8ad81fcd6114fa5b85076 Mon Sep 17 00:00:00 2001 From: Matthew Jason Benson Date: Mon, 5 Apr 2004 21:26:45 +0000 Subject: [PATCH] Fix the previous change; handle invalid URLs and 1.2 compatibility. Submitted by: Martijn Kruithof, Rainer Noack git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@276278 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/tools/ant/launch/Locator.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/org/apache/tools/ant/launch/Locator.java b/src/main/org/apache/tools/ant/launch/Locator.java index 97e5d94d5..ec790e38e 100644 --- a/src/main/org/apache/tools/ant/launch/Locator.java +++ b/src/main/org/apache/tools/ant/launch/Locator.java @@ -101,21 +101,25 @@ public final class Locator { * @since Ant 1.6 */ public static String fromURI(String uri) { + URL url = null; try { - URL url = new URL(uri); - if (!("file".equals(url.getProtocol()))) { - throw new IllegalArgumentException("Can only handle file: URIs"); - } - StringBuffer buf = new StringBuffer(url.getHost()); - if (buf.length() > 0) { - buf.insert(0, "//"); - } - buf.append(url.getPath()); - uri = buf.toString(); + url = new URL(uri); } catch (MalformedURLException emYouEarlEx) { } + if (url == null || !("file".equals(url.getProtocol()))) { + throw new IllegalArgumentException("Can only handle valid file: URIs"); + } + StringBuffer buf = new StringBuffer(url.getHost()); + if (buf.length() > 0) { + buf.insert(0, File.separatorChar).insert(0, File.separatorChar); + } + + String file = url.getFile(); + int queryPos = file.indexOf('?'); + buf.append((queryPos < 0) ? file : file.substring(0, queryPos)); + + uri = buf.toString().replace('/', File.separatorChar); - uri = uri.replace('/', File.separatorChar); if (File.pathSeparatorChar == ';' && uri.startsWith("\\") && uri.length() > 2 && Character.isLetter(uri.charAt(1)) && uri.lastIndexOf(':') > -1) { uri = uri.substring(1);