diff --git a/spring-web/src/main/java/org/springframework/http/CacheControl.java b/spring-web/src/main/java/org/springframework/http/CacheControl.java index ba092ee53f6..7c822210470 100644 --- a/spring-web/src/main/java/org/springframework/http/CacheControl.java +++ b/spring-web/src/main/java/org/springframework/http/CacheControl.java @@ -253,48 +253,48 @@ public class CacheControl { /** - * Return the "Cache-Control" header value. - * @return {@code null} if no directive was added, or the header value otherwise + * Return the "Cache-Control" header value, if any. + * @return the header value, or {@code null} if no directive was added */ @Nullable public String getHeaderValue() { - StringBuilder ccValue = new StringBuilder(); + StringBuilder headerValue = new StringBuilder(); if (this.maxAge != -1) { - appendDirective(ccValue, "max-age=" + Long.toString(this.maxAge)); + appendDirective(headerValue, "max-age=" + this.maxAge); } if (this.noCache) { - appendDirective(ccValue, "no-cache"); + appendDirective(headerValue, "no-cache"); } if (this.noStore) { - appendDirective(ccValue, "no-store"); + appendDirective(headerValue, "no-store"); } if (this.mustRevalidate) { - appendDirective(ccValue, "must-revalidate"); + appendDirective(headerValue, "must-revalidate"); } if (this.noTransform) { - appendDirective(ccValue, "no-transform"); + appendDirective(headerValue, "no-transform"); } if (this.cachePublic) { - appendDirective(ccValue, "public"); + appendDirective(headerValue, "public"); } if (this.cachePrivate) { - appendDirective(ccValue, "private"); + appendDirective(headerValue, "private"); } if (this.proxyRevalidate) { - appendDirective(ccValue, "proxy-revalidate"); + appendDirective(headerValue, "proxy-revalidate"); } if (this.sMaxAge != -1) { - appendDirective(ccValue, "s-maxage=" + Long.toString(this.sMaxAge)); + appendDirective(headerValue, "s-maxage=" + this.sMaxAge); } if (this.staleIfError != -1) { - appendDirective(ccValue, "stale-if-error=" + Long.toString(this.staleIfError)); + appendDirective(headerValue, "stale-if-error=" + this.staleIfError); } if (this.staleWhileRevalidate != -1) { - appendDirective(ccValue, "stale-while-revalidate=" + Long.toString(this.staleWhileRevalidate)); + appendDirective(headerValue, "stale-while-revalidate=" + this.staleWhileRevalidate); } - String ccHeaderValue = ccValue.toString(); - return (StringUtils.hasText(ccHeaderValue) ? ccHeaderValue : null); + String valueString = headerValue.toString(); + return (StringUtils.hasText(valueString) ? valueString : null); } private void appendDirective(StringBuilder builder, String value) { diff --git a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java index 226e680edda..a2d9a8bc7d9 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java +++ b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java @@ -72,10 +72,7 @@ public class HttpHeaders implements MultiValueMap, Serializable private static final long serialVersionUID = -8578554704772377436L; - /** - * The empty {@code HttpHeaders} instance (immutable). - */ - public static final HttpHeaders EMPTY = new HttpHeaders(new LinkedHashMap<>(), true); + /** * The HTTP {@code Accept} header field name. * @see Section 5.3.2 of RFC 7231 @@ -377,6 +374,12 @@ public class HttpHeaders implements MultiValueMap, Serializable */ public static final String WWW_AUTHENTICATE = "WWW-Authenticate"; + + /** + * The empty {@code HttpHeaders} instance (immutable). + */ + public static final HttpHeaders EMPTY = new HttpHeaders(new LinkedHashMap<>(), true); + /** * Pattern matching ETag multiple field values in headers such as "If-Match", "If-None-Match". * @see Section 2.3 of RFC 7232 @@ -394,7 +397,7 @@ public class HttpHeaders implements MultiValueMap, Serializable private static final DateTimeFormatter[] DATE_FORMATTERS = new DateTimeFormatter[] { DateTimeFormatter.RFC_1123_DATE_TIME, DateTimeFormatter.ofPattern("EEEE, dd-MMM-yy HH:mm:ss zz", Locale.US), - DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss yyyy",Locale.US).withZone(GMT) + DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss yyyy", Locale.US).withZone(GMT) }; @@ -404,7 +407,7 @@ public class HttpHeaders implements MultiValueMap, Serializable /** - * Constructs a new, empty instance of the {@code HttpHeaders} object. + * Construct a new, empty instance of the {@code HttpHeaders} object. */ public HttpHeaders() { this(new LinkedCaseInsensitiveMap<>(8, Locale.ENGLISH), false); diff --git a/spring-web/src/main/java/org/springframework/http/ResponseEntity.java b/spring-web/src/main/java/org/springframework/http/ResponseEntity.java index 964f751e42c..b3bcdda892b 100644 --- a/spring-web/src/main/java/org/springframework/http/ResponseEntity.java +++ b/spring-web/src/main/java/org/springframework/http/ResponseEntity.java @@ -491,7 +491,7 @@ public class ResponseEntity extends HttpEntity { public BodyBuilder cacheControl(CacheControl cacheControl) { String ccValue = cacheControl.getHeaderValue(); if (ccValue != null) { - this.headers.setCacheControl(cacheControl.getHeaderValue()); + this.headers.setCacheControl(ccValue); } return this; } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultEntityResponseBuilder.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultEntityResponseBuilder.java index adcc044f7c8..9f84c935214 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultEntityResponseBuilder.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultEntityResponseBuilder.java @@ -172,7 +172,7 @@ class DefaultEntityResponseBuilder implements EntityResponse.Builder { public EntityResponse.Builder cacheControl(CacheControl cacheControl) { String ccValue = cacheControl.getHeaderValue(); if (ccValue != null) { - this.headers.setCacheControl(cacheControl.getHeaderValue()); + this.headers.setCacheControl(ccValue); } return this; } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerResponseBuilder.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerResponseBuilder.java index b7db95cf36a..4e50ba2d337 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerResponseBuilder.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerResponseBuilder.java @@ -172,7 +172,7 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder { public ServerResponse.BodyBuilder cacheControl(CacheControl cacheControl) { String ccValue = cacheControl.getHeaderValue(); if (ccValue != null) { - this.headers.setCacheControl(cacheControl.getHeaderValue()); + this.headers.setCacheControl(ccValue); } return this; } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/resource/ResourceWebHandler.java b/spring-webflux/src/main/java/org/springframework/web/reactive/resource/ResourceWebHandler.java index 8cf37e1b464..91e520067cd 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/resource/ResourceWebHandler.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/resource/ResourceWebHandler.java @@ -283,9 +283,9 @@ public class ResourceWebHandler implements WebHandler, InitializingBean { // Apply cache settings, if any if (getCacheControl() != null) { - String value = getCacheControl().getHeaderValue(); - if (value != null) { - exchange.getResponse().getHeaders().setCacheControl(value); + String ccValue = getCacheControl().getHeaderValue(); + if (ccValue != null) { + exchange.getResponse().getHeaders().setCacheControl(ccValue); } }