From 4df05d1f98ade553c085ebd811f806c77f090a7d Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Fri, 29 Aug 2014 11:29:49 -0400 Subject: [PATCH] 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 --- .../annotation/ResourceHandlerRegistration.java | 1 - .../servlet/resource/ResourceHttpRequestHandler.java | 12 +++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistration.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistration.java index ae32369f28..2e8dcc612e 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistration.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistration.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()); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java index 81659155af..d147132a50 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java @@ -86,11 +86,11 @@ public class ResourceHttpRequestHandler extends WebContentGenerator implements H private static final String CONTENT_ENCODING = "Content-Encoding"; - private List locations; + private final List locations = new ArrayList(4); - private final List resourceResolvers = new ArrayList(); + private final List resourceResolvers = new ArrayList(4); - private final List resourceTransformers = new ArrayList(); + private final List resourceTransformers = new ArrayList(4); public ResourceHttpRequestHandler() { @@ -105,7 +105,8 @@ public class ResourceHttpRequestHandler extends WebContentGenerator implements H */ public void setLocations(List locations) { Assert.notEmpty(locations, "Locations list must not be empty"); - this.locations = locations; + this.locations.clear(); + this.locations.addAll(locations); } public List 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."); } }