Commit b947d600 authored by Phillip Webb's avatar Phillip Webb

Polish

parent 7aaf7c65
......@@ -29,8 +29,8 @@ import org.springframework.core.annotation.Order;
import org.springframework.web.filter.CharacterEncodingFilter;
/**
* {@link EnableAutoConfiguration Auto-configuration} for configuring the
* encoding to use in web applications.
* {@link EnableAutoConfiguration Auto-configuration} for configuring the encoding to use
* in web applications.
*
* @author Stephane Nicoll
* @since 1.2.0
......@@ -44,13 +44,13 @@ public class HttpEncodingAutoConfiguration {
@Autowired
private HttpEncodingProperties httpEncodingProperties;
@ConditionalOnMissingBean
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
@ConditionalOnMissingBean
public CharacterEncodingFilter characterEncodingFilter() {
CharacterEncodingFilter filter = new CharacterEncodingFilter();
filter.setEncoding(httpEncodingProperties.getCharset().name());
filter.setForceEncoding(httpEncodingProperties.isForce());
filter.setEncoding(this.httpEncodingProperties.getCharset().name());
filter.setForceEncoding(this.httpEncodingProperties.isForce());
return filter;
}
......
......@@ -37,12 +37,13 @@ public class HttpEncodingProperties {
private Charset charset = DEFAULT_CHARSET;
/**
* To force the encoding to the configured charset typically on HTTP requests and responses.
* To force the encoding to the configured charset typically on HTTP requests and
* responses.
*/
private boolean force = true;
public Charset getCharset() {
return charset;
return this.charset;
}
public void setCharset(Charset charset) {
......@@ -50,7 +51,7 @@ public class HttpEncodingProperties {
}
public boolean isForce() {
return force;
return this.force;
}
public void setForce(boolean force) {
......
......@@ -54,7 +54,6 @@ import com.google.gson.Gson;
@ConditionalOnClass(HttpMessageConverter.class)
public class HttpMessageConvertersAutoConfiguration {
@Autowired(required = false)
private final List<HttpMessageConverter<?>> converters = Collections.emptyList();
......@@ -127,12 +126,12 @@ public class HttpMessageConvertersAutoConfiguration {
protected static class StringHttpMessageConverterConfiguration {
@Autowired
private HttpEncodingProperties httpEncodingProperties;
private HttpEncodingProperties encodingProperties;
@Bean
@ConditionalOnMissingBean
public StringHttpMessageConverter stringHttpMessageConverter() {
return new StringHttpMessageConverter(httpEncodingProperties.getCharset());
return new StringHttpMessageConverter(this.encodingProperties.getCharset());
}
}
......
......@@ -20,7 +20,6 @@ import org.junit.After;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.springframework.beans.DirectFieldAccessor;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.boot.test.EnvironmentTestUtils;
......@@ -53,40 +52,46 @@ public class HttpEncodingAutoConfigurationTests {
@Test
public void defaultConfiguration() {
load(EmptyConfiguration.class);
CharacterEncodingFilter filter = context.getBean(CharacterEncodingFilter.class);
CharacterEncodingFilter filter = this.context
.getBean(CharacterEncodingFilter.class);
assertCharacterEncodingFilter(filter, "UTF-8", true);
}
@Test
public void disableConfiguration() {
load(EmptyConfiguration.class, "spring.http.encoding.enabled:false");
thrown.expect(NoSuchBeanDefinitionException.class);
context.getBean(CharacterEncodingFilter.class);
this.thrown.expect(NoSuchBeanDefinitionException.class);
this.context.getBean(CharacterEncodingFilter.class);
}
@Test
public void customConfiguration() {
load(EmptyConfiguration.class, "spring.http.encoding.charset:ISO-8859-15", "spring.http.encoding.force:false");
CharacterEncodingFilter filter = context.getBean(CharacterEncodingFilter.class);
load(EmptyConfiguration.class, "spring.http.encoding.charset:ISO-8859-15",
"spring.http.encoding.force:false");
CharacterEncodingFilter filter = this.context
.getBean(CharacterEncodingFilter.class);
assertCharacterEncodingFilter(filter, "ISO-8859-15", false);
}
@Test
public void customFilterConfiguration() {
load(FilterConfiguration.class, "spring.http.encoding.charset:ISO-8859-15", "spring.http.encoding.force:false");
CharacterEncodingFilter filter = context.getBean(CharacterEncodingFilter.class);
load(FilterConfiguration.class, "spring.http.encoding.charset:ISO-8859-15",
"spring.http.encoding.force:false");
CharacterEncodingFilter filter = this.context
.getBean(CharacterEncodingFilter.class);
assertCharacterEncodingFilter(filter, "US-ASCII", false);
}
private void assertCharacterEncodingFilter(CharacterEncodingFilter actual, String encoding, boolean forceEncoding) {
private void assertCharacterEncodingFilter(CharacterEncodingFilter actual,
String encoding, boolean forceEncoding) {
DirectFieldAccessor accessor = new DirectFieldAccessor(actual);
assertEquals("Wrong encoding", encoding, accessor.getPropertyValue("encoding"));
assertEquals("Wrong forceEncoding flag", forceEncoding, accessor.getPropertyValue("forceEncoding"));
assertEquals("Wrong forceEncoding flag", forceEncoding,
accessor.getPropertyValue("forceEncoding"));
}
private void load(Class<?> config, String... environment) {
this.context = doLoad(new Class<?>[] {config}, environment);
this.context = doLoad(new Class<?>[] { config }, environment);
}
private AnnotationConfigApplicationContext doLoad(Class<?>[] configs,
......@@ -99,9 +104,9 @@ public class HttpEncodingAutoConfigurationTests {
return applicationContext;
}
@Configuration
static class EmptyConfiguration {
}
@Configuration
......@@ -114,6 +119,7 @@ public class HttpEncodingAutoConfigurationTests {
filter.setForceEncoding(false);
return filter;
}
}
}
......@@ -64,7 +64,8 @@ public class SampleWebStaticApplicationTests {
assertEquals(HttpStatus.OK, entity.getStatusCode());
assertTrue("Wrong body:\n" + entity.getBody(), entity.getBody().contains("body"));
assertEquals("Wrong content type:\n" + entity.getHeaders().getContentType(),
MediaType.valueOf("text/css;charset=UTF-8"), entity.getHeaders().getContentType());
MediaType.valueOf("text/css;charset=UTF-8"), entity.getHeaders()
.getContentType());
}
}
......@@ -121,4 +121,5 @@ public class WarLauncherTests {
jarOutputStream.close();
return warRoot;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment