@Override protected Resource resolveResourceInternal(@Nullable HttpServletRequest request, String requestPath, List<? extends Resource> locations, ResourceResolverChain chain) { Resource resource = chain.resolveResource(request, requestPath, locations); if (resource == null || request == null) { return resource; } String acceptEncoding = getAcceptEncoding(request); if (acceptEncoding == null) { return resource; } for (String coding : this.contentCodings) { if (acceptEncoding.contains(coding)) { try { String extension = getExtension(coding); Resource encoded = new EncodedResource(resource, coding, extension); if (encoded.exists()) { return encoded; } } catch (IOException ex) { if (logger.isTraceEnabled()) { logger.trace("No " + coding + " resource for [" + resource.getFilename() + "]", ex); } } } } return resource; }
@Override protected Resource resolveResourceInternal(@Nullable HttpServletRequest request, String requestPath, List<? extends Resource> locations, ResourceResolverChain chain) { Resource resource = chain.resolveResource(request, requestPath, locations); if (resource == null || request == null) { return resource; } String acceptEncoding = getAcceptEncoding(request); if (acceptEncoding == null) { return resource; } for (String coding : this.contentCodings) { if (acceptEncoding.contains(coding)) { try { String extension = getExtension(coding); Resource encoded = new EncodedResource(resource, coding, extension); if (encoded.exists()) { return encoded; } } catch (IOException ex) { if (logger.isTraceEnabled()) { logger.trace("No " + coding + " resource for [" + resource.getFilename() + "]", ex); } } } } return resource; }
@Override protected Resource resolveResourceInternal(@Nullable HttpServletRequest request, String requestPath, List<? extends Resource> locations, ResourceResolverChain chain) { Resource resource = chain.resolveResource(request, requestPath, locations); if (resource == null || request == null) { return resource; } String acceptEncoding = getAcceptEncoding(request); if (acceptEncoding == null) { return resource; } for (String coding : this.contentCodings) { if (acceptEncoding.contains(coding)) { try { String extension = getExtension(coding); Resource encoded = new EncodedResource(resource, coding, extension); if (encoded.exists()) { return encoded; } } catch (IOException ex) { if (logger.isTraceEnabled()) { logger.trace("No " + coding + " resource for [" + resource.getFilename() + "]", ex); } } } } return resource; }
@Test public void transformSkippedForGzippedResource() throws Exception { EncodedResourceResolverTests.createGzippedFile("main.css"); this.request = new MockHttpServletRequest("GET", "/static/main.css"); Resource original = new ClassPathResource("test/main.css", getClass()); EncodedResource gzipped = new EncodedResource(original, "gzip", ".gz"); Resource actual = this.transformerChain.transform(this.request, gzipped); assertSame(gzipped, actual); }