Move builder methods to VersionResourceResolver

This change moves the VersionStrategy builder-style methods from
ResourceHandlerRegistration to VersionResourceResolver.

This makes the methods more universally usable and also makes use of
ResourceHandlerRegistration more readable, i.e. simply a sequence of
addResource and addTransformer calls.
This commit is contained in:
Rossen Stoyanchev
2014-08-28 14:25:08 -04:00
parent 0b0ddc6ed1
commit ae48b5f7f2
4 changed files with 101 additions and 94 deletions

View File

@@ -143,11 +143,12 @@ public class ResourceHandlerRegistryTests {
@Test
public void versionResourceChain() throws Exception {
this.registration
.addTransformer(new AppCacheManifestTransfomer())
VersionResourceResolver versionResolver = new VersionResourceResolver()
.addFixedVersionStrategy("fixed", "/**/*.js")
.addContentVersionStrategy("/**");
this.registration.addResolver(versionResolver).addTransformer(new AppCacheManifestTransfomer());
ResourceHttpRequestHandler handler = getHandler("/resources/**");
List<ResourceResolver> resolvers = handler.getResourceResolvers();
assertThat(resolvers.toString(), resolvers, Matchers.hasSize(3));
@@ -164,21 +165,24 @@ public class ResourceHandlerRegistryTests {
List<ResourceTransformer> transformers = handler.getResourceTransformers();
assertThat(transformers, Matchers.hasSize(3));
assertThat(transformers.get(0), Matchers.instanceOf(CachingResourceTransformer.class));
assertThat(transformers.get(1), Matchers.instanceOf(AppCacheManifestTransfomer.class));
assertThat(transformers.get(2), Matchers.instanceOf(CssLinkResourceTransformer.class));
assertThat(transformers.get(1), Matchers.instanceOf(CssLinkResourceTransformer.class));
assertThat(transformers.get(2), Matchers.instanceOf(AppCacheManifestTransfomer.class));
}
@Test
public void customResourceChain() throws Exception {
VersionResourceResolver versionResolver = new VersionResourceResolver()
.addFixedVersionStrategy("fixed", "/**/*.js")
.addContentVersionStrategy("/**");
CachingResourceResolver cachingResolver = Mockito.mock(CachingResourceResolver.class);
CachingResourceTransformer cachingTransformer = Mockito.mock(CachingResourceTransformer.class);
this.registration
.addResolver(cachingResolver)
.addResolver(versionResolver)
.addResolver(new CustomPathResourceResolver())
.addTransformer(cachingTransformer)
.addTransformer(new AppCacheManifestTransfomer())
.addResolver(cachingResolver)
.addFixedVersionStrategy("fixed", "/**/*.js")
.addContentVersionStrategy("/**")
.addResolver(new CustomPathResourceResolver())
.setCachePeriod(3600);
ResourceHttpRequestHandler handler = getHandler("/resources/**");
@@ -191,8 +195,8 @@ public class ResourceHandlerRegistryTests {
List<ResourceTransformer> transformers = handler.getResourceTransformers();
assertThat(transformers, Matchers.hasSize(3));
assertThat(transformers.get(0), Matchers.equalTo(cachingTransformer));
assertThat(transformers.get(1), Matchers.instanceOf(AppCacheManifestTransfomer.class));
assertThat(transformers.get(2), Matchers.instanceOf(CssLinkResourceTransformer.class));
assertThat(transformers.get(1), Matchers.instanceOf(CssLinkResourceTransformer.class));
assertThat(transformers.get(2), Matchers.instanceOf(AppCacheManifestTransfomer.class));
}
private ResourceHttpRequestHandler getHandler(String pathPattern) {

View File

@@ -113,7 +113,7 @@ public class ResourceUrlProviderJavaConfigTests {
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("classpath:org/springframework/web/servlet/resource/test/")
.addContentVersionStrategy("/**");
.addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"));
}
}