Remove assertion on number of resource locations

With the new ResourceResolver abstraction and resource resolver chain
in 4.1, the assumption that resources are found by checking for the URL
path under the configured locations is no longer accurate.

A custom ResourceResolver could find resources in ways that don't
depend on a list of locations.

Issuse: SPR-12133
master
Rossen Stoyanchev 10 years ago
parent d9f4016c35
commit 4df05d1f98
  1. 1
      spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistration.java
  2. 12
      spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java

@ -141,7 +141,6 @@ public class ResourceHandlerRegistration {
* Returns a {@link ResourceHttpRequestHandler} instance.
*/
protected ResourceHttpRequestHandler getRequestHandler() {
Assert.isTrue(!CollectionUtils.isEmpty(locations), "At least one location is required for resource handling.");
ResourceHttpRequestHandler handler = new ResourceHttpRequestHandler();
if (this.resourceChainRegistration != null) {
handler.setResourceResolvers(this.resourceChainRegistration.getResourceResolvers());

@ -86,11 +86,11 @@ public class ResourceHttpRequestHandler extends WebContentGenerator implements H
private static final String CONTENT_ENCODING = "Content-Encoding";
private List<Resource> locations;
private final List<Resource> locations = new ArrayList<Resource>(4);
private final List<ResourceResolver> resourceResolvers = new ArrayList<ResourceResolver>();
private final List<ResourceResolver> resourceResolvers = new ArrayList<ResourceResolver>(4);
private final List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>();
private final List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>(4);
public ResourceHttpRequestHandler() {
@ -105,7 +105,8 @@ public class ResourceHttpRequestHandler extends WebContentGenerator implements H
*/
public void setLocations(List<Resource> locations) {
Assert.notEmpty(locations, "Locations list must not be empty");
this.locations = locations;
this.locations.clear();
this.locations.addAll(locations);
}
public List<Resource> getLocations() {
@ -154,7 +155,8 @@ public class ResourceHttpRequestHandler extends WebContentGenerator implements H
@Override
public void afterPropertiesSet() throws Exception {
if (logger.isWarnEnabled() && CollectionUtils.isEmpty(this.locations)) {
logger.warn("Locations list is empty. No resources will be served");
logger.warn("Locations list is empty. No resources will be served unless a " +
"custom ResourceResolver is configured as an alternative to PathResourceResolver.");
}
}

Loading…
Cancel
Save