mbenson 2004/04/05 14:26:45
Modified: src/main/org/apache/tools/ant/launch Locator.java
Log:
Fix the previous change; handle invalid URLs and 1.2 compatibility.
Submitted by: Martijn Kruithof, Rainer Noack
Revision Changes Path
1.13 +15 -11 ant/src/main/org/apache/tools/ant/launch/Locator.java
Index: Locator.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/launch/Locator.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Locator.java 2 Apr 2004 20:20:43 -0000 1.12
+++ Locator.java 5 Apr 2004 21:26:45 -0000 1.13
@@ -101,21 +101,25 @@
* @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);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]