Polish "Make sure cache busting works with error pages"
Closes gh-14583
This commit is contained in:
parent
64f04fceea
commit
6cc272ecf5
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package org.springframework.boot.autoconfigure.freemarker;
|
package org.springframework.boot.autoconfigure.freemarker;
|
||||||
|
|
||||||
|
import javax.servlet.DispatcherType;
|
||||||
import javax.servlet.Servlet;
|
import javax.servlet.Servlet;
|
||||||
|
|
||||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||||
|
@ -25,6 +26,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
|
||||||
import org.springframework.boot.autoconfigure.web.ConditionalOnEnabledResourceChain;
|
import org.springframework.boot.autoconfigure.web.ConditionalOnEnabledResourceChain;
|
||||||
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
|
||||||
|
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter;
|
import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter;
|
||||||
|
@ -74,8 +76,11 @@ class FreeMarkerServletWebConfiguration extends AbstractFreeMarkerConfiguration
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
@ConditionalOnEnabledResourceChain
|
@ConditionalOnEnabledResourceChain
|
||||||
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
|
public FilterRegistrationBean<ResourceUrlEncodingFilter> resourceUrlEncodingFilter() {
|
||||||
return new ResourceUrlEncodingFilter();
|
FilterRegistrationBean<ResourceUrlEncodingFilter> registration = new FilterRegistrationBean<>(
|
||||||
|
new ResourceUrlEncodingFilter());
|
||||||
|
registration.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.ERROR);
|
||||||
|
return registration;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,12 +169,11 @@ public class ThymeleafAutoConfiguration {
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
@ConditionalOnEnabledResourceChain
|
@ConditionalOnEnabledResourceChain
|
||||||
public FilterRegistrationBean resourceUrlEncodingFilter() {
|
public FilterRegistrationBean<ResourceUrlEncodingFilter> resourceUrlEncodingFilter() {
|
||||||
FilterRegistrationBean<ResourceUrlEncodingFilter> filterRegistrationBean = new FilterRegistrationBean<>(
|
FilterRegistrationBean<ResourceUrlEncodingFilter> registration = new FilterRegistrationBean<>(
|
||||||
new ResourceUrlEncodingFilter());
|
new ResourceUrlEncodingFilter());
|
||||||
filterRegistrationBean.setDispatcherTypes(DispatcherType.REQUEST,
|
registration.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.ERROR);
|
||||||
DispatcherType.ERROR);
|
return registration;
|
||||||
return filterRegistrationBean;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2017 the original author or authors.
|
* Copyright 2012-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -17,8 +17,10 @@
|
||||||
package org.springframework.boot.autoconfigure.freemarker;
|
package org.springframework.boot.autoconfigure.freemarker;
|
||||||
|
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
|
import java.util.EnumSet;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
|
import javax.servlet.DispatcherType;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
|
@ -26,6 +28,7 @@ import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.boot.test.util.TestPropertyValues;
|
import org.springframework.boot.test.util.TestPropertyValues;
|
||||||
|
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||||
import org.springframework.mock.web.MockHttpServletRequest;
|
import org.springframework.mock.web.MockHttpServletRequest;
|
||||||
import org.springframework.mock.web.MockHttpServletResponse;
|
import org.springframework.mock.web.MockHttpServletResponse;
|
||||||
import org.springframework.mock.web.MockServletContext;
|
import org.springframework.mock.web.MockServletContext;
|
||||||
|
@ -153,14 +156,18 @@ public class FreeMarkerAutoConfigurationServletIntegrationTests {
|
||||||
@Test
|
@Test
|
||||||
public void registerResourceHandlingFilterDisabledByDefault() {
|
public void registerResourceHandlingFilterDisabledByDefault() {
|
||||||
registerAndRefreshContext();
|
registerAndRefreshContext();
|
||||||
assertThat(this.context.getBeansOfType(ResourceUrlEncodingFilter.class))
|
assertThat(this.context.getBeansOfType(FilterRegistrationBean.class)).isEmpty();
|
||||||
.isEmpty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void registerResourceHandlingFilterOnlyIfResourceChainIsEnabled() {
|
public void registerResourceHandlingFilterOnlyIfResourceChainIsEnabled() {
|
||||||
registerAndRefreshContext("spring.resources.chain.enabled:true");
|
registerAndRefreshContext("spring.resources.chain.enabled:true");
|
||||||
assertThat(this.context.getBean(ResourceUrlEncodingFilter.class)).isNotNull();
|
FilterRegistrationBean<?> registration = this.context
|
||||||
|
.getBean(FilterRegistrationBean.class);
|
||||||
|
assertThat(registration.getFilter())
|
||||||
|
.isInstanceOf(ResourceUrlEncodingFilter.class);
|
||||||
|
assertThat(registration).hasFieldOrPropertyWithValue("dispatcherTypes",
|
||||||
|
EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerAndRefreshContext(String... env) {
|
private void registerAndRefreshContext(String... env) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2017 the original author or authors.
|
* Copyright 2012-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -51,6 +51,7 @@ import org.springframework.mock.web.MockServletContext;
|
||||||
import org.springframework.test.util.ReflectionTestUtils;
|
import org.springframework.test.util.ReflectionTestUtils;
|
||||||
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
|
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
|
||||||
import org.springframework.web.servlet.ViewResolver;
|
import org.springframework.web.servlet.ViewResolver;
|
||||||
|
import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter;
|
||||||
import org.springframework.web.servlet.support.RequestContext;
|
import org.springframework.web.servlet.support.RequestContext;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
@ -217,7 +218,8 @@ public class ThymeleafServletAutoConfigurationTests {
|
||||||
load(BaseConfiguration.class, "spring.resources.chain.enabled:true");
|
load(BaseConfiguration.class, "spring.resources.chain.enabled:true");
|
||||||
FilterRegistrationBean<?> registration = this.context
|
FilterRegistrationBean<?> registration = this.context
|
||||||
.getBean(FilterRegistrationBean.class);
|
.getBean(FilterRegistrationBean.class);
|
||||||
assertThat(registration).isNotNull();
|
assertThat(registration.getFilter())
|
||||||
|
.isInstanceOf(ResourceUrlEncodingFilter.class);
|
||||||
assertThat(registration).hasFieldOrPropertyWithValue("dispatcherTypes",
|
assertThat(registration).hasFieldOrPropertyWithValue("dispatcherTypes",
|
||||||
EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR));
|
EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue