Deprecated message copiers in favor of generic message builders
This commit is contained in:
parent
ea9c6ef9df
commit
3de88293fe
|
@ -49,7 +49,6 @@ import org.apache.hc.client5.http.cache.HttpCacheEntry;
|
|||
import org.apache.hc.client5.http.cache.ResourceFactory;
|
||||
import org.apache.hc.client5.http.cache.ResourceIOException;
|
||||
import org.apache.hc.client5.http.impl.ExecSupport;
|
||||
import org.apache.hc.client5.http.impl.RequestCopier;
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.client5.http.schedule.SchedulingStrategy;
|
||||
import org.apache.hc.client5.http.utils.DateUtils;
|
||||
|
@ -58,6 +57,7 @@ import org.apache.hc.core5.annotation.ThreadingBehavior;
|
|||
import org.apache.hc.core5.concurrent.CancellableDependency;
|
||||
import org.apache.hc.core5.concurrent.ComplexFuture;
|
||||
import org.apache.hc.core5.concurrent.FutureCallback;
|
||||
import org.apache.hc.core5.function.Factory;
|
||||
import org.apache.hc.core5.http.ContentType;
|
||||
import org.apache.hc.core5.http.EntityDetails;
|
||||
import org.apache.hc.core5.http.Header;
|
||||
|
@ -72,6 +72,7 @@ import org.apache.hc.core5.http.nio.AsyncDataConsumer;
|
|||
import org.apache.hc.core5.http.nio.AsyncEntityProducer;
|
||||
import org.apache.hc.core5.http.nio.CapacityChannel;
|
||||
import org.apache.hc.core5.http.protocol.HttpCoreContext;
|
||||
import org.apache.hc.core5.http.support.BasicRequestBuilder;
|
||||
import org.apache.hc.core5.net.URIAuthority;
|
||||
import org.apache.hc.core5.util.Args;
|
||||
import org.apache.hc.core5.util.ByteArrayBuffer;
|
||||
|
@ -101,7 +102,14 @@ class AsyncCachingExec extends CachingExecBase implements AsyncExecChainHandler
|
|||
super(config);
|
||||
this.responseCache = Args.notNull(cache, "Response cache");
|
||||
this.cacheRevalidator = cacheRevalidator;
|
||||
this.conditionalRequestBuilder = new ConditionalRequestBuilder<>(RequestCopier.INSTANCE);
|
||||
this.conditionalRequestBuilder = new ConditionalRequestBuilder<>(new Factory<HttpRequest, HttpRequest>() {
|
||||
|
||||
@Override
|
||||
public HttpRequest create(final HttpRequest request) {
|
||||
return BasicRequestBuilder.copy(request).build();
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
AsyncCachingExec(
|
||||
|
@ -695,7 +703,9 @@ class AsyncCachingExec extends CachingExecBase implements AsyncExecChainHandler
|
|||
final AsyncExecCallback asyncExecCallback,
|
||||
final HttpCacheEntry cacheEntry) {
|
||||
final Date requestDate = getCurrentDate();
|
||||
final HttpRequest conditionalRequest = conditionalRequestBuilder.buildConditionalRequest(scope.originalRequest, cacheEntry);
|
||||
final HttpRequest conditionalRequest = conditionalRequestBuilder.buildConditionalRequest(
|
||||
BasicRequestBuilder.copy(scope.originalRequest).build(),
|
||||
cacheEntry);
|
||||
chainProceed(conditionalRequest, entityProducer, scope, chain, new AsyncExecCallback() {
|
||||
|
||||
final AtomicReference<AsyncExecCallback> callbackRef = new AtomicReference<>();
|
||||
|
@ -795,7 +805,7 @@ class AsyncCachingExec extends CachingExecBase implements AsyncExecChainHandler
|
|||
&& (entityProducer == null || entityProducer.isRepeatable())) {
|
||||
|
||||
final HttpRequest unconditional = conditionalRequestBuilder.buildUnconditionalRequest(
|
||||
scope.originalRequest);
|
||||
BasicRequestBuilder.copy(scope.originalRequest).build());
|
||||
|
||||
callback1 = new AsyncExecCallbackWrapper(asyncExecCallback, new Runnable() {
|
||||
|
||||
|
@ -940,7 +950,9 @@ class AsyncCachingExec extends CachingExecBase implements AsyncExecChainHandler
|
|||
final AsyncExecCallback asyncExecCallback,
|
||||
final Map<String, Variant> variants) {
|
||||
final CancellableDependency operation = scope.cancellableDependency;
|
||||
final HttpRequest conditionalRequest = conditionalRequestBuilder.buildConditionalRequestFromVariants(request, variants);
|
||||
final HttpRequest conditionalRequest = conditionalRequestBuilder.buildConditionalRequestFromVariants(
|
||||
BasicRequestBuilder.copy(request).build(),
|
||||
variants);
|
||||
|
||||
final Date requestDate = getCurrentDate();
|
||||
chainProceed(conditionalRequest, entityProducer, scope, chain, new AsyncExecCallback() {
|
||||
|
@ -1045,7 +1057,8 @@ class AsyncCachingExec extends CachingExecBase implements AsyncExecChainHandler
|
|||
});
|
||||
} else {
|
||||
if (revalidationResponseIsTooOld(backendResponse, matchingVariant.getEntry())) {
|
||||
final HttpRequest unconditional = conditionalRequestBuilder.buildUnconditionalRequest(request);
|
||||
final HttpRequest unconditional = conditionalRequestBuilder.buildUnconditionalRequest(
|
||||
BasicRequestBuilder.copy(request).build());
|
||||
scope.clientContext.setAttribute(HttpCoreContext.HTTP_REQUEST, unconditional);
|
||||
callback = new AsyncExecCallbackWrapper(asyncExecCallback, new Runnable() {
|
||||
|
||||
|
|
|
@ -45,10 +45,10 @@ import org.apache.hc.client5.http.cache.ResourceIOException;
|
|||
import org.apache.hc.client5.http.classic.ExecChain;
|
||||
import org.apache.hc.client5.http.classic.ExecChainHandler;
|
||||
import org.apache.hc.client5.http.impl.ExecSupport;
|
||||
import org.apache.hc.client5.http.impl.classic.ClassicRequestCopier;
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.client5.http.schedule.SchedulingStrategy;
|
||||
import org.apache.hc.client5.http.utils.DateUtils;
|
||||
import org.apache.hc.core5.function.Factory;
|
||||
import org.apache.hc.core5.http.ClassicHttpRequest;
|
||||
import org.apache.hc.core5.http.ClassicHttpResponse;
|
||||
import org.apache.hc.core5.http.Header;
|
||||
|
@ -62,6 +62,7 @@ import org.apache.hc.core5.http.HttpVersion;
|
|||
import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
|
||||
import org.apache.hc.core5.http.io.entity.EntityUtils;
|
||||
import org.apache.hc.core5.http.io.entity.StringEntity;
|
||||
import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
|
||||
import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
|
||||
import org.apache.hc.core5.http.protocol.HttpCoreContext;
|
||||
import org.apache.hc.core5.net.URIAuthority;
|
||||
|
@ -110,7 +111,14 @@ class CachingExec extends CachingExecBase implements ExecChainHandler {
|
|||
super(config);
|
||||
this.responseCache = Args.notNull(cache, "Response cache");
|
||||
this.cacheRevalidator = cacheRevalidator;
|
||||
this.conditionalRequestBuilder = new ConditionalRequestBuilder<>(ClassicRequestCopier.INSTANCE);
|
||||
this.conditionalRequestBuilder = new ConditionalRequestBuilder<>(new Factory<ClassicHttpRequest, ClassicHttpRequest>() {
|
||||
|
||||
@Override
|
||||
public ClassicHttpRequest create(final ClassicHttpRequest classicHttpRequest) {
|
||||
return ClassicRequestBuilder.copy(classicHttpRequest).build();
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
CachingExec(
|
||||
|
|
|
@ -31,7 +31,7 @@ import java.util.Map;
|
|||
|
||||
import org.apache.hc.client5.http.cache.HeaderConstants;
|
||||
import org.apache.hc.client5.http.cache.HttpCacheEntry;
|
||||
import org.apache.hc.client5.http.impl.MessageCopier;
|
||||
import org.apache.hc.core5.function.Factory;
|
||||
import org.apache.hc.core5.http.Header;
|
||||
import org.apache.hc.core5.http.HeaderElement;
|
||||
import org.apache.hc.core5.http.HttpRequest;
|
||||
|
@ -39,9 +39,9 @@ import org.apache.hc.core5.http.message.MessageSupport;
|
|||
|
||||
class ConditionalRequestBuilder<T extends HttpRequest> {
|
||||
|
||||
private final MessageCopier<T> messageCopier;
|
||||
private final Factory<T, T> messageCopier;
|
||||
|
||||
ConditionalRequestBuilder(final MessageCopier<T> messageCopier) {
|
||||
ConditionalRequestBuilder(final Factory<T, T> messageCopier) {
|
||||
this.messageCopier = messageCopier;
|
||||
}
|
||||
|
||||
|
@ -56,8 +56,8 @@ class ConditionalRequestBuilder<T extends HttpRequest> {
|
|||
* @return the wrapped request
|
||||
*/
|
||||
public T buildConditionalRequest(final T request, final HttpCacheEntry cacheEntry) {
|
||||
final T newRequest = messageCopier.copy(request);
|
||||
newRequest.setHeaders(request.getHeaders());
|
||||
final T newRequest = messageCopier.create(request);
|
||||
|
||||
final Header eTag = cacheEntry.getFirstHeader(HeaderConstants.ETAG);
|
||||
if (eTag != null) {
|
||||
newRequest.setHeader(HeaderConstants.IF_NONE_MATCH, eTag.getValue());
|
||||
|
@ -95,8 +95,7 @@ class ConditionalRequestBuilder<T extends HttpRequest> {
|
|||
* @return the wrapped request
|
||||
*/
|
||||
public T buildConditionalRequestFromVariants(final T request, final Map<String, Variant> variants) {
|
||||
final T newRequest = messageCopier.copy(request);
|
||||
newRequest.setHeaders(request.getHeaders());
|
||||
final T newRequest = messageCopier.create(request);
|
||||
|
||||
// we do not support partial content so all etags are used
|
||||
final StringBuilder etags = new StringBuilder();
|
||||
|
@ -124,7 +123,7 @@ class ConditionalRequestBuilder<T extends HttpRequest> {
|
|||
* @return an unconditional validation request
|
||||
*/
|
||||
public T buildUnconditionalRequest(final T request) {
|
||||
final T newRequest = messageCopier.copy(request);
|
||||
final T newRequest = messageCopier.create(request);
|
||||
newRequest.addHeader(HeaderConstants.CACHE_CONTROL,HeaderConstants.CACHE_CONTROL_NO_CACHE);
|
||||
newRequest.addHeader(HeaderConstants.PRAGMA,HeaderConstants.CACHE_CONTROL_NO_CACHE);
|
||||
newRequest.removeHeaders(HeaderConstants.IF_RANGE);
|
||||
|
|
|
@ -33,7 +33,6 @@ import org.apache.hc.client5.http.HttpRoute;
|
|||
import org.apache.hc.client5.http.classic.ExecChain;
|
||||
import org.apache.hc.client5.http.classic.ExecChainHandler;
|
||||
import org.apache.hc.client5.http.classic.ExecRuntime;
|
||||
import org.apache.hc.client5.http.impl.classic.ClassicRequestCopier;
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.core5.http.ClassicHttpRequest;
|
||||
import org.apache.hc.core5.http.ClassicHttpResponse;
|
||||
|
@ -42,6 +41,7 @@ import org.apache.hc.core5.http.HttpException;
|
|||
import org.apache.hc.core5.http.HttpHost;
|
||||
import org.apache.hc.core5.http.HttpRequest;
|
||||
import org.apache.hc.core5.http.HttpResponse;
|
||||
import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
|
||||
import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
|
||||
import org.easymock.EasyMock;
|
||||
import org.easymock.IExpectationSetters;
|
||||
|
@ -107,8 +107,10 @@ public abstract class AbstractProtocolTest {
|
|||
}
|
||||
|
||||
public ClassicHttpResponse execute(final ClassicHttpRequest request) throws IOException, HttpException {
|
||||
return impl.execute(ClassicRequestCopier.INSTANCE.copy(request), new ExecChain.Scope(
|
||||
"test", route, request, mockExecRuntime, context), mockExecChain);
|
||||
return impl.execute(
|
||||
ClassicRequestBuilder.copy(request).build(),
|
||||
new ExecChain.Scope("test", route, request, mockExecRuntime, context),
|
||||
mockExecChain);
|
||||
}
|
||||
|
||||
protected ExecChainHandler createCachingExecChain(final HttpCache cache, final CacheConfig config) {
|
||||
|
|
|
@ -27,13 +27,13 @@
|
|||
package org.apache.hc.client5.http.impl.cache;
|
||||
|
||||
import static org.easymock.EasyMock.anyObject;
|
||||
import static org.easymock.EasyMock.createNiceMock;
|
||||
import static org.easymock.EasyMock.eq;
|
||||
import static org.easymock.EasyMock.expect;
|
||||
import static org.easymock.EasyMock.expectLastCall;
|
||||
import static org.easymock.EasyMock.isA;
|
||||
import static org.easymock.EasyMock.same;
|
||||
import static org.easymock.EasyMock.createNiceMock;
|
||||
import static org.easymock.EasyMock.replay;
|
||||
import static org.easymock.EasyMock.same;
|
||||
import static org.easymock.EasyMock.verify;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNull;
|
||||
|
@ -59,7 +59,6 @@ import org.apache.hc.client5.http.classic.ExecChain;
|
|||
import org.apache.hc.client5.http.classic.ExecRuntime;
|
||||
import org.apache.hc.client5.http.classic.methods.HttpGet;
|
||||
import org.apache.hc.client5.http.classic.methods.HttpOptions;
|
||||
import org.apache.hc.client5.http.impl.classic.ClassicRequestCopier;
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.client5.http.utils.DateUtils;
|
||||
import org.apache.hc.core5.http.ClassicHttpRequest;
|
||||
|
@ -74,6 +73,7 @@ import org.apache.hc.core5.http.HttpVersion;
|
|||
import org.apache.hc.core5.http.io.HttpClientResponseHandler;
|
||||
import org.apache.hc.core5.http.io.entity.EntityUtils;
|
||||
import org.apache.hc.core5.http.io.entity.InputStreamEntity;
|
||||
import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
|
||||
import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
|
||||
import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
|
||||
import org.apache.hc.core5.http.message.BasicHeader;
|
||||
|
@ -165,8 +165,10 @@ public abstract class TestCachingExecChain {
|
|||
public abstract CachingExec createCachingExecChain(HttpCache cache, CacheConfig config);
|
||||
|
||||
protected ClassicHttpResponse execute(final ClassicHttpRequest request) throws IOException, HttpException {
|
||||
return impl.execute(ClassicRequestCopier.INSTANCE.copy(request), new ExecChain.Scope(
|
||||
"test", route, request, mockEndpoint, context), mockExecChain);
|
||||
return impl.execute(
|
||||
ClassicRequestBuilder.copy(request).build(),
|
||||
new ExecChain.Scope("test", route, request, mockEndpoint, context),
|
||||
mockExecChain);
|
||||
}
|
||||
|
||||
public static ClassicHttpRequest eqRequest(final ClassicHttpRequest in) {
|
||||
|
|
|
@ -33,14 +33,15 @@ import java.util.Map;
|
|||
|
||||
import org.apache.hc.client5.http.cache.HeaderConstants;
|
||||
import org.apache.hc.client5.http.cache.HttpCacheEntry;
|
||||
import org.apache.hc.client5.http.impl.RequestCopier;
|
||||
import org.apache.hc.client5.http.utils.DateUtils;
|
||||
import org.apache.hc.core5.function.Factory;
|
||||
import org.apache.hc.core5.http.Header;
|
||||
import org.apache.hc.core5.http.HeaderElement;
|
||||
import org.apache.hc.core5.http.HttpRequest;
|
||||
import org.apache.hc.core5.http.message.BasicHeader;
|
||||
import org.apache.hc.core5.http.message.BasicHttpRequest;
|
||||
import org.apache.hc.core5.http.message.MessageSupport;
|
||||
import org.apache.hc.core5.http.support.BasicRequestBuilder;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
@ -52,7 +53,14 @@ public class TestConditionalRequestBuilder {
|
|||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
impl = new ConditionalRequestBuilder<>(RequestCopier.INSTANCE);
|
||||
impl = new ConditionalRequestBuilder<>(new Factory<HttpRequest, HttpRequest>() {
|
||||
|
||||
@Override
|
||||
public HttpRequest create(final HttpRequest request) {
|
||||
return BasicRequestBuilder.copy(request).build();
|
||||
}
|
||||
|
||||
});
|
||||
request = new BasicHttpRequest("GET", "/");
|
||||
}
|
||||
|
||||
|
@ -64,16 +72,13 @@ public class TestConditionalRequestBuilder {
|
|||
|
||||
final HttpRequest basicRequest = new BasicHttpRequest(theMethod, theUri);
|
||||
basicRequest.addHeader("Accept-Encoding", "gzip");
|
||||
final HttpRequest requestWrapper = RequestCopier.INSTANCE.copy(basicRequest);
|
||||
|
||||
final Header[] headers = new Header[] {
|
||||
new BasicHeader("Date", DateUtils.formatDate(new Date())),
|
||||
new BasicHeader("Last-Modified", lastModified) };
|
||||
|
||||
final HttpCacheEntry cacheEntry = HttpTestUtils.makeCacheEntry(headers);
|
||||
final HttpRequest newRequest = impl.buildConditionalRequest(requestWrapper, cacheEntry);
|
||||
|
||||
Assert.assertNotSame(basicRequest, newRequest);
|
||||
final HttpRequest newRequest = impl.buildConditionalRequest(basicRequest, cacheEntry);
|
||||
|
||||
Assert.assertEquals(theMethod, newRequest.getMethod());
|
||||
Assert.assertEquals(theUri, newRequest.getRequestUri());
|
||||
|
@ -100,9 +105,8 @@ public class TestConditionalRequestBuilder {
|
|||
new BasicHeader("ETag", etag)
|
||||
};
|
||||
final HttpRequest basicRequest = new BasicHttpRequest("GET", "/");
|
||||
final HttpRequest requestWrapper = RequestCopier.INSTANCE.copy(basicRequest);
|
||||
final HttpCacheEntry cacheEntry = HttpTestUtils.makeCacheEntry(headers);
|
||||
final HttpRequest result = impl.buildConditionalRequest(requestWrapper, cacheEntry);
|
||||
final HttpRequest result = impl.buildConditionalRequest(basicRequest, cacheEntry);
|
||||
Assert.assertEquals(lmDate,
|
||||
result.getFirstHeader("If-Modified-Since").getValue());
|
||||
Assert.assertEquals(etag,
|
||||
|
@ -117,7 +121,6 @@ public class TestConditionalRequestBuilder {
|
|||
|
||||
final HttpRequest basicRequest = new BasicHttpRequest(theMethod, theUri);
|
||||
basicRequest.addHeader("Accept-Encoding", "gzip");
|
||||
final HttpRequest requestWrapper = RequestCopier.INSTANCE.copy(basicRequest);
|
||||
|
||||
final Header[] headers = new Header[] {
|
||||
new BasicHeader("Date", DateUtils.formatDate(new Date())),
|
||||
|
@ -126,9 +129,7 @@ public class TestConditionalRequestBuilder {
|
|||
|
||||
final HttpCacheEntry cacheEntry = HttpTestUtils.makeCacheEntry(headers);
|
||||
|
||||
final HttpRequest newRequest = impl.buildConditionalRequest(requestWrapper, cacheEntry);
|
||||
|
||||
Assert.assertNotSame(basicRequest, newRequest);
|
||||
final HttpRequest newRequest = impl.buildConditionalRequest(basicRequest, cacheEntry);
|
||||
|
||||
Assert.assertEquals(theMethod, newRequest.getMethod());
|
||||
Assert.assertEquals(theUri, newRequest.getRequestUri());
|
||||
|
@ -145,7 +146,6 @@ public class TestConditionalRequestBuilder {
|
|||
@Test
|
||||
public void testCacheEntryWithMustRevalidateDoesEndToEndRevalidation() throws Exception {
|
||||
final HttpRequest basicRequest = new BasicHttpRequest("GET","/");
|
||||
final HttpRequest requestWrapper = RequestCopier.INSTANCE.copy(basicRequest);
|
||||
final Date now = new Date();
|
||||
final Date elevenSecondsAgo = new Date(now.getTime() - 11 * 1000L);
|
||||
final Date tenSecondsAgo = new Date(now.getTime() - 10 * 1000L);
|
||||
|
@ -157,7 +157,7 @@ public class TestConditionalRequestBuilder {
|
|||
new BasicHeader("Cache-Control","max-age=5, must-revalidate") };
|
||||
final HttpCacheEntry cacheEntry = HttpTestUtils.makeCacheEntry(elevenSecondsAgo, nineSecondsAgo, cacheEntryHeaders);
|
||||
|
||||
final HttpRequest result = impl.buildConditionalRequest(requestWrapper, cacheEntry);
|
||||
final HttpRequest result = impl.buildConditionalRequest(basicRequest, cacheEntry);
|
||||
|
||||
boolean foundMaxAge0 = false;
|
||||
|
||||
|
@ -174,7 +174,6 @@ public class TestConditionalRequestBuilder {
|
|||
@Test
|
||||
public void testCacheEntryWithProxyRevalidateDoesEndToEndRevalidation() throws Exception {
|
||||
final HttpRequest basicRequest = new BasicHttpRequest("GET", "/");
|
||||
final HttpRequest requestWrapper = RequestCopier.INSTANCE.copy(basicRequest);
|
||||
final Date now = new Date();
|
||||
final Date elevenSecondsAgo = new Date(now.getTime() - 11 * 1000L);
|
||||
final Date tenSecondsAgo = new Date(now.getTime() - 10 * 1000L);
|
||||
|
@ -186,7 +185,7 @@ public class TestConditionalRequestBuilder {
|
|||
new BasicHeader("Cache-Control","max-age=5, proxy-revalidate") };
|
||||
final HttpCacheEntry cacheEntry = HttpTestUtils.makeCacheEntry(elevenSecondsAgo, nineSecondsAgo, cacheEntryHeaders);
|
||||
|
||||
final HttpRequest result = impl.buildConditionalRequest(requestWrapper, cacheEntry);
|
||||
final HttpRequest result = impl.buildConditionalRequest(basicRequest, cacheEntry);
|
||||
|
||||
boolean foundMaxAge0 = false;
|
||||
final Iterator<HeaderElement> it = MessageSupport.iterate(result, HeaderConstants.CACHE_CONTROL);
|
||||
|
|
|
@ -36,7 +36,6 @@ import org.apache.hc.client5.http.cache.HttpCacheContext;
|
|||
import org.apache.hc.client5.http.classic.ExecChain;
|
||||
import org.apache.hc.client5.http.classic.ExecChainHandler;
|
||||
import org.apache.hc.client5.http.classic.ExecRuntime;
|
||||
import org.apache.hc.client5.http.impl.classic.ClassicRequestCopier;
|
||||
import org.apache.hc.client5.http.utils.DateUtils;
|
||||
import org.apache.hc.core5.http.ClassicHttpRequest;
|
||||
import org.apache.hc.core5.http.ClassicHttpResponse;
|
||||
|
@ -115,8 +114,9 @@ public class TestProtocolDeviations {
|
|||
}
|
||||
|
||||
private ClassicHttpResponse execute(final ClassicHttpRequest request) throws IOException, HttpException {
|
||||
return impl.execute(ClassicRequestCopier.INSTANCE.copy(request), new ExecChain.Scope(
|
||||
"test", route, request, mockEndpoint, context), mockExecChain);
|
||||
return impl.execute(request,
|
||||
new ExecChain.Scope("test", route, request, mockEndpoint, context),
|
||||
mockExecChain);
|
||||
}
|
||||
|
||||
protected ExecChainHandler createCachingExecChain(final HttpCache cache, final CacheConfig config) {
|
||||
|
|
|
@ -31,11 +31,11 @@ import static org.junit.Assert.assertTrue;
|
|||
|
||||
import java.util.Collections;
|
||||
|
||||
import org.apache.hc.client5.http.impl.RequestCopier;
|
||||
import org.apache.hc.core5.http.HttpRequest;
|
||||
import org.apache.hc.core5.http.HttpVersion;
|
||||
import org.apache.hc.core5.http.ProtocolVersion;
|
||||
import org.apache.hc.core5.http.message.BasicHttpRequest;
|
||||
import org.apache.hc.core5.http.support.BasicRequestBuilder;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -81,7 +81,7 @@ public class TestRequestProtocolCompliance {
|
|||
@Test
|
||||
public void doesNotModifyACompliantRequest() throws Exception {
|
||||
final HttpRequest req = new BasicHttpRequest("GET", "/");
|
||||
final HttpRequest wrapper = RequestCopier.INSTANCE.copy(req);
|
||||
final HttpRequest wrapper = BasicRequestBuilder.copy(req).build();
|
||||
impl.makeRequestCompliant(wrapper);
|
||||
assertTrue(HttpTestUtils.equivalent(req, wrapper));
|
||||
}
|
||||
|
@ -90,7 +90,7 @@ public class TestRequestProtocolCompliance {
|
|||
public void upgrades1_0RequestTo1_1() throws Exception {
|
||||
final HttpRequest req = new BasicHttpRequest("GET", "/");
|
||||
req.setVersion(HttpVersion.HTTP_1_0);
|
||||
final HttpRequest wrapper = RequestCopier.INSTANCE.copy(req);
|
||||
final HttpRequest wrapper = BasicRequestBuilder.copy(req).build();
|
||||
impl.makeRequestCompliant(wrapper);
|
||||
assertEquals(HttpVersion.HTTP_1_1, wrapper.getVersion());
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ public class TestRequestProtocolCompliance {
|
|||
public void downgrades1_2RequestTo1_1() throws Exception {
|
||||
final HttpRequest req = new BasicHttpRequest("GET", "/");
|
||||
req.setVersion(new ProtocolVersion("HTTP", 1, 2));
|
||||
final HttpRequest wrapper = RequestCopier.INSTANCE.copy(req);
|
||||
final HttpRequest wrapper = BasicRequestBuilder.copy(req).build();
|
||||
impl.makeRequestCompliant(wrapper);
|
||||
assertEquals(HttpVersion.HTTP_1_1, wrapper.getVersion());
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ public class TestRequestProtocolCompliance {
|
|||
throws Exception {
|
||||
final HttpRequest req = new BasicHttpRequest("GET", "/");
|
||||
req.setHeader("Cache-Control", "no-cache, min-fresh=10");
|
||||
final HttpRequest wrapper = RequestCopier.INSTANCE.copy(req);
|
||||
final HttpRequest wrapper = BasicRequestBuilder.copy(req).build();
|
||||
impl.makeRequestCompliant(wrapper);
|
||||
assertEquals("no-cache",
|
||||
wrapper.getFirstHeader("Cache-Control").getValue());
|
||||
|
@ -120,7 +120,7 @@ public class TestRequestProtocolCompliance {
|
|||
throws Exception {
|
||||
final HttpRequest req = new BasicHttpRequest("GET", "/");
|
||||
req.setHeader("Cache-Control", "no-cache, max-stale=10");
|
||||
final HttpRequest wrapper = RequestCopier.INSTANCE.copy(req);
|
||||
final HttpRequest wrapper = BasicRequestBuilder.copy(req).build();
|
||||
impl.makeRequestCompliant(wrapper);
|
||||
assertEquals("no-cache",
|
||||
wrapper.getFirstHeader("Cache-Control").getValue());
|
||||
|
@ -131,7 +131,7 @@ public class TestRequestProtocolCompliance {
|
|||
throws Exception {
|
||||
final HttpRequest req = new BasicHttpRequest("GET", "/");
|
||||
req.setHeader("Cache-Control", "no-cache, max-age=10");
|
||||
final HttpRequest wrapper = RequestCopier.INSTANCE.copy(req);
|
||||
final HttpRequest wrapper = BasicRequestBuilder.copy(req).build();
|
||||
impl.makeRequestCompliant(wrapper);
|
||||
assertEquals("no-cache",
|
||||
wrapper.getFirstHeader("Cache-Control").getValue());
|
||||
|
@ -142,7 +142,7 @@ public class TestRequestProtocolCompliance {
|
|||
throws Exception {
|
||||
final HttpRequest req = new BasicHttpRequest("GET", "/");
|
||||
req.setHeader("Cache-Control", "min-fresh=10");
|
||||
final HttpRequest wrapper = RequestCopier.INSTANCE.copy(req);
|
||||
final HttpRequest wrapper = BasicRequestBuilder.copy(req).build();
|
||||
impl.makeRequestCompliant(wrapper);
|
||||
assertEquals("min-fresh=10",
|
||||
wrapper.getFirstHeader("Cache-Control").getValue());
|
||||
|
@ -153,7 +153,7 @@ public class TestRequestProtocolCompliance {
|
|||
throws Exception {
|
||||
final HttpRequest req = new BasicHttpRequest("GET", "/");
|
||||
req.setHeader("Cache-Control", "no-cache,min-fresh=10,no-store");
|
||||
final HttpRequest wrapper = RequestCopier.INSTANCE.copy(req);
|
||||
final HttpRequest wrapper = BasicRequestBuilder.copy(req).build();
|
||||
impl.makeRequestCompliant(wrapper);
|
||||
assertEquals("no-cache,no-store",
|
||||
wrapper.getFirstHeader("Cache-Control").getValue());
|
||||
|
|
|
@ -30,12 +30,12 @@ import java.util.Date;
|
|||
|
||||
import org.apache.hc.client5.http.ClientProtocolException;
|
||||
import org.apache.hc.client5.http.classic.methods.HttpGet;
|
||||
import org.apache.hc.client5.http.impl.classic.ClassicRequestCopier;
|
||||
import org.apache.hc.client5.http.utils.DateUtils;
|
||||
import org.apache.hc.core5.http.HttpRequest;
|
||||
import org.apache.hc.core5.http.HttpResponse;
|
||||
import org.apache.hc.core5.http.HttpStatus;
|
||||
import org.apache.hc.core5.http.message.BasicHttpResponse;
|
||||
import org.apache.hc.core5.http.support.BasicRequestBuilder;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
|
@ -64,7 +64,7 @@ public class TestResponseProtocolCompliance {
|
|||
@Test(expected=ClientProtocolException.class)
|
||||
public void throwsExceptionIfOriginReturnsPartialResponseWhenNotRequested() throws Exception {
|
||||
final HttpGet req = new HttpGet("http://foo.example.com/");
|
||||
final HttpRequest wrapper = ClassicRequestCopier.INSTANCE.copy(req);
|
||||
final HttpRequest wrapper = BasicRequestBuilder.copy(req).build();
|
||||
final int nbytes = 128;
|
||||
final HttpResponse resp = makePartialResponse(nbytes);
|
||||
|
||||
|
|
|
@ -33,7 +33,10 @@ import org.apache.hc.core5.http.HttpMessage;
|
|||
* Abstract HTTP message copier.
|
||||
*
|
||||
* @since 5.0
|
||||
*
|
||||
* @deprecated Use message builders.
|
||||
*/
|
||||
@Deprecated
|
||||
public interface MessageCopier<T extends HttpMessage> {
|
||||
|
||||
T copy(T object);
|
||||
|
|
|
@ -36,7 +36,10 @@ import org.apache.hc.core5.http.message.BasicHttpRequest;
|
|||
* {@link HttpRequest} copier.
|
||||
*
|
||||
* @since 5.0
|
||||
*
|
||||
* @deprecated Use {@link org.apache.hc.core5.http.support.BasicRequestBuilder}
|
||||
*/
|
||||
@Deprecated
|
||||
public final class RequestCopier implements MessageCopier<HttpRequest> {
|
||||
|
||||
public static final RequestCopier INSTANCE = new RequestCopier();
|
||||
|
|
|
@ -33,7 +33,6 @@ import org.apache.hc.client5.http.HttpRoute;
|
|||
import org.apache.hc.client5.http.async.AsyncExecCallback;
|
||||
import org.apache.hc.client5.http.async.AsyncExecChain;
|
||||
import org.apache.hc.client5.http.async.AsyncExecChainHandler;
|
||||
import org.apache.hc.client5.http.impl.RequestCopier;
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.core5.annotation.Contract;
|
||||
import org.apache.hc.core5.annotation.Internal;
|
||||
|
@ -45,6 +44,7 @@ import org.apache.hc.core5.http.HttpResponse;
|
|||
import org.apache.hc.core5.http.nio.AsyncDataConsumer;
|
||||
import org.apache.hc.core5.http.nio.AsyncEntityProducer;
|
||||
import org.apache.hc.core5.http.nio.entity.NoopEntityConsumer;
|
||||
import org.apache.hc.core5.http.support.BasicRequestBuilder;
|
||||
import org.apache.hc.core5.util.Args;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -93,7 +93,7 @@ public final class AsyncHttpRequestRetryExec implements AsyncExecChainHandler {
|
|||
|
||||
final String exchangeId = scope.exchangeId;
|
||||
|
||||
chain.proceed(RequestCopier.INSTANCE.copy(request), entityProducer, scope, new AsyncExecCallback() {
|
||||
chain.proceed(BasicRequestBuilder.copy(request).build(), entityProducer, scope, new AsyncExecCallback() {
|
||||
|
||||
@Override
|
||||
public AsyncDataConsumer handleResponse(
|
||||
|
|
|
@ -47,7 +47,6 @@ import org.apache.hc.client5.http.config.RequestConfig;
|
|||
import org.apache.hc.client5.http.cookie.CookieSpecFactory;
|
||||
import org.apache.hc.client5.http.cookie.CookieStore;
|
||||
import org.apache.hc.client5.http.impl.ExecSupport;
|
||||
import org.apache.hc.client5.http.impl.RequestCopier;
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.client5.http.routing.RoutingSupport;
|
||||
import org.apache.hc.core5.concurrent.ComplexFuture;
|
||||
|
@ -68,6 +67,7 @@ import org.apache.hc.core5.http.nio.DataStreamChannel;
|
|||
import org.apache.hc.core5.http.nio.HandlerFactory;
|
||||
import org.apache.hc.core5.http.nio.RequestChannel;
|
||||
import org.apache.hc.core5.http.protocol.HttpContext;
|
||||
import org.apache.hc.core5.http.support.BasicRequestBuilder;
|
||||
import org.apache.hc.core5.io.CloseMode;
|
||||
import org.apache.hc.core5.io.ModalCloseable;
|
||||
import org.apache.hc.core5.reactor.DefaultConnectingIOReactor;
|
||||
|
@ -191,7 +191,7 @@ abstract class InternalAbstractHttpAsyncClient extends AbstractHttpAsyncClientBa
|
|||
clientContext, execRuntime);
|
||||
final AtomicBoolean outputTerminated = new AtomicBoolean(false);
|
||||
execChain.execute(
|
||||
RequestCopier.INSTANCE.copy(request),
|
||||
BasicRequestBuilder.copy(request).build(),
|
||||
entityDetails != null ? new AsyncEntityProducer() {
|
||||
|
||||
@Override
|
||||
|
|
|
@ -37,7 +37,10 @@ import org.apache.hc.core5.http.message.BasicClassicHttpRequest;
|
|||
* {@link ClassicHttpRequest} copier.
|
||||
*
|
||||
* @since 5.0
|
||||
*
|
||||
* @deprecated Use {@link org.apache.hc.core5.http.io.support.ClassicRequestBuilder}
|
||||
*/
|
||||
@Deprecated
|
||||
public final class ClassicRequestCopier implements MessageCopier<ClassicHttpRequest> {
|
||||
|
||||
public static final ClassicRequestCopier INSTANCE = new ClassicRequestCopier();
|
||||
|
|
|
@ -33,8 +33,8 @@ import org.apache.hc.client5.http.HttpRequestRetryStrategy;
|
|||
import org.apache.hc.client5.http.HttpRoute;
|
||||
import org.apache.hc.client5.http.classic.ExecChain;
|
||||
import org.apache.hc.client5.http.classic.ExecChain.Scope;
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.client5.http.classic.ExecChainHandler;
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.core5.annotation.Contract;
|
||||
import org.apache.hc.core5.annotation.Internal;
|
||||
import org.apache.hc.core5.annotation.ThreadingBehavior;
|
||||
|
@ -43,6 +43,7 @@ import org.apache.hc.core5.http.ClassicHttpResponse;
|
|||
import org.apache.hc.core5.http.HttpEntity;
|
||||
import org.apache.hc.core5.http.HttpException;
|
||||
import org.apache.hc.core5.http.NoHttpResponseException;
|
||||
import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
|
||||
import org.apache.hc.core5.util.Args;
|
||||
import org.apache.hc.core5.util.TimeValue;
|
||||
import org.slf4j.Logger;
|
||||
|
@ -110,7 +111,7 @@ public class HttpRequestRetryExec implements ExecChainHandler {
|
|||
LOG.info("Recoverable I/O exception ({}) caught when processing request to {}",
|
||||
ex.getClass().getName(), route);
|
||||
}
|
||||
currentRequest = ClassicRequestCopier.INSTANCE.copy(scope.originalRequest);
|
||||
currentRequest = ClassicRequestBuilder.copy(scope.originalRequest).build();
|
||||
continue;
|
||||
} else {
|
||||
if (ex instanceof NoHttpResponseException) {
|
||||
|
@ -146,7 +147,7 @@ public class HttpRequestRetryExec implements ExecChainHandler {
|
|||
throw new InterruptedIOException();
|
||||
}
|
||||
}
|
||||
currentRequest = ClassicRequestCopier.INSTANCE.copy(scope.originalRequest);
|
||||
currentRequest = ClassicRequestBuilder.copy(scope.originalRequest).build();
|
||||
} else {
|
||||
return response;
|
||||
}
|
||||
|
|
|
@ -58,6 +58,7 @@ import org.apache.hc.core5.http.HttpHost;
|
|||
import org.apache.hc.core5.http.HttpRequest;
|
||||
import org.apache.hc.core5.http.config.Lookup;
|
||||
import org.apache.hc.core5.http.impl.io.HttpRequestExecutor;
|
||||
import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
|
||||
import org.apache.hc.core5.http.protocol.BasicHttpContext;
|
||||
import org.apache.hc.core5.http.protocol.HttpContext;
|
||||
import org.apache.hc.core5.io.CloseMode;
|
||||
|
@ -175,7 +176,7 @@ class InternalHttpClient extends CloseableHttpClient implements Configurable {
|
|||
final ExecRuntime execRuntime = new InternalExecRuntime(LOG, connManager, requestExecutor,
|
||||
request instanceof CancellableDependency ? (CancellableDependency) request : null);
|
||||
final ExecChain.Scope scope = new ExecChain.Scope(exchangeId, route, request, execRuntime, localcontext);
|
||||
final ClassicHttpResponse response = this.execChain.execute(ClassicRequestCopier.INSTANCE.copy(request), scope);
|
||||
final ClassicHttpResponse response = this.execChain.execute(ClassicRequestBuilder.copy(request).build(), scope);
|
||||
return CloseableHttpResponse.adapt(response);
|
||||
} catch (final HttpException httpException) {
|
||||
throw new ClientProtocolException(httpException.getMessage(), httpException);
|
||||
|
|
|
@ -44,6 +44,7 @@ import org.apache.hc.core5.http.Header;
|
|||
import org.apache.hc.core5.http.HttpHost;
|
||||
import org.apache.hc.core5.http.HttpRequest;
|
||||
import org.apache.hc.core5.http.HttpResponse;
|
||||
import org.apache.hc.core5.http.io.support.ClassicRequestBuilder;
|
||||
import org.apache.hc.core5.http.protocol.HttpContext;
|
||||
import org.apache.hc.core5.util.TimeValue;
|
||||
import org.junit.Assert;
|
||||
|
@ -185,7 +186,7 @@ public class TestHttpRequestRetryExec {
|
|||
Mockito.eq(1),
|
||||
Mockito.<HttpContext>any())).thenReturn(Boolean.TRUE);
|
||||
final ExecChain.Scope scope = new ExecChain.Scope("test", route, originalRequest, endpoint, context);
|
||||
final ClassicHttpRequest request = ClassicRequestCopier.INSTANCE.copy(originalRequest);
|
||||
final ClassicHttpRequest request = ClassicRequestBuilder.copy(originalRequest).build();
|
||||
try {
|
||||
retryExec.execute(request, scope, chain);
|
||||
} catch (final IOException ex) {
|
||||
|
@ -209,7 +210,7 @@ public class TestHttpRequestRetryExec {
|
|||
Mockito.when(endpoint.isExecutionAborted()).thenReturn(true);
|
||||
|
||||
final ExecChain.Scope scope = new ExecChain.Scope("test", route, originalRequest, endpoint, context);
|
||||
final ClassicHttpRequest request = ClassicRequestCopier.INSTANCE.copy(originalRequest);
|
||||
final ClassicHttpRequest request = ClassicRequestBuilder.copy(originalRequest).build();
|
||||
try {
|
||||
retryExec.execute(request, scope, chain);
|
||||
} catch (final IOException ex) {
|
||||
|
@ -254,7 +255,7 @@ public class TestHttpRequestRetryExec {
|
|||
Mockito.eq(1),
|
||||
Mockito.<HttpContext>any())).thenReturn(Boolean.TRUE);
|
||||
final ExecChain.Scope scope = new ExecChain.Scope("test", route, originalRequest, endpoint, context);
|
||||
final ClassicHttpRequest request = ClassicRequestCopier.INSTANCE.copy(originalRequest);
|
||||
final ClassicHttpRequest request = ClassicRequestBuilder.copy(originalRequest).build();
|
||||
try {
|
||||
retryExec.execute(request, scope, chain);
|
||||
} catch (final IOException ex) {
|
||||
|
|
Loading…
Reference in New Issue