Commit 078536ad authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '2.1.x'

Closes gh-18502
parents bc8a88d7 f42b442c
...@@ -22,6 +22,7 @@ import java.lang.management.ManagementFactory; ...@@ -22,6 +22,7 @@ import java.lang.management.ManagementFactory;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.net.URLClassLoader; import java.net.URLClassLoader;
import java.net.URLDecoder;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
...@@ -156,7 +157,13 @@ final class ChangeableUrls implements Iterable<URL> { ...@@ -156,7 +157,13 @@ final class ChangeableUrls implements Iterable<URL> {
urls.add(referenced); urls.add(referenced);
} }
else { else {
nonExistentEntries.add(referenced); referenced = new URL(jarUrl, URLDecoder.decode(entry, "UTF-8"));
if (new File(referenced.getFile()).exists()) {
urls.add(referenced);
}
else {
nonExistentEntries.add(referenced);
}
} }
} }
catch (MalformedURLException ex) { catch (MalformedURLException ex) {
......
...@@ -87,14 +87,17 @@ class ChangeableUrlsTests { ...@@ -87,14 +87,17 @@ class ChangeableUrlsTests {
absolute.mkdirs(); absolute.mkdirs();
URL absoluteUrl = absolute.toURI().toURL(); URL absoluteUrl = absolute.toURI().toURL();
File jarWithClassPath = makeJarFileWithUrlsInManifestClassPath("project-core/target/classes/", File jarWithClassPath = makeJarFileWithUrlsInManifestClassPath("project-core/target/classes/",
"project-web/target/classes/", "does-not-exist/target/classes", relative.getName() + "/", absoluteUrl); "project-web/target/classes/", "project%20space/target/classes/", "does-not-exist/target/classes/",
relative.getName() + "/", absoluteUrl);
new File(jarWithClassPath.getParentFile(), "project-core/target/classes").mkdirs(); new File(jarWithClassPath.getParentFile(), "project-core/target/classes").mkdirs();
new File(jarWithClassPath.getParentFile(), "project-web/target/classes").mkdirs(); new File(jarWithClassPath.getParentFile(), "project-web/target/classes").mkdirs();
new File(jarWithClassPath.getParentFile(), "project space/target/classes").mkdirs();
ChangeableUrls urls = ChangeableUrls.fromClassLoader( ChangeableUrls urls = ChangeableUrls.fromClassLoader(
new URLClassLoader(new URL[] { jarWithClassPath.toURI().toURL(), makeJarFileWithNoManifest() })); new URLClassLoader(new URL[] { jarWithClassPath.toURI().toURL(), makeJarFileWithNoManifest() }));
assertThat(urls.toList()).containsExactly( assertThat(urls.toList()).containsExactly(
new URL(jarWithClassPath.toURI().toURL(), "project-core/target/classes/"), new URL(jarWithClassPath.toURI().toURL(), "project-core/target/classes/"),
new URL(jarWithClassPath.toURI().toURL(), "project-web/target/classes/"), relative.toURI().toURL(), new URL(jarWithClassPath.toURI().toURL(), "project-web/target/classes/"),
new URL(jarWithClassPath.toURI().toURL(), "project space/target/classes/"), relative.toURI().toURL(),
absoluteUrl); absoluteUrl);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment