Promote RequestCacheControl and ResponseCacheControl to public API

This commit is contained in:
Oleg Kalnichevski 2023-12-27 11:40:03 +01:00
parent ef77109f35
commit 364fa60cd3
17 changed files with 36 additions and 30 deletions

View File

@ -25,10 +25,9 @@
*
*/
package org.apache.hc.client5.http.impl.cache;
package org.apache.hc.client5.http.cache;
import org.apache.hc.core5.annotation.Contract;
import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.annotation.ThreadingBehavior;
/**
@ -37,9 +36,8 @@ import org.apache.hc.core5.annotation.ThreadingBehavior;
*
* @since 5.4
*/
@Internal
@Contract(threading = ThreadingBehavior.IMMUTABLE)
interface CacheControl {
public interface CacheControl {
/**
* Returns the max-age value from the Cache-Control header.

View File

@ -25,21 +25,19 @@
*
*/
package org.apache.hc.client5.http.impl.cache;
package org.apache.hc.client5.http.cache;
import org.apache.hc.core5.annotation.Contract;
import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.annotation.ThreadingBehavior;
/**
* Represents the values of the Cache-Control header in an HTTP request, which indicate whether and for how long
* the client is willing to cache the response.
* Represents the value of the Cache-Control header in an HTTP request containing cache
* control directives.
*
* @since 5.4
*/
@Internal
@Contract(threading = ThreadingBehavior.IMMUTABLE)
final class RequestCacheControl implements CacheControl {
public final class RequestCacheControl implements CacheControl {
private final long maxAge;
private final long maxStale;
@ -170,11 +168,11 @@ final class RequestCacheControl implements CacheControl {
return buf.toString();
}
static Builder builder() {
public static Builder builder() {
return new Builder();
}
static class Builder {
public static class Builder {
private long maxAge = -1;
private long maxStale = -1;

View File

@ -25,7 +25,7 @@
*
*/
package org.apache.hc.client5.http.impl.cache;
package org.apache.hc.client5.http.cache;
import java.util.Arrays;
import java.util.Collections;
@ -33,11 +33,10 @@ import java.util.HashSet;
import java.util.Set;
import org.apache.hc.core5.annotation.Contract;
import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.annotation.ThreadingBehavior;
/**
* Represents the values of the Cache-Control header in an HTTP response, which indicate whether and for how long
* Represents the value of the Cache-Control header in an HTTP response, which indicate whether and for how long
* the response can be cached by the client and intermediary proxies.
* <p>
* The class provides methods to retrieve the maximum age of the response and the maximum age that applies to shared
@ -50,9 +49,8 @@ import org.apache.hc.core5.annotation.ThreadingBehavior;
*
* @since 5.4
*/
@Internal
@Contract(threading = ThreadingBehavior.IMMUTABLE)
final class ResponseCacheControl implements CacheControl {
public final class ResponseCacheControl implements CacheControl {
/**
* The max-age directive value.
@ -339,11 +337,11 @@ final class ResponseCacheControl implements CacheControl {
return buf.toString();
}
static Builder builder() {
public static Builder builder() {
return new Builder();
}
static class Builder {
public static class Builder {
private long maxAge = -1;
private long sharedMaxAge = -1;
@ -477,15 +475,6 @@ final class ResponseCacheControl implements CacheControl {
return this;
}
public boolean isNoTransform() {
return noStore;
}
public Builder setNoTransform(final boolean noTransform) {
this.noTransform = noTransform;
return this;
}
public boolean isImmutable() {
return immutable;
}

View File

@ -49,7 +49,9 @@ import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
import org.apache.hc.client5.http.cache.CacheResponseStatus;
import org.apache.hc.client5.http.cache.HttpCacheContext;
import org.apache.hc.client5.http.cache.HttpCacheEntry;
import org.apache.hc.client5.http.cache.RequestCacheControl;
import org.apache.hc.client5.http.cache.ResourceIOException;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.client5.http.impl.ExecSupport;
import org.apache.hc.client5.http.protocol.HttpClientContext;
import org.apache.hc.client5.http.schedule.SchedulingStrategy;

View File

@ -34,6 +34,8 @@ import java.util.function.BiConsumer;
import org.apache.hc.client5.http.cache.HeaderConstants;
import org.apache.hc.client5.http.cache.HttpCacheEntry;
import org.apache.hc.client5.http.cache.RequestCacheControl;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.core5.annotation.Contract;
import org.apache.hc.core5.annotation.Internal;
import org.apache.hc.core5.annotation.ThreadingBehavior;
@ -160,7 +162,7 @@ class CacheControlHeaderParser {
*/
public final ResponseCacheControl parseResponse(final Iterator<Header> headerIterator) {
Args.notNull(headerIterator, "headerIterator");
final ResponseCacheControl.Builder builder = new ResponseCacheControl.Builder();
final ResponseCacheControl.Builder builder = ResponseCacheControl.builder();
parse(headerIterator, (name, value) -> {
if (name.equalsIgnoreCase(HeaderConstants.CACHE_CONTROL_S_MAX_AGE)) {
builder.setSharedMaxAge(parseSeconds(name, value));
@ -224,7 +226,7 @@ class CacheControlHeaderParser {
*/
public final RequestCacheControl parseRequest(final Iterator<Header> headerIterator) {
Args.notNull(headerIterator, "headerIterator");
final RequestCacheControl.Builder builder = new RequestCacheControl.Builder();
final RequestCacheControl.Builder builder = RequestCacheControl.builder();
parse(headerIterator, (name, value) -> {
if (name.equalsIgnoreCase(HeaderConstants.CACHE_CONTROL_MAX_AGE)) {
builder.setMaxAge(parseSeconds(name, value));

View File

@ -31,6 +31,7 @@ import java.time.Instant;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.hc.client5.http.cache.HttpCacheEntry;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.HttpHeaders;
import org.apache.hc.core5.http.message.MessageSupport;

View File

@ -26,6 +26,7 @@
*/
package org.apache.hc.client5.http.impl.cache;
import org.apache.hc.client5.http.cache.RequestCacheControl;
import org.apache.hc.core5.http.HttpRequest;
import org.apache.hc.core5.http.HttpVersion;
import org.apache.hc.core5.http.Method;

View File

@ -38,6 +38,8 @@ import java.util.Objects;
import java.util.Set;
import org.apache.hc.client5.http.cache.HttpCacheEntry;
import org.apache.hc.client5.http.cache.RequestCacheControl;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.client5.http.utils.DateUtils;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.HeaderElement;

View File

@ -42,7 +42,9 @@ import org.apache.hc.client5.http.cache.CacheResponseStatus;
import org.apache.hc.client5.http.cache.HttpCacheContext;
import org.apache.hc.client5.http.cache.HttpCacheEntry;
import org.apache.hc.client5.http.cache.HttpCacheStorage;
import org.apache.hc.client5.http.cache.RequestCacheControl;
import org.apache.hc.client5.http.cache.ResourceIOException;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.client5.http.classic.ExecChain;
import org.apache.hc.client5.http.classic.ExecChainHandler;
import org.apache.hc.client5.http.impl.ExecSupport;

View File

@ -30,6 +30,7 @@ import java.util.List;
import org.apache.hc.client5.http.cache.HeaderConstants;
import org.apache.hc.client5.http.cache.HttpCacheEntry;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.core5.function.Factory;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.HttpHeaders;

View File

@ -30,6 +30,7 @@ import java.time.Duration;
import java.time.Instant;
import java.util.Iterator;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.client5.http.utils.DateUtils;
import org.apache.hc.core5.http.HttpHeaders;
import org.apache.hc.core5.http.HttpRequest;

View File

@ -34,6 +34,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Arrays;
import java.util.Collections;
import org.apache.hc.client5.http.cache.RequestCacheControl;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.message.BasicHeader;
import org.junit.jupiter.api.Test;

View File

@ -33,6 +33,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import java.time.Instant;
import org.apache.hc.client5.http.cache.HttpCacheEntry;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.client5.http.utils.DateUtils;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.message.BasicHeader;

View File

@ -26,6 +26,7 @@
*/
package org.apache.hc.client5.http.impl.cache;
import org.apache.hc.client5.http.cache.RequestCacheControl;
import org.apache.hc.core5.http.message.BasicHttpRequest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;

View File

@ -29,6 +29,8 @@ package org.apache.hc.client5.http.impl.cache;
import java.time.Instant;
import org.apache.hc.client5.http.cache.HttpCacheEntry;
import org.apache.hc.client5.http.cache.RequestCacheControl;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.client5.http.utils.DateUtils;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.HttpHost;

View File

@ -31,6 +31,8 @@ import java.util.Arrays;
import java.util.List;
import org.apache.hc.client5.http.cache.HttpCacheEntry;
import org.apache.hc.client5.http.cache.RequestCacheControl;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.client5.http.utils.DateUtils;
import org.apache.hc.core5.http.Header;
import org.apache.hc.core5.http.HttpHeaders;

View File

@ -35,6 +35,7 @@ import java.time.temporal.ChronoUnit;
import java.util.Random;
import org.apache.hc.client5.http.auth.StandardAuthScheme;
import org.apache.hc.client5.http.cache.ResponseCacheControl;
import org.apache.hc.client5.http.classic.methods.HttpOptions;
import org.apache.hc.client5.http.utils.DateUtils;
import org.apache.hc.core5.http.HttpHeaders;