Cachecontrol Class — spring-boot Architecture
Architecture documentation for the Cachecontrol class in WebProperties.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/WebProperties.java lines 407–616
public static class Cachecontrol {
private boolean customized;
/**
* Maximum time the response should be cached, in seconds if no duration
* suffix is not specified.
*/
@DurationUnit(ChronoUnit.SECONDS)
private @Nullable Duration maxAge;
/**
* Indicate that the cached response can be reused only if re-validated
* with the server.
*/
private @Nullable Boolean noCache;
/**
* Indicate to not cache the response in any case.
*/
private @Nullable Boolean noStore;
/**
* Indicate that once it has become stale, a cache must not use the
* response without re-validating it with the server.
*/
private @Nullable Boolean mustRevalidate;
/**
* Indicate intermediaries (caches and others) that they should not
* transform the response content.
*/
private @Nullable Boolean noTransform;
/**
* Indicate that any cache may store the response.
*/
private @Nullable Boolean cachePublic;
/**
* Indicate that the response message is intended for a single user and
* must not be stored by a shared cache.
*/
private @Nullable Boolean cachePrivate;
/**
* Same meaning as the "must-revalidate" directive, except that it does
* not apply to private caches.
*/
private @Nullable Boolean proxyRevalidate;
/**
* Maximum time the response can be served after it becomes stale, in
* seconds if no duration suffix is not specified.
*/
@DurationUnit(ChronoUnit.SECONDS)
private @Nullable Duration staleWhileRevalidate;
/**
* Maximum time the response may be used when errors are encountered, in
* seconds if no duration suffix is not specified.
*/
@DurationUnit(ChronoUnit.SECONDS)
private @Nullable Duration staleIfError;
/**
* Maximum time the response should be cached by shared caches, in seconds
* if no duration suffix is not specified.
*/
@DurationUnit(ChronoUnit.SECONDS)
private @Nullable Duration sMaxAge;
public @Nullable Duration getMaxAge() {
return this.maxAge;
}
public void setMaxAge(@Nullable Duration maxAge) {
this.customized = true;
this.maxAge = maxAge;
}
public @Nullable Boolean getNoCache() {
return this.noCache;
}
public void setNoCache(@Nullable Boolean noCache) {
this.customized = true;
this.noCache = noCache;
}
public @Nullable Boolean getNoStore() {
return this.noStore;
}
public void setNoStore(@Nullable Boolean noStore) {
this.customized = true;
this.noStore = noStore;
}
public @Nullable Boolean getMustRevalidate() {
return this.mustRevalidate;
}
public void setMustRevalidate(@Nullable Boolean mustRevalidate) {
this.customized = true;
this.mustRevalidate = mustRevalidate;
}
public @Nullable Boolean getNoTransform() {
return this.noTransform;
}
public void setNoTransform(@Nullable Boolean noTransform) {
this.customized = true;
this.noTransform = noTransform;
}
public @Nullable Boolean getCachePublic() {
return this.cachePublic;
}
public void setCachePublic(@Nullable Boolean cachePublic) {
this.customized = true;
this.cachePublic = cachePublic;
}
public @Nullable Boolean getCachePrivate() {
return this.cachePrivate;
}
public void setCachePrivate(@Nullable Boolean cachePrivate) {
this.customized = true;
this.cachePrivate = cachePrivate;
}
public @Nullable Boolean getProxyRevalidate() {
return this.proxyRevalidate;
}
public void setProxyRevalidate(@Nullable Boolean proxyRevalidate) {
this.customized = true;
this.proxyRevalidate = proxyRevalidate;
}
public @Nullable Duration getStaleWhileRevalidate() {
return this.staleWhileRevalidate;
}
public void setStaleWhileRevalidate(@Nullable Duration staleWhileRevalidate) {
this.customized = true;
this.staleWhileRevalidate = staleWhileRevalidate;
}
public @Nullable Duration getStaleIfError() {
return this.staleIfError;
}
public void setStaleIfError(@Nullable Duration staleIfError) {
this.customized = true;
this.staleIfError = staleIfError;
}
public @Nullable Duration getSMaxAge() {
return this.sMaxAge;
}
public void setSMaxAge(@Nullable Duration sMaxAge) {
this.customized = true;
this.sMaxAge = sMaxAge;
}
public @Nullable CacheControl toHttpCacheControl() {
PropertyMapper map = PropertyMapper.get();
CacheControl control = createCacheControl();
map.from(this::getMustRevalidate).whenTrue().toCall(control::mustRevalidate);
map.from(this::getNoTransform).whenTrue().toCall(control::noTransform);
map.from(this::getCachePublic).whenTrue().toCall(control::cachePublic);
map.from(this::getCachePrivate).whenTrue().toCall(control::cachePrivate);
map.from(this::getProxyRevalidate).whenTrue().toCall(control::proxyRevalidate);
map.from(this::getStaleWhileRevalidate)
.to((duration) -> control.staleWhileRevalidate(duration.getSeconds(), TimeUnit.SECONDS));
map.from(this::getStaleIfError)
.to((duration) -> control.staleIfError(duration.getSeconds(), TimeUnit.SECONDS));
map.from(this::getSMaxAge)
.to((duration) -> control.sMaxAge(duration.getSeconds(), TimeUnit.SECONDS));
// check if cacheControl remained untouched
if (control.getHeaderValue() == null) {
return null;
}
return control;
}
private CacheControl createCacheControl() {
if (Boolean.TRUE.equals(this.noStore)) {
return CacheControl.noStore();
}
if (Boolean.TRUE.equals(this.noCache)) {
return CacheControl.noCache();
}
if (this.maxAge != null) {
return CacheControl.maxAge(this.maxAge.getSeconds(), TimeUnit.SECONDS);
}
return CacheControl.empty();
}
private boolean hasBeenCustomized() {
return this.customized;
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free