Browse Source

Retain original URL instance in case of custom URLStreamHandler

Closes gh-33199
pull/33365/head
Juergen Hoeller 2 years ago
parent
commit
2bfff7fc37
  1. 8
      spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java

8
spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java

@ -428,12 +428,18 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol @@ -428,12 +428,18 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol
if (!cleanedPath.equals(urlString)) {
// Prefer cleaned URL, aligned with UrlResource#createRelative(String)
try {
return new UrlResource(ResourceUtils.toURI(cleanedPath));
// Cannot test for URLStreamHandler directly: URL equality for same String
// in order to find out whether original URL uses default URLStreamHandler.
if (ResourceUtils.toURL(urlString).equals(url)) {
// Plain URL with default URLStreamHandler -> replace with cleaned path.
return new UrlResource(ResourceUtils.toURI(cleanedPath));
}
}
catch (URISyntaxException | MalformedURLException ex) {
// Fallback to regular URL construction below...
}
}
// Retain original URL instance, potentially including custom URLStreamHandler.
return new UrlResource(url);
}
}

Loading…
Cancel
Save