Browse Source

Tolerate absolute URLs in manifest's Class-Path attribute

Closes gh-10268
pull/8753/merge
Andy Wilkinson 9 years ago
parent
commit
7eb9193862
  1. 5
      spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/ChangeableUrls.java
  2. 6
      spring-boot-devtools/src/test/java/org/springframework/boot/devtools/restart/ChangeableUrlsTests.java

5
spring-boot-devtools/src/main/java/org/springframework/boot/devtools/restart/ChangeableUrls.java

@ -143,7 +143,10 @@ final class ChangeableUrls implements Iterable<URL> { @@ -143,7 +143,10 @@ final class ChangeableUrls implements Iterable<URL> {
List<File> nonExistentEntries = new ArrayList<File>();
for (String entry : entries) {
try {
File referenced = new File(parent, entry);
File referenced = new File(entry);
if (!referenced.isAbsolute()) {
referenced = new File(parent, entry);
}
if (referenced.exists()) {
urls.add(referenced.toURI().toURL());
}

6
spring-boot-devtools/src/test/java/org/springframework/boot/devtools/restart/ChangeableUrlsTests.java

@ -75,9 +75,11 @@ public class ChangeableUrlsTests { @@ -75,9 +75,11 @@ public class ChangeableUrlsTests {
@Test
public void urlsFromJarClassPathAreConsidered() throws Exception {
File relative = this.temporaryFolder.newFolder();
File absolute = this.temporaryFolder.newFolder();
File jarWithClassPath = makeJarFileWithUrlsInManifestClassPath(
"project-core/target/classes/", "project-web/target/classes/",
"does-not-exist/target/classes", relative.getName() + "/");
"does-not-exist/target/classes", relative.getName() + "/",
absolute.getAbsolutePath() + "/");
new File(jarWithClassPath.getParentFile(), "project-core/target/classes")
.mkdirs();
new File(jarWithClassPath.getParentFile(), "project-web/target/classes").mkdirs();
@ -87,7 +89,7 @@ public class ChangeableUrlsTests { @@ -87,7 +89,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());
relative.toURI().toURL(), absolute.toURI().toURL());
}
private URL makeUrl(String name) throws IOException {

Loading…
Cancel
Save