From 564a5556191ff39334eabc6d62b87eecf1480c91 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Fri, 25 Apr 2014 15:15:53 +0200 Subject: [PATCH] Fix NPE in PrefixResourceResolver The ResourceResolverChain can return null, so PrefixResourceResolver should be skipped in that case. --- .../web/servlet/resource/PrefixResourceResolver.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/PrefixResourceResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/PrefixResourceResolver.java index b5cc6f5246..f99a4b6ec5 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/PrefixResourceResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/PrefixResourceResolver.java @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.core.io.Resource; import org.springframework.util.Assert; +import org.springframework.util.StringUtils; import javax.servlet.http.HttpServletRequest; import java.util.List; @@ -43,11 +44,8 @@ import java.util.List; */ public class PrefixResourceResolver extends AbstractResourceResolver { - private static final Log logger = LogFactory.getLog(PathResourceResolver.class); - private final String prefix; - public PrefixResourceResolver(String prefix) { Assert.hasText(prefix, "prefix must not be null or empty"); this.prefix = prefix.startsWith("/") ? prefix.substring(1) : prefix; @@ -57,9 +55,6 @@ public class PrefixResourceResolver extends AbstractResourceResolver { protected Resource resolveResourceInternal(HttpServletRequest request, String requestPath, List locations, ResourceResolverChain chain) { - if (logger.isTraceEnabled()) { - logger.trace("Resolving resource: requestPath=\"" + requestPath + "\""); - } if (requestPath.startsWith(this.prefix)) { requestPath = requestPath.substring(this.prefix.length()); } @@ -72,7 +67,10 @@ public class PrefixResourceResolver extends AbstractResourceResolver { ResourceResolverChain chain) { String baseUrl = chain.resolvePublicUrlPath(resourceUrlPath, locations); - return this.prefix + (baseUrl.startsWith("/") ? baseUrl : "/" + baseUrl); + if (StringUtils.hasText(baseUrl)) { + return this.prefix + (baseUrl.startsWith("/") ? baseUrl : "/" + baseUrl); + } + return baseUrl; } }