Commit ed5853e6 authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '1.2.x'

parents fd22b578 c3571d41
...@@ -483,10 +483,20 @@ public class ServerProperties implements EmbeddedServletContainerCustomizer, Ord ...@@ -483,10 +483,20 @@ public class ServerProperties implements EmbeddedServletContainerCustomizer, Ord
if (handler instanceof AbstractHttp11Protocol) { if (handler instanceof AbstractHttp11Protocol) {
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
AbstractHttp11Protocol protocol = (AbstractHttp11Protocol) handler; AbstractHttp11Protocol protocol = (AbstractHttp11Protocol) handler;
protocol.setCompression(Tomcat.this.compression); protocol.setCompression(coerceCompression(Tomcat.this.compression));
protocol.setCompressableMimeTypes(Tomcat.this.compressableMimeTypes); protocol.setCompressableMimeTypes(Tomcat.this.compressableMimeTypes);
} }
} }
private String coerceCompression(String compression) {
if (Boolean.toString(true).equals(compression)) {
return "on";
}
else if (Boolean.toString(false).equals(compression)) {
return "off";
}
return compression;
}
}); });
if (this.accessLogEnabled) { if (this.accessLogEnabled) {
......
...@@ -31,6 +31,8 @@ import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletCont ...@@ -31,6 +31,8 @@ import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletCont
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.core.IsInstanceOf.instanceOf; import static org.hamcrest.core.IsInstanceOf.instanceOf;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
...@@ -197,9 +199,26 @@ public class ServerPropertiesTests { ...@@ -197,9 +199,26 @@ public class ServerPropertiesTests {
@Test @Test
public void customTomcatCompression() throws Exception { public void customTomcatCompression() throws Exception {
assertThat("on", is(equalTo(configureCompression("on"))));
}
@Test
public void disableTomcatCompressionWithYaml() throws Exception {
// YAML interprets "off" as false, check that it's mapped back to off
assertThat("off", is(equalTo(configureCompression("false"))));
}
@Test
public void enableTomcatCompressionWithYaml() throws Exception {
// YAML interprets "on" as true, check that it's mapped back to on
assertThat("on", is(equalTo(configureCompression("true"))));
}
@Test
public void customTomcatCompressableMimeTypes() throws Exception {
Map<String, String> map = new HashMap<String, String>(); Map<String, String> map = new HashMap<String, String>();
map.put("server.port", "0"); map.put("server.port", "0");
map.put("server.tomcat.compression", "on"); map.put("server.tomcat.compressableMimeTypes", "application/foo");
bindProperties(map); bindProperties(map);
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
...@@ -211,18 +230,23 @@ public class ServerPropertiesTests { ...@@ -211,18 +230,23 @@ public class ServerPropertiesTests {
try { try {
AbstractHttp11Protocol<?> protocol = (AbstractHttp11Protocol<?>) container AbstractHttp11Protocol<?> protocol = (AbstractHttp11Protocol<?>) container
.getTomcat().getConnector().getProtocolHandler(); .getTomcat().getConnector().getProtocolHandler();
assertEquals("on", protocol.getCompression()); assertEquals("application/foo", protocol.getCompressableMimeTypes());
} }
finally { finally {
container.stop(); container.stop();
} }
} }
@Test private void bindProperties(Map<String, String> map) {
public void customTomcatCompressableMimeTypes() throws Exception { new RelaxedDataBinder(this.properties, "server").bind(new MutablePropertyValues(
map));
}
private String configureCompression(String compression) {
Map<String, String> map = new HashMap<String, String>(); Map<String, String> map = new HashMap<String, String>();
map.put("server.port", "0"); map.put("server.port", "0");
map.put("server.tomcat.compressableMimeTypes", "application/foo"); // YAML interprets "on" as true
map.put("server.tomcat.compression", compression);
bindProperties(map); bindProperties(map);
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory(); TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
...@@ -234,16 +258,11 @@ public class ServerPropertiesTests { ...@@ -234,16 +258,11 @@ public class ServerPropertiesTests {
try { try {
AbstractHttp11Protocol<?> protocol = (AbstractHttp11Protocol<?>) container AbstractHttp11Protocol<?> protocol = (AbstractHttp11Protocol<?>) container
.getTomcat().getConnector().getProtocolHandler(); .getTomcat().getConnector().getProtocolHandler();
assertEquals("application/foo", protocol.getCompressableMimeTypes()); return protocol.getCompression();
} }
finally { finally {
container.stop(); container.stop();
} }
} }
private void bindProperties(Map<String, String> map) {
new RelaxedDataBinder(this.properties, "server").bind(new MutablePropertyValues(
map));
}
} }
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