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-26 14:19:59 +01:00
parent 9175fa2148
commit 6b07c53c61
2 changed files with 9 additions and 1 deletions

View File

@@ -179,7 +179,8 @@ public class PathResourceResolver extends AbstractResourceResolver {
resourcePath = resource.getURL().getPath();
locationPath = StringUtils.cleanPath(location.getURL().getPath());
}
locationPath = (locationPath.endsWith("/") || locationPath.isEmpty() ? locationPath : locationPath + "/");
locationPath = (StringUtils.getFilenameExtension(locationPath) != null
|| 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));
}
}