Polish static resource handling
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2016 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.
|
||||
@@ -45,45 +45,39 @@ import static org.junit.Assert.*;
|
||||
*/
|
||||
public class ResourceUrlProviderTests {
|
||||
|
||||
private List<Resource> locations;
|
||||
private final List<Resource> locations = new ArrayList<>();
|
||||
|
||||
private ResourceUrlProvider translator;
|
||||
private final ResourceHttpRequestHandler handler = new ResourceHttpRequestHandler();
|
||||
|
||||
private ResourceHttpRequestHandler handler;
|
||||
private final Map<String, ResourceHttpRequestHandler> handlerMap = new HashMap<>();
|
||||
|
||||
private Map<String, ResourceHttpRequestHandler> handlerMap;
|
||||
private final ResourceUrlProvider urlProvider = new ResourceUrlProvider();
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
this.locations = new ArrayList<Resource>();
|
||||
public void setUp() throws Exception {
|
||||
this.locations.add(new ClassPathResource("test/", getClass()));
|
||||
this.locations.add(new ClassPathResource("testalternatepath/", getClass()));
|
||||
|
||||
this.handler = new ResourceHttpRequestHandler();
|
||||
this.handler.setLocations(locations);
|
||||
|
||||
this.handlerMap = new HashMap<String, ResourceHttpRequestHandler>();
|
||||
this.handler.afterPropertiesSet();
|
||||
this.handlerMap.put("/resources/**", this.handler);
|
||||
this.urlProvider.setHandlerMap(this.handlerMap);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void getStaticResourceUrl() {
|
||||
initTranslator();
|
||||
|
||||
String url = this.translator.getForLookupPath("/resources/foo.css");
|
||||
String url = this.urlProvider.getForLookupPath("/resources/foo.css");
|
||||
assertEquals("/resources/foo.css", url);
|
||||
}
|
||||
|
||||
// SPR-13374
|
||||
@Test
|
||||
@Test // SPR-13374
|
||||
public void getStaticResourceUrlRequestWithRequestParams() {
|
||||
initTranslator();
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
request.setContextPath("/");
|
||||
request.setRequestURI("/");
|
||||
|
||||
String url = this.translator.getForRequestUrl(request, "/resources/foo.css?foo=bar&url=http://example.org");
|
||||
String url = this.urlProvider.getForRequestUrl(request, "/resources/foo.css?foo=bar&url=http://example.org");
|
||||
assertEquals("/resources/foo.css?foo=bar&url=http://example.org", url);
|
||||
}
|
||||
|
||||
@@ -94,23 +88,16 @@ public class ResourceUrlProviderTests {
|
||||
VersionResourceResolver versionResolver = new VersionResourceResolver();
|
||||
versionResolver.setStrategyMap(versionStrategyMap);
|
||||
|
||||
List<ResourceResolver> resolvers = new ArrayList<ResourceResolver>();
|
||||
List<ResourceResolver> resolvers = new ArrayList<>();
|
||||
resolvers.add(versionResolver);
|
||||
resolvers.add(new PathResourceResolver());
|
||||
this.handler.setResourceResolvers(resolvers);
|
||||
initTranslator();
|
||||
|
||||
String url = this.translator.getForLookupPath("/resources/foo.css");
|
||||
String url = this.urlProvider.getForLookupPath("/resources/foo.css");
|
||||
assertEquals("/resources/foo-e36d2e05253c6c7085a91522ce43a0b4.css", url);
|
||||
}
|
||||
|
||||
private void initTranslator() {
|
||||
this.translator = new ResourceUrlProvider();
|
||||
this.translator.setHandlerMap(this.handlerMap);
|
||||
}
|
||||
|
||||
// SPR-12647
|
||||
@Test
|
||||
@Test // SPR-12647
|
||||
public void bestPatternMatch() throws Exception {
|
||||
ResourceHttpRequestHandler otherHandler = new ResourceHttpRequestHandler();
|
||||
otherHandler.setLocations(this.locations);
|
||||
@@ -119,36 +106,38 @@ public class ResourceUrlProviderTests {
|
||||
VersionResourceResolver versionResolver = new VersionResourceResolver();
|
||||
versionResolver.setStrategyMap(versionStrategyMap);
|
||||
|
||||
List<ResourceResolver> resolvers = new ArrayList<ResourceResolver>();
|
||||
List<ResourceResolver> resolvers = new ArrayList<>();
|
||||
resolvers.add(versionResolver);
|
||||
resolvers.add(new PathResourceResolver());
|
||||
otherHandler.setResourceResolvers(resolvers);
|
||||
|
||||
this.handlerMap.put("/resources/*.css", otherHandler);
|
||||
initTranslator();
|
||||
this.urlProvider.setHandlerMap(this.handlerMap);
|
||||
|
||||
String url = this.translator.getForLookupPath("/resources/foo.css");
|
||||
String url = this.urlProvider.getForLookupPath("/resources/foo.css");
|
||||
assertEquals("/resources/foo-e36d2e05253c6c7085a91522ce43a0b4.css", url);
|
||||
}
|
||||
|
||||
// SPR-12592
|
||||
@Test
|
||||
@Test // SPR-12592
|
||||
public void initializeOnce() throws Exception {
|
||||
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
|
||||
context.setServletContext(new MockServletContext());
|
||||
context.register(HandlerMappingConfiguration.class);
|
||||
context.refresh();
|
||||
ResourceUrlProvider translator = context.getBean(ResourceUrlProvider.class);
|
||||
assertThat(translator.getHandlerMap(), Matchers.hasKey("/resources/**"));
|
||||
assertFalse(translator.isAutodetect());
|
||||
|
||||
ResourceUrlProvider urlProviderBean = context.getBean(ResourceUrlProvider.class);
|
||||
assertThat(urlProviderBean.getHandlerMap(), Matchers.hasKey("/resources/**"));
|
||||
assertFalse(urlProviderBean.isAutodetect());
|
||||
}
|
||||
|
||||
@Configuration
|
||||
|
||||
@Configuration @SuppressWarnings("unused")
|
||||
public static class HandlerMappingConfiguration {
|
||||
|
||||
@Bean
|
||||
public SimpleUrlHandlerMapping simpleUrlHandlerMapping() {
|
||||
ResourceHttpRequestHandler handler = new ResourceHttpRequestHandler();
|
||||
HashMap<String, ResourceHttpRequestHandler> handlerMap = new HashMap<String, ResourceHttpRequestHandler>();
|
||||
HashMap<String, ResourceHttpRequestHandler> handlerMap = new HashMap<>();
|
||||
handlerMap.put("/resources/**", handler);
|
||||
SimpleUrlHandlerMapping hm = new SimpleUrlHandlerMapping();
|
||||
hm.setUrlMap(handlerMap);
|
||||
|
||||
Reference in New Issue
Block a user