Merge branch '1.5.x'

pull/10447/merge
Andy Wilkinson 7 years ago
commit b6a0d67332

@ -104,7 +104,7 @@ final class ChangeableUrls implements Iterable<URL> {
return Collections.<URL>emptyList();
}
try {
return getUrlsFromManifestClassPathAttribute(jarFile);
return getUrlsFromManifestClassPathAttribute(url, jarFile);
}
catch (IOException ex) {
throw new IllegalStateException(
@ -126,8 +126,8 @@ final class ChangeableUrls implements Iterable<URL> {
return null;
}
private static List<URL> getUrlsFromManifestClassPathAttribute(JarFile jarFile)
throws IOException {
private static List<URL> getUrlsFromManifestClassPathAttribute(URL jarUrl,
JarFile jarFile) throws IOException {
Manifest manifest = jarFile.getManifest();
if (manifest == null) {
return Collections.<URL>emptyList();
@ -139,16 +139,12 @@ final class ChangeableUrls implements Iterable<URL> {
}
String[] entries = StringUtils.delimitedListToStringArray(classPath, " ");
List<URL> urls = new ArrayList<>(entries.length);
File parent = new File(jarFile.getName()).getParentFile();
List<File> nonExistentEntries = new ArrayList<>();
List<URL> nonExistentEntries = new ArrayList<>();
for (String entry : entries) {
try {
File referenced = new File(entry);
if (!referenced.isAbsolute()) {
referenced = new File(parent, entry);
}
if (referenced.exists()) {
urls.add(referenced.toURI().toURL());
URL referenced = new URL(jarUrl, entry);
if (new File(referenced.getFile()).exists()) {
urls.add(referenced);
}
else {
nonExistentEntries.add(referenced);

@ -75,11 +75,12 @@ public class ChangeableUrlsTests {
@Test
public void urlsFromJarClassPathAreConsidered() throws Exception {
File relative = this.temporaryFolder.newFolder();
File absolute = this.temporaryFolder.newFolder();
File absoluteFile = this.temporaryFolder.newFolder();
URL absoluteUrl = this.temporaryFolder.newFolder().toURI().toURL();
File jarWithClassPath = makeJarFileWithUrlsInManifestClassPath(
"project-core/target/classes/", "project-web/target/classes/",
"does-not-exist/target/classes", relative.getName() + "/",
absolute.getAbsolutePath() + "/");
absoluteFile.getAbsolutePath() + "/", absoluteUrl);
new File(jarWithClassPath.getParentFile(), "project-core/target/classes")
.mkdirs();
new File(jarWithClassPath.getParentFile(), "project-web/target/classes").mkdirs();
@ -89,7 +90,7 @@ public class ChangeableUrlsTests {
assertThat(urls.toList()).containsExactly(
new URL(jarWithClassPath.toURI().toURL(), "project-core/target/classes/"),
new URL(jarWithClassPath.toURI().toURL(), "project-web/target/classes/"),
relative.toURI().toURL(), absolute.toURI().toURL());
relative.toURI().toURL(), absoluteFile.toURI().toURL(), absoluteUrl);
}
private URL makeUrl(String name) throws IOException {

Loading…
Cancel
Save