Browse Source

escape none URL characters

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@395206 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Reilly 19 years ago
parent
commit
1f4efcbdd4
1 changed files with 20 additions and 2 deletions
  1. +20
    -2
      src/main/org/apache/tools/ant/launch/Locator.java

+ 20
- 2
src/main/org/apache/tools/ant/launch/Locator.java View File

@@ -401,7 +401,20 @@ public final class Locator {
String path = location.getPath(); String path = location.getPath();
for (int i = 0; i < extensions.length; ++i) { for (int i = 0; i < extensions.length; ++i) {
if (path.toLowerCase().endsWith(extensions[i])) { if (path.toLowerCase().endsWith(extensions[i])) {
urls[0] = location.toURL();
try {
/**
* File.toURL() does not encode characters like #.
* File.toURI() has been introduced in java 1.4, so
* ANT cannot use it (except by reflection)
* FileUtils.toURI() cannot be used by Locator.java
* Implemented this way.
* File.toURL() adds file: and changes '\' to '/' for dos OSes
* encodeUri converts characters like ' ' and '#' to %DD
*/
urls[0] = new URL(encodeUri(location.toURL().toString()));
} catch (UnsupportedEncodingException ex) {
throw new MalformedURLException(ex.toString());
}
break; break;
} }
} }
@@ -420,7 +433,12 @@ public final class Locator {
}); });
urls = new URL[matches.length]; urls = new URL[matches.length];
for (int i = 0; i < matches.length; ++i) { for (int i = 0; i < matches.length; ++i) {
urls[i] = matches[i].toURL();
try {
// See comments above.
urls[i] = new URL(encodeUri(matches[i].toURL().toString()));
} catch (UnsupportedEncodingException ex) {
throw new MalformedURLException(ex.toString());
}
} }
return urls; return urls;
} }


Loading…
Cancel
Save