diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java index 08cc241fa2a..dadde77f4c6 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/resource/GzipResourceResolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,7 +48,7 @@ public class GzipResourceResolver extends AbstractResourceResolver { List locations, ResourceResolverChain chain) { Resource resource = chain.resolveResource(request, requestPath, locations); - if ((resource == null) || !isGzipAccepted(request)) { + if ((resource == null) || (request != null && !isGzipAccepted(request))) { return resource; } diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipResourceResolverTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipResourceResolverTests.java index 7dd3322d9a3..78b86d29067 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipResourceResolverTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/resource/GzipResourceResolverTests.java @@ -149,4 +149,21 @@ public class GzipResourceResolverTests { assertFalse("Expected " + resolved + " to *not* be of type " + EncodedResource.class, resolved instanceof EncodedResource); } + + // SPR-13149 + @Test + public void resolveWithNullRequest() throws IOException { + + String file = "js/foo.js"; + String gzFile = file+".gz"; + Resource gzResource = new ClassPathResource("test/"+gzFile, getClass()); + + // resolved resource is now cached in CachingResourceResolver + Resource resolved = resolver.resolveResource(null, file, locations); + + assertEquals(gzResource.getDescription(), resolved.getDescription()); + assertEquals(new ClassPathResource("test/" + file).getFilename(), resolved.getFilename()); + assertTrue("Expected " + resolved + " to be of type " + EncodedResource.class, + resolved instanceof EncodedResource); + } }