Skip to content

Commit 14d36c9

Browse files
committed
Polish
Closes gh-12268
1 parent 7866b94 commit 14d36c9

File tree

4 files changed

+32
-26
lines changed

4 files changed

+32
-26
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ content into your application. Rather, pick only the properties that you need.
163163
server.compression.enabled=false # Whether response compression is enabled.
164164
server.compression.excluded-user-agents= # List of user-agents to exclude from compression.
165165
server.compression.mime-types=text/html,text/xml,text/plain,text/css,text/javascript,application/javascript # Comma-separated list of MIME types that should be compressed.
166-
server.compression.min-response-size=2048 # Minimum response size that is required for compression to be performed.
166+
server.compression.min-response-size=2048 # Minimum "Content-Length" value that is required for compression to be performed.
167167
server.connection-timeout= # Time that connectors wait for another HTTP request before closing the connection. When not set, the connector's container-specific default is used. Use a value of -1 to indicate no (that is, an infinite) timeout.
168168
server.error.include-exception=false # Include the "exception" attribute.
169169
server.error.include-stacktrace=never # When to include a "stacktrace" attribute.

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/netty/CompressionCustomizer.java

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -42,27 +42,22 @@ final class CompressionCustomizer implements NettyServerCustomizer {
4242

4343
@Override
4444
public void customize(HttpServerOptions.Builder builder) {
45-
if (compression.getMinResponseSize() >= 0) {
46-
builder.compression(compression.getMinResponseSize());
45+
if (this.compression.getMinResponseSize() >= 0) {
46+
builder.compression(this.compression.getMinResponseSize());
4747
}
48-
4948
BiPredicate<HttpServerRequest, HttpServerResponse> compressPredicate = null;
50-
51-
if (compression.getMimeTypes() != null &&
52-
compression.getMimeTypes().length > 0) {
53-
compressPredicate = new CompressibleMimeTypePredicate(compression.getMimeTypes());
49+
if (this.compression.getMimeTypes() != null &&
50+
this.compression.getMimeTypes().length > 0) {
51+
compressPredicate = new CompressibleMimeTypePredicate(this.compression.getMimeTypes());
5452
}
55-
56-
if (compression.getExcludedUserAgents() != null &&
57-
compression.getExcludedUserAgents().length > 0 ) {
53+
if (this.compression.getExcludedUserAgents() != null &&
54+
this.compression.getExcludedUserAgents().length > 0) {
5855
BiPredicate<HttpServerRequest, HttpServerResponse> agentCompressPredicate =
59-
new CompressibleAgentPredicate(compression.getExcludedUserAgents());
60-
56+
new CompressibleAgentPredicate(this.compression.getExcludedUserAgents());
6157
compressPredicate = compressPredicate == null ?
6258
agentCompressPredicate :
6359
compressPredicate.and(agentCompressPredicate);
6460
}
65-
6661
if (compressPredicate != null) {
6762
builder.compression(compressPredicate);
6863
}
@@ -80,9 +75,9 @@ private static class CompressibleAgentPredicate
8075

8176
@Override
8277
public boolean test(HttpServerRequest request, HttpServerResponse response) {
83-
for(String excludedAgent : excludedAgents) {
78+
for (String excludedAgent : this.excludedAgents) {
8479
if (request.requestHeaders()
85-
.contains(HttpHeaderNames.USER_AGENT, excludedAgent, true)) {
80+
.contains(HttpHeaderNames.USER_AGENT, excludedAgent, true)) {
8681
return false;
8782
}
8883
}
@@ -105,7 +100,7 @@ private static class CompressibleMimeTypePredicate
105100
@Override
106101
public boolean test(HttpServerRequest request, HttpServerResponse response) {
107102
String contentType = response.responseHeaders()
108-
.get(HttpHeaderNames.CONTENT_TYPE);
103+
.get(HttpHeaderNames.CONTENT_TYPE);
109104
if (contentType != null) {
110105
for (MimeType mimeType : this.mimeTypes) {
111106
if (mimeType.isCompatibleWith(MimeTypeUtils.parseMimeType(contentType))) {

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/server/Compression.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class Compression {
4343
private String[] excludedUserAgents = null;
4444

4545
/**
46-
* Minimum response size that is required for compression to be performed.
46+
* Minimum "Content-Length" value that is required for compression to be performed.
4747
*/
4848
private int minResponseSize = 2048;
4949

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/reactive/server/AbstractReactiveWebServerFactoryTests.java

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import reactor.test.StepVerifier;
4747

4848
import org.springframework.boot.testsupport.rule.OutputCapture;
49-
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
5049
import org.springframework.boot.web.embedded.undertow.UndertowReactiveWebServerFactory;
5150
import org.springframework.boot.web.server.Compression;
5251
import org.springframework.boot.web.server.Ssl;
@@ -258,36 +257,47 @@ protected WebClient.Builder getWebClient(
258257
}
259258

260259
@Test
261-
public void compressionOfResponseToGetRequest() throws Exception {
260+
public void compressionOfResponseToGetRequest() {
262261
WebClient client = prepareCompressionTest();
263262
ResponseEntity<Void> response = client.get().exchange()
264263
.flatMap((res) -> res.toEntity(Void.class)).block();
265264
assertResponseIsCompressed(response);
266265
}
267266

268267
@Test
269-
public void compressionOfResponseToPostRequest() throws Exception {
268+
public void compressionOfResponseToPostRequest() {
270269
WebClient client = prepareCompressionTest();
271270
ResponseEntity<Void> response = client.post().exchange()
272271
.flatMap((res) -> res.toEntity(Void.class)).block();
273272
assertResponseIsCompressed(response);
274273
}
275274

276275
@Test
277-
public void noCompressionForMimeType() throws Exception {
276+
public void noCompressionForSmallResponse() {
278277
Compression compression = new Compression();
279-
compression.setMimeTypes(new String[] { "application/json" });
278+
compression.setEnabled(true);
279+
compression.setMinResponseSize(3001);
280+
WebClient client = prepareCompressionTest(compression);
281+
ResponseEntity<Void> response = client.get().exchange()
282+
.flatMap((res) -> res.toEntity(Void.class)).block();
283+
assertResponseIsNotCompressed(response);
284+
}
285+
286+
@Test
287+
public void noCompressionForMimeType() {
288+
Compression compression = new Compression();
289+
compression.setMimeTypes(new String[] {"application/json"});
280290
WebClient client = prepareCompressionTest(compression);
281291
ResponseEntity<Void> response = client.get().exchange()
282292
.flatMap((res) -> res.toEntity(Void.class)).block();
283293
assertResponseIsNotCompressed(response);
284294
}
285295

286296
@Test
287-
public void noCompressionForUserAgent() throws Exception {
297+
public void noCompressionForUserAgent() {
288298
Compression compression = new Compression();
289299
compression.setEnabled(true);
290-
compression.setExcludedUserAgents(new String[] { "testUserAgent" });
300+
compression.setExcludedUserAgents(new String[] {"testUserAgent"});
291301
WebClient client = prepareCompressionTest(compression);
292302
ResponseEntity<Void> response = client.get().header("User-Agent", "testUserAgent")
293303
.exchange().flatMap((res) -> res.toEntity(Void.class)).block();
@@ -338,7 +348,7 @@ protected static class CompressionDetectionHandler
338348
extends ChannelInboundHandlerAdapter {
339349

340350
@Override
341-
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
351+
public void channelRead(ChannelHandlerContext ctx, Object msg) {
342352
if (msg instanceof HttpResponse) {
343353
HttpResponse response = (HttpResponse) msg;
344354
boolean compressed = response.headers()
@@ -371,6 +381,7 @@ public CharsHandler(int contentSize, MediaType mediaType) {
371381
public Mono<Void> handle(ServerHttpRequest request, ServerHttpResponse response) {
372382
response.setStatusCode(HttpStatus.OK);
373383
response.getHeaders().setContentType(this.mediaType);
384+
response.getHeaders().setContentLength(this.bytes.readableByteCount());
374385
return response.writeWith(Mono.just(this.bytes));
375386
}
376387

0 commit comments

Comments
 (0)