Allow file locations for resource handling

Prior to this change, location checks for serving resources would append
`/` to the location path it didn't already have one.

This commit makes sure not to append a `/` if the provided location is
actually a file.

Issue: SPR-12747
This commit is contained in:
Brian Clozel
2015-02-27 18:46:10 +01:00
parent b4d9fb9e6e
commit 2c47098b35
2 changed files with 10 additions and 0 deletions

View File

@@ -179,6 +179,9 @@ public class PathResourceResolver extends AbstractResourceResolver {
resourcePath = resource.getURL().getPath();
locationPath = StringUtils.cleanPath(location.getURL().getPath());
}
if(locationPath.equals(resourcePath)) {
return true;
}
locationPath = (locationPath.endsWith("/") || locationPath.isEmpty() ? locationPath : locationPath + "/");
if (!resourcePath.startsWith(locationPath)) {
return false;

View File

@@ -117,4 +117,11 @@ public class PathResourceResolverTests {
assertNotNull(this.resolver.resolveResource(null, "main.css", Arrays.asList(location), null));
}
// SPR-12747
@Test
public void checkFileLocation() throws Exception {
Resource resource = new ClassPathResource("test/main.css", PathResourceResolver.class);
assertTrue(this.resolver.checkResource(resource, resource));
}
}