Skip to content

Commit 160f2d3

Browse files
committed
Fix Gzip filter properties
Fix `excludeAgentPatterns`, `excludePaths` and `excludePathPatterns` properties. Introduce `excludedMimeTypes` property. Fixes gh-3042
1 parent 676b7d7 commit 160f2d3

File tree

3 files changed

+48
-28
lines changed

3 files changed

+48
-28
lines changed

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/GzipFilterProperties.java

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
* Properties for configuring {@link GzipFilter}.
3131
*
3232
* @author Andy Wilkinson
33+
* @author Stephane Nicoll
3334
* @since 1.2.2
3435
*/
3536
@ConfigurationProperties(prefix = "spring.http.gzip")
@@ -67,6 +68,11 @@ public class GzipFilterProperties {
6768
*/
6869
private List<MimeType> mimeTypes;
6970

71+
/**
72+
* Comma-separated list of MIME types to exclude from compression.
73+
*/
74+
private List<MimeType> excludedMimeTypes;
75+
7076
/**
7177
* Comma-separated list of user agents to exclude from compression. String.contains is
7278
* used to determine a match against the request's User-Agent header.
@@ -77,19 +83,19 @@ public class GzipFilterProperties {
7783
* Comma-separated list of regular expression patterns to control user agents excluded
7884
* from compression.
7985
*/
80-
private String excludedAgentPatterns;
86+
private String excludeAgentPatterns;
8187

8288
/**
8389
* Comma-separated list of paths to exclude from compression. Uses String.startsWith
8490
* to determine a match against the request's path.
8591
*/
86-
private String excludedPaths;
92+
private String excludePaths;
8793

8894
/**
8995
* Comma-separated list of regular expression patterns to control the paths that are
9096
* excluded from compression.
9197
*/
92-
private String excludedPathPatterns;
98+
private String excludePathPatterns;
9399

94100
/**
95101
* Vary header sent on responses that may be compressed.
@@ -156,6 +162,16 @@ public void setMimeTypes(List<MimeType> mimeTypes) {
156162
this.mimeTypes = mimeTypes;
157163
}
158164

165+
public List<MimeType> getExcludedMimeTypes() {
166+
return excludedMimeTypes;
167+
}
168+
169+
public void setExcludedMimeTypes(List<MimeType> excludedMimeTypes) {
170+
this.addInitParameter("excludedMimeTypes",
171+
StringUtils.collectionToCommaDelimitedString(excludedMimeTypes));
172+
this.excludedMimeTypes = excludedMimeTypes;
173+
}
174+
159175
public String getExcludedAgents() {
160176
return this.excludedAgents;
161177
}
@@ -165,31 +181,31 @@ public void setExcludedAgents(String excludedAgents) {
165181
this.excludedAgents = excludedAgents;
166182
}
167183

168-
public String getExcludedAgentPatterns() {
169-
return this.excludedAgentPatterns;
184+
public String getExcludeAgentPatterns() {
185+
return this.excludeAgentPatterns;
170186
}
171187

172-
public void setExcludedAgentPatterns(String excludedAgentPatterns) {
173-
this.addInitParameter("excludedAgentPatterns", excludedAgentPatterns);
174-
this.excludedAgentPatterns = excludedAgentPatterns;
188+
public void setExcludeAgentPatterns(String excludeAgentPatterns) {
189+
this.addInitParameter("excludeAgentPatterns", excludeAgentPatterns);
190+
this.excludeAgentPatterns = excludeAgentPatterns;
175191
}
176192

177-
public String getExcludedPaths() {
178-
return this.excludedPaths;
193+
public String getExcludePaths() {
194+
return this.excludePaths;
179195
}
180196

181-
public void setExcludedPaths(String excludedPaths) {
182-
this.addInitParameter("excludedPaths", excludedPaths);
183-
this.excludedPaths = excludedPaths;
197+
public void setExcludePaths(String excludePaths) {
198+
this.addInitParameter("excludePaths", excludePaths);
199+
this.excludePaths = excludePaths;
184200
}
185201

186-
public String getExcludedPathPatterns() {
187-
return this.excludedPathPatterns;
202+
public String getExcludePathPatterns() {
203+
return this.excludePathPatterns;
188204
}
189205

190-
public void setExcludedPathPatterns(String excludedPathPatterns) {
191-
this.addInitParameter("excludedPathPatterns", excludedPathPatterns);
192-
this.excludedPathPatterns = excludedPathPatterns;
206+
public void setExcludePathPatterns(String excludePathPatterns) {
207+
this.addInitParameter("excludePathPatterns", excludePathPatterns);
208+
this.excludePathPatterns = excludePathPatterns;
193209
}
194210

195211
public String getVary() {

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/GzipFilterAutoConfigurationTests.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,15 @@ public void customInitParameterConfiguration() {
6969
"spring.http.gzip.deflateNoWrap:false",
7070
"spring.http.gzip.methods:GET,POST",
7171
"spring.http.gzip.mimeTypes:application/foo,application/bar",
72+
"spring.http.gzip.excludedMimeTypes:application/biz",
7273
"spring.http.gzip.excludedAgents:excluded-agent-1,excluded-agent-2",
73-
"spring.http.gzip.excludedAgentPatterns:agent-pattern-1,agent-pattern-2",
74-
"spring.http.gzip.excludedPaths:/static/",
75-
"spring.http.gzip.excludedPathPatterns:path-pattern",
74+
"spring.http.gzip.excludeAgentPatterns:agent-pattern-1,agent-pattern-2",
75+
"spring.http.gzip.excludePaths:/static/",
76+
"spring.http.gzip.excludePathPatterns:path-pattern",
7677
"spring.http.gzip.vary:vary-header-value");
7778
FilterRegistrationBean registrationBean = this.context.getBean("gzipFilter",
7879
FilterRegistrationBean.class);
79-
assertThat(registrationBean.getInitParameters().size(), equalTo(12));
80+
assertThat(registrationBean.getInitParameters().size(), equalTo(13));
8081
assertThat(registrationBean.getInitParameters().get("checkGzExists"),
8182
equalTo("false"));
8283
assertThat(registrationBean.getInitParameters().get("bufferSize"),
@@ -91,13 +92,15 @@ public void customInitParameterConfiguration() {
9192
equalTo("GET,POST"));
9293
assertThat(registrationBean.getInitParameters().get("mimeTypes"),
9394
equalTo("application/foo,application/bar"));
95+
assertThat(registrationBean.getInitParameters().get("excludedMimeTypes"),
96+
equalTo("application/biz"));
9497
assertThat(registrationBean.getInitParameters().get("excludedAgents"),
9598
equalTo("excluded-agent-1,excluded-agent-2"));
96-
assertThat(registrationBean.getInitParameters().get("excludedAgentPatterns"),
99+
assertThat(registrationBean.getInitParameters().get("excludeAgentPatterns"),
97100
equalTo("agent-pattern-1,agent-pattern-2"));
98-
assertThat(registrationBean.getInitParameters().get("excludedPaths"),
101+
assertThat(registrationBean.getInitParameters().get("excludePaths"),
99102
equalTo("/static/"));
100-
assertThat(registrationBean.getInitParameters().get("excludedPathPatterns"),
103+
assertThat(registrationBean.getInitParameters().get("excludePathPatterns"),
101104
equalTo("path-pattern"));
102105
assertThat(registrationBean.getInitParameters().get("vary"),
103106
equalTo("vary-header-value"));

spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,12 @@ content into your application; rather pick only the properties that you need.
126126
spring.http.gzip.deflate-no-wrap= # noWrap setting for deflate compression (true or false)
127127
spring.http.gzip.enabled=true # enable gzip filter support
128128
spring.http.gzip.excluded-agents= # comma-separated list of user agents to exclude from compression
129-
spring.http.gzip.excluded-agent-patterns= # comma-separated list of regular expression patterns to control user agents excluded from compression
130-
spring.http.gzip.excluded-paths= # comma-separated list of paths to exclude from compression
131-
spring.http.gzip.excluded-path-patterns= # comma-separated list of regular expression patterns to control the paths that are excluded from compression
129+
spring.http.gzip.exclude-agent-patterns= # comma-separated list of regular expression patterns to control user agents excluded from compression
130+
spring.http.gzip.exclude-paths= # comma-separated list of paths to exclude from compression
131+
spring.http.gzip.exclude-path-patterns= # comma-separated list of regular expression patterns to control the paths that are excluded from compression
132132
spring.http.gzip.methods= # comma-separated list of HTTP methods for which compression is enabled
133133
spring.http.gzip.mime-types= # comma-separated list of MIME types which should be compressed
134+
spring.http.gzip.excluded-mime-types= # comma-separated list of MIME types to exclude from compression
134135
spring.http.gzip.min-gzip-size= # minimum content length required for compression to occur
135136
spring.http.gzip.vary= # Vary header to be sent on responses that may be compressed
136137

0 commit comments

Comments
 (0)