HttpClientContext to use instance variables for standard attributes
This commit is contained in:
parent
f2b9a374d8
commit
762b18fe69
|
@ -68,7 +68,7 @@ public class HttpCacheContext extends HttpClientContext {
|
|||
}
|
||||
|
||||
public static HttpCacheContext create() {
|
||||
return new HttpCacheContext(new HttpClientContext());
|
||||
return new HttpCacheContext();
|
||||
}
|
||||
|
||||
public HttpCacheContext(final HttpContext context) {
|
||||
|
|
|
@ -804,7 +804,7 @@ class AsyncCachingExec extends CachingExecBase implements AsyncExecChainHandler
|
|||
scope.route,
|
||||
scope.originalRequest,
|
||||
new ComplexFuture<>(null),
|
||||
HttpClientContext.create(),
|
||||
HttpCacheContext.create(),
|
||||
scope.execRuntime.fork(),
|
||||
scope.scheduler,
|
||||
scope.execCount);
|
||||
|
|
|
@ -318,7 +318,7 @@ class CachingExec extends CachingExecBase implements ExecChainHandler {
|
|||
scope.route,
|
||||
scope.originalRequest,
|
||||
scope.execRuntime.fork(null),
|
||||
HttpClientContext.create());
|
||||
HttpCacheContext.create());
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("{} starting asynchronous revalidation exchange {}", exchangeId, revalidationExchangeId);
|
||||
}
|
||||
|
|
|
@ -232,14 +232,14 @@ public class Executor {
|
|||
final HttpClientContext localContext = HttpClientContext.create();
|
||||
final CredentialsStore credentialsStoreSnapshot = credentialsStore;
|
||||
if (credentialsStoreSnapshot != null) {
|
||||
localContext.setAttribute(HttpClientContext.CREDS_PROVIDER, credentialsStoreSnapshot);
|
||||
localContext.setCredentialsProvider(credentialsStoreSnapshot);
|
||||
}
|
||||
if (this.authCache != null) {
|
||||
localContext.setAttribute(HttpClientContext.AUTH_CACHE, this.authCache);
|
||||
localContext.setAuthCache(this.authCache);
|
||||
}
|
||||
final CookieStore cookieStoreSnapshot = cookieStore;
|
||||
if (cookieStoreSnapshot != null) {
|
||||
localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStoreSnapshot);
|
||||
localContext.setCookieStore(cookieStoreSnapshot);
|
||||
}
|
||||
return new Response(request.internalExecute(this.httpclient, localContext));
|
||||
}
|
||||
|
|
|
@ -102,7 +102,7 @@ public class ContextBuilder extends AbstractClientContextBuilder<HttpClientConte
|
|||
|
||||
@Override
|
||||
protected HttpClientContext createContext() {
|
||||
return new HttpClientContext();
|
||||
return HttpClientContext.create();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ public interface AsyncExecChain {
|
|||
this.route = Args.notNull(route, "Route");
|
||||
this.originalRequest = Args.notNull(originalRequest, "Original request");
|
||||
this.cancellableDependency = Args.notNull(cancellableDependency, "Dependency");
|
||||
this.clientContext = clientContext != null ? clientContext : HttpClientContext.create();
|
||||
this.clientContext = Args.notNull(clientContext, "HTTP context");
|
||||
this.execRuntime = Args.notNull(execRuntime, "Exec runtime");
|
||||
this.scheduler = scheduler;
|
||||
this.execCount = execCount != null ? execCount : new AtomicInteger(1);
|
||||
|
|
|
@ -59,7 +59,7 @@ public interface ExecChain {
|
|||
this.route = Args.notNull(route, "Route");
|
||||
this.originalRequest = Args.notNull(originalRequest, "Original request");
|
||||
this.execRuntime = Args.notNull(execRuntime, "Exec runtime");
|
||||
this.clientContext = clientContext != null ? clientContext : HttpClientContext.create();
|
||||
this.clientContext = Args.notNull(clientContext, "HTTP context");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ public class DefaultAuthenticationStrategy implements AuthenticationStrategy {
|
|||
Args.notNull(challengeType, "ChallengeType");
|
||||
Args.notNull(challenges, "Map of auth challenges");
|
||||
Args.notNull(context, "HTTP context");
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
|
||||
final List<AuthScheme> options = new ArrayList<>();
|
||||
|
@ -88,7 +88,7 @@ public class DefaultAuthenticationStrategy implements AuthenticationStrategy {
|
|||
}
|
||||
return options;
|
||||
}
|
||||
final RequestConfig config = clientContext.getRequestConfig();
|
||||
final RequestConfig config = clientContext.getRequestConfigOrDefault();
|
||||
Collection<String> authPrefs = challengeType == ChallengeType.TARGET ?
|
||||
config.getTargetPreferredAuthSchemes() : config.getProxyPreferredAuthSchemes();
|
||||
if (authPrefs == null) {
|
||||
|
|
|
@ -71,8 +71,8 @@ public class DefaultConnectionKeepAliveStrategy implements ConnectionKeepAliveSt
|
|||
}
|
||||
}
|
||||
}
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final RequestConfig requestConfig = clientContext.getRequestConfig();
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final RequestConfig requestConfig = clientContext.getRequestConfigOrDefault();
|
||||
return requestConfig.getConnectionKeepAlive();
|
||||
}
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ public class DefaultUserTokenHandler implements UserTokenHandler {
|
|||
@Override
|
||||
public Object getUserToken(final HttpRoute route, final HttpRequest request, final HttpContext context) {
|
||||
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
|
||||
final HttpHost target = request != null ? new HttpHost(request.getScheme(), request.getAuthority()) : route.getTargetHost();
|
||||
|
||||
|
|
|
@ -29,7 +29,6 @@ package org.apache.hc.client5.http.impl.async;
|
|||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.core5.concurrent.Cancellable;
|
||||
import org.apache.hc.core5.concurrent.ComplexFuture;
|
||||
import org.apache.hc.core5.concurrent.FutureCallback;
|
||||
|
@ -86,7 +85,7 @@ abstract class AbstractMinimalHttpAsyncClientBase extends AbstractHttpAsyncClien
|
|||
}
|
||||
|
||||
public final Cancellable execute(final AsyncClientExchangeHandler exchangeHandler) {
|
||||
return execute(exchangeHandler, null, HttpClientContext.create());
|
||||
return execute(exchangeHandler, null, null);
|
||||
}
|
||||
|
||||
public abstract Cancellable execute(
|
||||
|
|
|
@ -509,7 +509,7 @@ public final class AsyncConnectExec implements AsyncExecChainHandler {
|
|||
final HttpHost proxy,
|
||||
final HttpResponse response,
|
||||
final HttpClientContext context) {
|
||||
final RequestConfig config = context.getRequestConfig();
|
||||
final RequestConfig config = context.getRequestConfigOrDefault();
|
||||
if (config.isAuthenticationEnabled()) {
|
||||
final boolean proxyAuthRequested = authenticator.isChallenged(proxy, ChallengeType.PROXY, response, proxyAuthExchange, context);
|
||||
|
||||
|
|
|
@ -306,7 +306,7 @@ public final class AsyncProtocolExec implements AsyncExecChainHandler {
|
|||
final String pathPrefix,
|
||||
final HttpResponse response,
|
||||
final HttpClientContext context) {
|
||||
final RequestConfig config = context.getRequestConfig();
|
||||
final RequestConfig config = context.getRequestConfigOrDefault();
|
||||
if (config.isAuthenticationEnabled()) {
|
||||
final boolean targetAuthRequested = authenticator.isChallenged(
|
||||
target, ChallengeType.TARGET, response, targetAuthExchange, context);
|
||||
|
|
|
@ -118,7 +118,7 @@ public final class AsyncRedirectExec implements AsyncExecChainHandler {
|
|||
final EntityDetails entityDetails) throws HttpException, IOException {
|
||||
|
||||
state.redirectURI = null;
|
||||
final RequestConfig config = clientContext.getRequestConfig();
|
||||
final RequestConfig config = clientContext.getRequestConfigOrDefault();
|
||||
if (config.isRedirectsEnabled() && redirectStrategy.isRedirected(request, response, clientContext)) {
|
||||
if (state.redirectCount >= state.maxRedirects) {
|
||||
throw new RedirectException("Maximum redirects (" + state.maxRedirects + ") exceeded");
|
||||
|
@ -263,11 +263,11 @@ public final class AsyncRedirectExec implements AsyncExecChainHandler {
|
|||
RedirectLocations redirectLocations = clientContext.getRedirectLocations();
|
||||
if (redirectLocations == null) {
|
||||
redirectLocations = new RedirectLocations();
|
||||
clientContext.setAttribute(HttpClientContext.REDIRECT_LOCATIONS, redirectLocations);
|
||||
clientContext.setRedirectLocations(redirectLocations);
|
||||
}
|
||||
redirectLocations.clear();
|
||||
|
||||
final RequestConfig config = clientContext.getRequestConfig();
|
||||
final RequestConfig config = clientContext.getRequestConfigOrDefault();
|
||||
|
||||
final State state = new State();
|
||||
state.maxRedirects = config.getMaxRedirects() > 0 ? config.getMaxRedirects() : 50;
|
||||
|
|
|
@ -33,7 +33,6 @@ import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
|
|||
import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
|
||||
import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
|
||||
import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
|
||||
import org.apache.hc.client5.http.protocol.HttpClientContext;
|
||||
import org.apache.hc.core5.annotation.Contract;
|
||||
import org.apache.hc.core5.annotation.ThreadingBehavior;
|
||||
import org.apache.hc.core5.concurrent.FutureCallback;
|
||||
|
@ -113,7 +112,7 @@ public abstract class CloseableHttpAsyncClient implements HttpAsyncClient, Modal
|
|||
final FutureCallback<T> callback) {
|
||||
Args.notNull(requestProducer, "Request producer");
|
||||
Args.notNull(responseConsumer, "Response consumer");
|
||||
return execute(requestProducer, responseConsumer, HttpClientContext.create(), callback);
|
||||
return execute(requestProducer, responseConsumer, null, callback);
|
||||
}
|
||||
|
||||
public final Future<SimpleHttpResponse> execute(
|
||||
|
@ -127,7 +126,7 @@ public abstract class CloseableHttpAsyncClient implements HttpAsyncClient, Modal
|
|||
public final Future<SimpleHttpResponse> execute(
|
||||
final SimpleHttpRequest request,
|
||||
final FutureCallback<SimpleHttpResponse> callback) {
|
||||
return execute(request, HttpClientContext.create(), callback);
|
||||
return execute(request, null, callback);
|
||||
}
|
||||
|
||||
public abstract void register(String hostname, String uriPattern, Supplier<AsyncPushConsumer> supplier);
|
||||
|
|
|
@ -125,9 +125,8 @@ public class H2AsyncMainClientExec implements AsyncExecChainHandler {
|
|||
|
||||
@Override
|
||||
public void produceRequest(final RequestChannel channel, final HttpContext context) throws HttpException, IOException {
|
||||
|
||||
clientContext.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
clientContext.setRequest(request);
|
||||
clientContext.setRoute(route);
|
||||
httpProcessor.process(request, entityProducer, clientContext);
|
||||
|
||||
channel.sendRequest(request, entityProducer, context);
|
||||
|
|
|
@ -148,7 +148,7 @@ class HttpAsyncMainClientExec implements AsyncExecChainHandler {
|
|||
final RequestChannel channel,
|
||||
final HttpContext context) throws HttpException, IOException {
|
||||
|
||||
clientContext.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
clientContext.setRoute(route);
|
||||
clientContext.setRequest(request);
|
||||
httpProcessor.process(request, entityProducer, clientContext);
|
||||
|
||||
|
@ -248,7 +248,7 @@ class HttpAsyncMainClientExec implements AsyncExecChainHandler {
|
|||
Object userToken = clientContext.getUserToken();
|
||||
if (userToken == null) {
|
||||
userToken = userTokenHandler.getUserToken(route, request, clientContext);
|
||||
clientContext.setAttribute(HttpClientContext.USER_TOKEN, userToken);
|
||||
clientContext.setUserToken(userToken);
|
||||
}
|
||||
execRuntime.markConnectionReusable(userToken, keepAliveDuration);
|
||||
if (entityDetails == null) {
|
||||
|
|
|
@ -84,6 +84,7 @@ abstract class InternalAbstractHttpAsyncClient extends AbstractHttpAsyncClientBa
|
|||
private final static ThreadFactory SCHEDULER_THREAD_FACTORY = new DefaultThreadFactory("Scheduled-executor", true);
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(InternalAbstractHttpAsyncClient.class);
|
||||
|
||||
private final AsyncExecChainElement execChain;
|
||||
private final Lookup<CookieSpecFactory> cookieSpecRegistry;
|
||||
private final Lookup<AuthSchemeFactory> authSchemeRegistry;
|
||||
|
@ -165,20 +166,20 @@ abstract class InternalAbstractHttpAsyncClient extends AbstractHttpAsyncClientBa
|
|||
}
|
||||
|
||||
private void setupContext(final HttpClientContext context) {
|
||||
if (context.getAttribute(HttpClientContext.AUTHSCHEME_REGISTRY) == null) {
|
||||
context.setAttribute(HttpClientContext.AUTHSCHEME_REGISTRY, authSchemeRegistry);
|
||||
if (context.getAuthSchemeRegistry() == null) {
|
||||
context.setAuthSchemeRegistry(authSchemeRegistry);
|
||||
}
|
||||
if (context.getAttribute(HttpClientContext.COOKIESPEC_REGISTRY) == null) {
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, cookieSpecRegistry);
|
||||
if (context.getCookieSpecRegistry() == null) {
|
||||
context.setCookieSpecRegistry(cookieSpecRegistry);
|
||||
}
|
||||
if (context.getAttribute(HttpClientContext.COOKIE_STORE) == null) {
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore);
|
||||
if (context.getCookieStore() == null) {
|
||||
context.setCookieStore(cookieStore);
|
||||
}
|
||||
if (context.getAttribute(HttpClientContext.CREDS_PROVIDER) == null) {
|
||||
context.setAttribute(HttpClientContext.CREDS_PROVIDER, credentialsProvider);
|
||||
if (context.getCredentialsProvider() == null) {
|
||||
context.setCredentialsProvider(credentialsProvider);
|
||||
}
|
||||
if (context.getAttribute(HttpClientContext.REQUEST_CONFIG) == null) {
|
||||
context.setAttribute(HttpClientContext.REQUEST_CONFIG, defaultConfig);
|
||||
if (context.getRequestConfig() == null) {
|
||||
context.setRequestConfig(defaultConfig);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -199,7 +200,7 @@ abstract class InternalAbstractHttpAsyncClient extends AbstractHttpAsyncClientBa
|
|||
if (!isRunning()) {
|
||||
throw new CancellationException("Request execution cancelled");
|
||||
}
|
||||
final HttpClientContext clientContext = context != null ? HttpClientContext.adapt(context) : HttpClientContext.create();
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
requestProducer.sendRequest((request, entityDetails, c) -> {
|
||||
|
||||
RequestConfig requestConfig = null;
|
||||
|
|
|
@ -87,7 +87,7 @@ class InternalH2AsyncExecRuntime implements AsyncExecRuntime {
|
|||
final HttpClientContext context,
|
||||
final FutureCallback<AsyncExecRuntime> callback) {
|
||||
if (sessionRef.get() == null) {
|
||||
final RequestConfig requestConfig = context.getRequestConfig();
|
||||
final RequestConfig requestConfig = context.getRequestConfigOrDefault();
|
||||
@SuppressWarnings("deprecation")
|
||||
final Timeout connectTimeout = requestConfig.getConnectTimeout();
|
||||
if (log.isDebugEnabled()) {
|
||||
|
@ -183,7 +183,7 @@ class InternalH2AsyncExecRuntime implements AsyncExecRuntime {
|
|||
return Operations.nonCancellable();
|
||||
}
|
||||
final HttpRoute route = endpoint.route;
|
||||
final RequestConfig requestConfig = context.getRequestConfig();
|
||||
final RequestConfig requestConfig = context.getRequestConfigOrDefault();
|
||||
@SuppressWarnings("deprecation")
|
||||
final Timeout connectTimeout = requestConfig.getConnectTimeout();
|
||||
if (log.isDebugEnabled()) {
|
||||
|
@ -262,7 +262,7 @@ class InternalH2AsyncExecRuntime implements AsyncExecRuntime {
|
|||
Command.Priority.NORMAL);
|
||||
} else {
|
||||
final HttpRoute route = endpoint.route;
|
||||
final RequestConfig requestConfig = context.getRequestConfig();
|
||||
final RequestConfig requestConfig = context.getRequestConfigOrDefault();
|
||||
@SuppressWarnings("deprecation")
|
||||
final Timeout connectTimeout = requestConfig.getConnectTimeout();
|
||||
connPool.getSession(route, connectTimeout, new FutureCallback<IOSession>() {
|
||||
|
|
|
@ -98,7 +98,7 @@ class InternalHttpAsyncExecRuntime implements AsyncExecRuntime {
|
|||
final FutureCallback<AsyncExecRuntime> callback) {
|
||||
if (endpointRef.get() == null) {
|
||||
state = object;
|
||||
final RequestConfig requestConfig = context.getRequestConfig();
|
||||
final RequestConfig requestConfig = context.getRequestConfigOrDefault();
|
||||
final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout();
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("{} acquiring endpoint ({})", id, connectionRequestTimeout);
|
||||
|
@ -208,7 +208,7 @@ class InternalHttpAsyncExecRuntime implements AsyncExecRuntime {
|
|||
callback.completed(this);
|
||||
return Operations.nonCancellable();
|
||||
}
|
||||
final RequestConfig requestConfig = context.getRequestConfig();
|
||||
final RequestConfig requestConfig = context.getRequestConfigOrDefault();
|
||||
@SuppressWarnings("deprecation")
|
||||
final Timeout connectTimeout = requestConfig.getConnectTimeout();
|
||||
if (log.isDebugEnabled()) {
|
||||
|
@ -280,13 +280,13 @@ class InternalHttpAsyncExecRuntime implements AsyncExecRuntime {
|
|||
if (log.isDebugEnabled()) {
|
||||
log.debug("{} start execution {}", ConnPoolSupport.getId(endpoint), id);
|
||||
}
|
||||
final RequestConfig requestConfig = context.getRequestConfig();
|
||||
final RequestConfig requestConfig = context.getRequestConfigOrDefault();
|
||||
final Timeout responseTimeout = requestConfig.getResponseTimeout();
|
||||
if (responseTimeout != null) {
|
||||
endpoint.setSocketTimeout(responseTimeout);
|
||||
}
|
||||
endpoint.execute(id, exchangeHandler, context);
|
||||
if (context.getRequestConfig().isHardCancellationEnabled()) {
|
||||
if (context.getRequestConfigOrDefault().isHardCancellationEnabled()) {
|
||||
return () -> {
|
||||
exchangeHandler.cancel();
|
||||
return true;
|
||||
|
|
|
@ -71,6 +71,7 @@ import org.apache.hc.core5.reactor.DefaultConnectingIOReactor;
|
|||
import org.apache.hc.core5.reactor.IOEventHandlerFactory;
|
||||
import org.apache.hc.core5.reactor.IOReactorConfig;
|
||||
import org.apache.hc.core5.reactor.IOSession;
|
||||
import org.apache.hc.core5.util.Args;
|
||||
import org.apache.hc.core5.util.Timeout;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -122,12 +123,13 @@ public final class MinimalH2AsyncClient extends AbstractMinimalHttpAsyncClientBa
|
|||
final AsyncClientExchangeHandler exchangeHandler,
|
||||
final HandlerFactory<AsyncPushConsumer> pushHandlerFactory,
|
||||
final HttpContext context) {
|
||||
Args.notNull(exchangeHandler, "Message exchange handler");
|
||||
final ComplexCancellable cancellable = new ComplexCancellable();
|
||||
try {
|
||||
if (!isRunning()) {
|
||||
throw new CancellationException("Request execution cancelled");
|
||||
}
|
||||
final HttpClientContext clientContext = context != null ? HttpClientContext.adapt(context) : HttpClientContext.create();
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
exchangeHandler.produceRequest((request, entityDetails, context1) -> {
|
||||
RequestConfig requestConfig = null;
|
||||
if (request instanceof Configurable) {
|
||||
|
@ -136,7 +138,7 @@ public final class MinimalH2AsyncClient extends AbstractMinimalHttpAsyncClientBa
|
|||
if (requestConfig != null) {
|
||||
clientContext.setRequestConfig(requestConfig);
|
||||
} else {
|
||||
requestConfig = clientContext.getRequestConfig();
|
||||
requestConfig = clientContext.getRequestConfigOrDefault();
|
||||
}
|
||||
@SuppressWarnings("deprecation")
|
||||
final Timeout connectTimeout = requestConfig.getConnectTimeout();
|
||||
|
|
|
@ -205,7 +205,7 @@ public final class MinimalHttpAsyncClient extends AbstractMinimalHttpAsyncClient
|
|||
public Future<AsyncClientEndpoint> lease(
|
||||
final HttpHost host,
|
||||
final FutureCallback<AsyncClientEndpoint> callback) {
|
||||
return lease(host, HttpClientContext.create(), callback);
|
||||
return lease(host, null, callback);
|
||||
}
|
||||
|
||||
public Future<AsyncClientEndpoint> lease(
|
||||
|
@ -213,14 +213,13 @@ public final class MinimalHttpAsyncClient extends AbstractMinimalHttpAsyncClient
|
|||
final HttpContext context,
|
||||
final FutureCallback<AsyncClientEndpoint> callback) {
|
||||
Args.notNull(host, "Host");
|
||||
Args.notNull(context, "HTTP context");
|
||||
final BasicFuture<AsyncClientEndpoint> future = new BasicFuture<>(callback);
|
||||
if (!isRunning()) {
|
||||
future.failed(new CancellationException("Connection lease cancelled"));
|
||||
return future;
|
||||
}
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final RequestConfig requestConfig = clientContext.getRequestConfig();
|
||||
final RequestConfig requestConfig = clientContext.getRequestConfigOrDefault();
|
||||
final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout();
|
||||
@SuppressWarnings("deprecation")
|
||||
final Timeout connectTimeout = requestConfig.getConnectTimeout();
|
||||
|
@ -260,7 +259,7 @@ public final class MinimalHttpAsyncClient extends AbstractMinimalHttpAsyncClient
|
|||
if (!isRunning()) {
|
||||
throw new CancellationException("Request execution cancelled");
|
||||
}
|
||||
final HttpClientContext clientContext = context != null ? HttpClientContext.adapt(context) : HttpClientContext.create();
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
exchangeHandler.produceRequest((request, entityDetails, context1) -> {
|
||||
RequestConfig requestConfig = null;
|
||||
if (request instanceof Configurable) {
|
||||
|
@ -269,7 +268,7 @@ public final class MinimalHttpAsyncClient extends AbstractMinimalHttpAsyncClient
|
|||
if (requestConfig != null) {
|
||||
clientContext.setRequestConfig(requestConfig);
|
||||
} else {
|
||||
requestConfig = clientContext.getRequestConfig();
|
||||
requestConfig = clientContext.getRequestConfigOrDefault();
|
||||
}
|
||||
final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout();
|
||||
@SuppressWarnings("deprecation")
|
||||
|
@ -456,7 +455,7 @@ public final class MinimalHttpAsyncClient extends AbstractMinimalHttpAsyncClient
|
|||
final HttpContext context) {
|
||||
Asserts.check(!released.get(), "Endpoint has already been released");
|
||||
|
||||
final HttpClientContext clientContext = context != null ? HttpClientContext.adapt(context) : HttpClientContext.create();
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final String exchangeId = ExecSupport.getNextExchangeId();
|
||||
clientContext.setExchangeId(exchangeId);
|
||||
if (LOG.isDebugEnabled()) {
|
||||
|
|
|
@ -62,7 +62,7 @@ public final class AuthCacheKeeper {
|
|||
final String pathPrefix,
|
||||
final AuthExchange authExchange,
|
||||
final HttpContext context) {
|
||||
clearCache(host, pathPrefix, HttpClientContext.adapt(context));
|
||||
clearCache(host, pathPrefix, HttpClientContext.cast(context));
|
||||
}
|
||||
|
||||
public void updateOnNoChallenge(final HttpHost host,
|
||||
|
@ -70,7 +70,7 @@ public final class AuthCacheKeeper {
|
|||
final AuthExchange authExchange,
|
||||
final HttpContext context) {
|
||||
if (authExchange.getState() == AuthExchange.State.SUCCESS) {
|
||||
updateCache(host, pathPrefix, authExchange.getAuthScheme(), HttpClientContext.adapt(context));
|
||||
updateCache(host, pathPrefix, authExchange.getAuthScheme(), HttpClientContext.cast(context));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,7 @@ public final class AuthCacheKeeper {
|
|||
final AuthExchange authExchange,
|
||||
final HttpContext context) {
|
||||
if (authExchange.getState() == AuthExchange.State.FAILURE) {
|
||||
clearCache(host, pathPrefix, HttpClientContext.adapt(context));
|
||||
clearCache(host, pathPrefix, HttpClientContext.cast(context));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -88,9 +88,9 @@ public final class AuthCacheKeeper {
|
|||
final AuthExchange authExchange,
|
||||
final HttpContext context) {
|
||||
if (authExchange.getState() == AuthExchange.State.UNCHALLENGED) {
|
||||
AuthScheme authScheme = loadFromCache(host, pathPrefix, HttpClientContext.adapt(context));
|
||||
AuthScheme authScheme = loadFromCache(host, pathPrefix, HttpClientContext.cast(context));
|
||||
if (authScheme == null && pathPrefix != null) {
|
||||
authScheme = loadFromCache(host, null, HttpClientContext.adapt(context));
|
||||
authScheme = loadFromCache(host, null, HttpClientContext.cast(context));
|
||||
}
|
||||
if (authScheme != null) {
|
||||
authExchange.select(authScheme);
|
||||
|
|
|
@ -162,7 +162,7 @@ public class BasicScheme implements AuthScheme, StateHolder<BasicScheme.State>,
|
|||
}
|
||||
|
||||
if (LOG.isDebugEnabled()) {
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope);
|
||||
}
|
||||
|
|
|
@ -141,7 +141,7 @@ public class BearerScheme implements AuthScheme, StateHolder<BearerScheme.State>
|
|||
}
|
||||
|
||||
if (LOG.isDebugEnabled()) {
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope);
|
||||
}
|
||||
|
|
|
@ -227,7 +227,7 @@ public class DigestScheme implements AuthScheme, Serializable {
|
|||
}
|
||||
|
||||
if (LOG.isDebugEnabled()) {
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope);
|
||||
}
|
||||
|
|
|
@ -118,7 +118,7 @@ public abstract class GGSSchemeBase implements AuthScheme {
|
|||
state = State.CHALLENGE_RECEIVED;
|
||||
} else {
|
||||
if (LOG.isDebugEnabled()) {
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
LOG.debug("{} Authentication already attempted", exchangeId);
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ public abstract class GGSSchemeBase implements AuthScheme {
|
|||
}
|
||||
|
||||
if (LOG.isDebugEnabled()) {
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
LOG.debug("{} init {}", exchangeId, authServer);
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ public abstract class GGSSchemeBase implements AuthScheme {
|
|||
final Base64 codec = new Base64(0);
|
||||
final String tokenstr = new String(codec.encode(token));
|
||||
if (LOG.isDebugEnabled()) {
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
LOG.debug("{} Sending response '{}' back to the auth server", exchangeId, tokenstr);
|
||||
}
|
||||
|
|
|
@ -109,7 +109,7 @@ public final class HttpAuthenticator {
|
|||
throw new IllegalStateException("Unexpected challenge type: " + challengeType);
|
||||
}
|
||||
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
|
||||
if (response.getCode() == challengeCode) {
|
||||
|
@ -155,7 +155,7 @@ public final class HttpAuthenticator {
|
|||
final AuthExchange authExchange,
|
||||
final HttpContext context) {
|
||||
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
|
||||
if (LOG.isDebugEnabled()) {
|
||||
|
@ -304,7 +304,7 @@ public final class HttpAuthenticator {
|
|||
final HttpRequest request,
|
||||
final AuthExchange authExchange,
|
||||
final HttpContext context) {
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
AuthScheme authScheme = authExchange.getAuthScheme();
|
||||
switch (authExchange.getState()) {
|
||||
|
|
|
@ -146,7 +146,7 @@ public final class NTLMScheme implements AuthScheme {
|
|||
}
|
||||
|
||||
if (LOG.isDebugEnabled()) {
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope);
|
||||
}
|
||||
|
|
|
@ -105,7 +105,7 @@ public class SystemDefaultCredentialsProvider implements CredentialsStore {
|
|||
}
|
||||
final String host = authScope.getHost();
|
||||
if (host != null) {
|
||||
final HttpClientContext clientContext = context != null ? HttpClientContext.adapt(context) : null;
|
||||
final HttpClientContext clientContext = context != null ? HttpClientContext.cast(context) : null;
|
||||
final String protocol = authScope.getProtocol() != null ? authScope.getProtocol() : (authScope.getPort() == 443 ? URIScheme.HTTPS.id : URIScheme.HTTP.id);
|
||||
PasswordAuthentication systemcreds = getSystemCreds(
|
||||
protocol, authScope, Authenticator.RequestorType.SERVER, clientContext);
|
||||
|
|
|
@ -214,7 +214,7 @@ public final class ConnectExec implements ExecChainHandler {
|
|||
final ExecRuntime execRuntime,
|
||||
final HttpClientContext context) throws HttpException, IOException {
|
||||
|
||||
final RequestConfig config = context.getRequestConfig();
|
||||
final RequestConfig config = context.getRequestConfigOrDefault();
|
||||
|
||||
final HttpHost target = route.getTargetHost();
|
||||
final HttpHost proxy = route.getProxyHost();
|
||||
|
|
|
@ -137,7 +137,7 @@ public final class ContentCompressionExec implements ExecChainHandler {
|
|||
Args.notNull(scope, "Scope");
|
||||
|
||||
final HttpClientContext clientContext = scope.clientContext;
|
||||
final RequestConfig requestConfig = clientContext.getRequestConfig();
|
||||
final RequestConfig requestConfig = clientContext.getRequestConfigOrDefault();
|
||||
|
||||
/* Signal support for Accept-Encoding transfer encodings. */
|
||||
if (!request.containsHeader(HttpHeaders.ACCEPT_ENCODING) && requestConfig.isContentCompressionEnabled()) {
|
||||
|
|
|
@ -167,7 +167,7 @@ public class HttpRequestRetryExec implements ExecChainHandler {
|
|||
final TimeValue nextInterval = retryStrategy.getRetryInterval(response, execCount, context);
|
||||
// Make sure the retry interval does not exceed the response timeout
|
||||
if (TimeValue.isPositive(nextInterval)) {
|
||||
final RequestConfig requestConfig = context.getRequestConfig();
|
||||
final RequestConfig requestConfig = context.getRequestConfigOrDefault();
|
||||
final Timeout responseTimeout = requestConfig.getResponseTimeout();
|
||||
if (responseTimeout != null && nextInterval.compareTo(responseTimeout) > 0) {
|
||||
return response;
|
||||
|
|
|
@ -97,7 +97,7 @@ class InternalExecRuntime implements ExecRuntime, Cancellable {
|
|||
final String id, final HttpRoute route, final Object object, final HttpClientContext context) throws IOException {
|
||||
Args.notNull(route, "Route");
|
||||
if (endpointRef.get() == null) {
|
||||
final RequestConfig requestConfig = context.getRequestConfig();
|
||||
final RequestConfig requestConfig = context.getRequestConfigOrDefault();
|
||||
final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout();
|
||||
if (log.isDebugEnabled()) {
|
||||
log.debug("{} acquiring endpoint ({})", id, connectionRequestTimeout);
|
||||
|
@ -155,7 +155,7 @@ class InternalExecRuntime implements ExecRuntime, Cancellable {
|
|||
if (isExecutionAborted()) {
|
||||
throw new RequestFailedException("Request aborted");
|
||||
}
|
||||
final RequestConfig requestConfig = context.getRequestConfig();
|
||||
final RequestConfig requestConfig = context.getRequestConfigOrDefault();
|
||||
@SuppressWarnings("deprecation")
|
||||
final Timeout connectTimeout = requestConfig.getConnectTimeout();
|
||||
if (log.isDebugEnabled()) {
|
||||
|
@ -222,7 +222,7 @@ class InternalExecRuntime implements ExecRuntime, Cancellable {
|
|||
if (isExecutionAborted()) {
|
||||
throw new RequestFailedException("Request aborted");
|
||||
}
|
||||
final RequestConfig requestConfig = context.getRequestConfig();
|
||||
final RequestConfig requestConfig = context.getRequestConfigOrDefault();
|
||||
final Timeout responseTimeout = requestConfig.getResponseTimeout();
|
||||
if (responseTimeout != null) {
|
||||
endpoint.setSocketTimeout(responseTimeout);
|
||||
|
|
|
@ -121,20 +121,20 @@ class InternalHttpClient extends CloseableHttpClient implements Configurable {
|
|||
}
|
||||
|
||||
private void setupContext(final HttpClientContext context) {
|
||||
if (context.getAttribute(HttpClientContext.AUTHSCHEME_REGISTRY) == null) {
|
||||
context.setAttribute(HttpClientContext.AUTHSCHEME_REGISTRY, this.authSchemeRegistry);
|
||||
if (context.getAuthSchemeRegistry() == null) {
|
||||
context.setAuthSchemeRegistry(this.authSchemeRegistry);
|
||||
}
|
||||
if (context.getAttribute(HttpClientContext.COOKIESPEC_REGISTRY) == null) {
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
if (context.getCookieSpecRegistry() == null) {
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
}
|
||||
if (context.getAttribute(HttpClientContext.COOKIE_STORE) == null) {
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
if (context.getCookieStore() == null) {
|
||||
context.setCookieStore(this.cookieStore);
|
||||
}
|
||||
if (context.getAttribute(HttpClientContext.CREDS_PROVIDER) == null) {
|
||||
context.setAttribute(HttpClientContext.CREDS_PROVIDER, this.credentialsProvider);
|
||||
if (context.getCredentialsProvider() == null) {
|
||||
context.setCredentialsProvider(this.credentialsProvider);
|
||||
}
|
||||
if (context.getAttribute(HttpClientContext.REQUEST_CONFIG) == null) {
|
||||
context.setAttribute(HttpClientContext.REQUEST_CONFIG, this.defaultConfig);
|
||||
if (context.getRequestConfig() == null) {
|
||||
context.setRequestConfig(this.defaultConfig);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -145,8 +145,7 @@ class InternalHttpClient extends CloseableHttpClient implements Configurable {
|
|||
final HttpContext context) throws IOException {
|
||||
Args.notNull(request, "HTTP request");
|
||||
try {
|
||||
final HttpClientContext localcontext = HttpClientContext.adapt(
|
||||
context != null ? context : new HttpClientContext());
|
||||
final HttpClientContext localcontext = HttpClientContext.adapt(context);
|
||||
RequestConfig config = null;
|
||||
if (request instanceof Configurable) {
|
||||
config = ((Configurable) request).getConfig();
|
||||
|
|
|
@ -113,7 +113,7 @@ public final class MainClientExec implements ExecChainHandler {
|
|||
}
|
||||
try {
|
||||
// Run request protocol interceptors
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setRoute(route);
|
||||
context.setRequest(request);
|
||||
|
||||
httpProcessor.process(request, request.getEntity(), context);
|
||||
|
@ -146,7 +146,7 @@ public final class MainClientExec implements ExecChainHandler {
|
|||
Object userToken = context.getUserToken();
|
||||
if (userToken == null) {
|
||||
userToken = userTokenHandler.getUserToken(route, request, context);
|
||||
context.setAttribute(HttpClientContext.USER_TOKEN, userToken);
|
||||
context.setUserToken(userToken);
|
||||
}
|
||||
|
||||
// The connection is in or can be brought to a re-usable state.
|
||||
|
|
|
@ -118,8 +118,7 @@ public class MinimalHttpClient extends CloseableHttpClient {
|
|||
if (request.getAuthority() == null) {
|
||||
request.setAuthority(new URIAuthority(target));
|
||||
}
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(
|
||||
context != null ? context : new HttpClientContext());
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
RequestConfig config = null;
|
||||
if (request instanceof Configurable) {
|
||||
config = ((Configurable) request).getConfig();
|
||||
|
@ -142,7 +141,7 @@ public class MinimalHttpClient extends CloseableHttpClient {
|
|||
}
|
||||
|
||||
clientContext.setRequest(request);
|
||||
clientContext.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
clientContext.setRoute(route);
|
||||
|
||||
httpProcessor.process(request, request.getEntity(), clientContext);
|
||||
final ClassicHttpResponse response = execRuntime.execute(exchangeId, request, clientContext);
|
||||
|
|
|
@ -266,7 +266,7 @@ public final class ProtocolExec implements ExecChainHandler {
|
|||
final String pathPrefix,
|
||||
final HttpResponse response,
|
||||
final HttpClientContext context) {
|
||||
final RequestConfig config = context.getRequestConfig();
|
||||
final RequestConfig config = context.getRequestConfigOrDefault();
|
||||
if (config.isAuthenticationEnabled()) {
|
||||
final boolean targetAuthRequested = authenticator.isChallenged(
|
||||
target, ChallengeType.TARGET, response, targetAuthExchange, context);
|
||||
|
|
|
@ -145,7 +145,7 @@ public class ProxyClient {
|
|||
proxy, false, TunnelType.TUNNELLED, LayerType.PLAIN);
|
||||
|
||||
final ManagedHttpClientConnection conn = this.connFactory.createConnection(null);
|
||||
final HttpClientContext context = new HttpClientContext();
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
ClassicHttpResponse response;
|
||||
|
||||
final ClassicHttpRequest connect = new BasicClassicHttpRequest(Method.CONNECT, proxy, target.toHostString());
|
||||
|
@ -155,10 +155,10 @@ public class ProxyClient {
|
|||
|
||||
// Populate the execution context
|
||||
context.setRequest(connect);
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.CREDS_PROVIDER, credsProvider);
|
||||
context.setAttribute(HttpClientContext.AUTHSCHEME_REGISTRY, this.authSchemeRegistry);
|
||||
context.setAttribute(HttpClientContext.REQUEST_CONFIG, this.requestConfig);
|
||||
context.setRoute(route);
|
||||
context.setCredentialsProvider(credsProvider);
|
||||
context.setAuthSchemeRegistry(this.authSchemeRegistry);
|
||||
context.setRequestConfig(this.requestConfig);
|
||||
|
||||
this.requestExec.preProcess(connect, this.httpProcessor, context);
|
||||
|
||||
|
|
|
@ -99,14 +99,9 @@ public final class RedirectExec implements ExecChainHandler {
|
|||
Args.notNull(scope, "Scope");
|
||||
|
||||
final HttpClientContext context = scope.clientContext;
|
||||
RedirectLocations redirectLocations = context.getRedirectLocations();
|
||||
if (redirectLocations == null) {
|
||||
redirectLocations = new RedirectLocations();
|
||||
context.setAttribute(HttpClientContext.REDIRECT_LOCATIONS, redirectLocations);
|
||||
}
|
||||
redirectLocations.clear();
|
||||
context.setRedirectLocations(null);
|
||||
|
||||
final RequestConfig config = context.getRequestConfig();
|
||||
final RequestConfig config = context.getRequestConfigOrDefault();
|
||||
final int maxRedirects = config.getMaxRedirects() > 0 ? config.getMaxRedirects() : 50;
|
||||
ClassicHttpRequest originalRequest = scope.originalRequest;
|
||||
ClassicHttpRequest currentRequest = request;
|
||||
|
@ -139,6 +134,7 @@ public final class RedirectExec implements ExecChainHandler {
|
|||
redirectUri);
|
||||
}
|
||||
|
||||
final RedirectLocations redirectLocations = context.getRedirectLocations();
|
||||
if (!config.isCircularRedirectsAllowed()) {
|
||||
if (redirectLocations.contains(redirectUri)) {
|
||||
throw new CircularRedirectException("Circular redirect to '" + redirectUri + "'");
|
||||
|
|
|
@ -76,8 +76,8 @@ public class DefaultRoutePlanner implements HttpRoutePlanner {
|
|||
if (host == null) {
|
||||
throw new ProtocolException("Target host is not specified");
|
||||
}
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final RequestConfig config = clientContext.getRequestConfig();
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final RequestConfig config = clientContext.getRequestConfigOrDefault();
|
||||
@SuppressWarnings("deprecation")
|
||||
HttpHost proxy = config.getProxy();
|
||||
if (proxy == null) {
|
||||
|
|
|
@ -30,6 +30,8 @@ package org.apache.hc.client5.http.protocol;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.net.ssl.SSLSession;
|
||||
|
||||
import org.apache.hc.client5.http.HttpRoute;
|
||||
import org.apache.hc.client5.http.RouteInfo;
|
||||
import org.apache.hc.client5.http.auth.AuthCache;
|
||||
|
@ -42,11 +44,15 @@ import org.apache.hc.client5.http.cookie.CookieOrigin;
|
|||
import org.apache.hc.client5.http.cookie.CookieSpec;
|
||||
import org.apache.hc.client5.http.cookie.CookieSpecFactory;
|
||||
import org.apache.hc.client5.http.cookie.CookieStore;
|
||||
import org.apache.hc.core5.annotation.Internal;
|
||||
import org.apache.hc.core5.http.EndpointDetails;
|
||||
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.ProtocolVersion;
|
||||
import org.apache.hc.core5.http.config.Lookup;
|
||||
import org.apache.hc.core5.http.protocol.HttpContext;
|
||||
import org.apache.hc.core5.http.protocol.HttpCoreContext;
|
||||
import org.apache.hc.core5.util.Args;
|
||||
|
||||
/**
|
||||
* Adaptor class that provides convenience type safe setters and getters
|
||||
|
@ -58,96 +64,129 @@ import org.apache.hc.core5.util.Args;
|
|||
public class HttpClientContext extends HttpCoreContext {
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link RouteInfo}
|
||||
* object that represents the actual connection route.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String HTTP_ROUTE = "http.route";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link RedirectLocations} object that represents a collection of all
|
||||
* redirect locations received in the process of request execution.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String REDIRECT_LOCATIONS = "http.protocol.redirect-locations";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link org.apache.hc.core5.http.config.Lookup} object that represents
|
||||
* the actual {@link CookieSpecFactory} registry.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String COOKIESPEC_REGISTRY = "http.cookiespec-registry";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link org.apache.hc.client5.http.cookie.CookieSpec}
|
||||
* object that represents the actual cookie specification.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String COOKIE_SPEC = "http.cookie-spec";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link org.apache.hc.client5.http.cookie.CookieOrigin}
|
||||
* object that represents the actual details of the origin server.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String COOKIE_ORIGIN = "http.cookie-origin";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link CookieStore}
|
||||
* object that represents the actual cookie store.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String COOKIE_STORE = "http.cookie-store";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link CredentialsProvider}
|
||||
* object that represents the actual credentials provider.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String CREDS_PROVIDER = "http.auth.credentials-provider";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link AuthCache} object
|
||||
* that represents the auth scheme cache.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String AUTH_CACHE = "http.auth.auth-cache";
|
||||
|
||||
/**
|
||||
* Attribute name of a map containing actual {@link AuthExchange}s keyed by their respective
|
||||
* {@link org.apache.hc.core5.http.HttpHost}.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String AUTH_EXCHANGE_MAP = "http.auth.exchanges";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link java.lang.Object} object that represents
|
||||
* the actual user identity such as user {@link java.security.Principal}.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String USER_TOKEN = "http.user-token";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link org.apache.hc.core5.http.config.Lookup} object that represents
|
||||
* the actual {@link AuthSchemeFactory} registry.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String AUTHSCHEME_REGISTRY = "http.authscheme-registry";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link org.apache.hc.client5.http.config.RequestConfig} object that
|
||||
* represents the actual request configuration.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String REQUEST_CONFIG = "http.request-config";
|
||||
|
||||
/**
|
||||
* Attribute name of a {@link java.lang.String} object that represents the ID of the
|
||||
* current message exchange.
|
||||
* @deprecated Use getter methods
|
||||
*/
|
||||
@Deprecated
|
||||
public static final String EXCHANGE_ID = "http.exchange-id";
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static HttpClientContext adapt(final HttpContext context) {
|
||||
Args.notNull(context, "HTTP context");
|
||||
if (context instanceof HttpClientContext) {
|
||||
return (HttpClientContext) context;
|
||||
}
|
||||
return new HttpClientContext(context);
|
||||
return new HttpClientContext.Delegate(HttpCoreContext.adapt(context));
|
||||
}
|
||||
|
||||
/**
|
||||
* Casts the given generic {@link HttpContext} as {@link HttpClientContext}
|
||||
* or creates a new {@link HttpClientContext} with the given {@link HttpContext}
|
||||
* as a parent.
|
||||
*
|
||||
* @since 5.4
|
||||
*/
|
||||
public static HttpClientContext cast(final HttpContext context) {
|
||||
if (context == null) {
|
||||
return null;
|
||||
}
|
||||
if (context instanceof HttpClientContext) {
|
||||
return (HttpClientContext) context;
|
||||
} else {
|
||||
throw new IllegalStateException("Unexpected context type: " + context.getClass().getSimpleName() +
|
||||
"; required context type: " + HttpClientContext.class.getSimpleName());
|
||||
}
|
||||
}
|
||||
|
||||
public static HttpClientContext create() {
|
||||
return new HttpClientContext();
|
||||
}
|
||||
|
||||
private HttpRoute route;
|
||||
private RedirectLocations redirectLocations;
|
||||
private CookieSpec cookieSpec;
|
||||
private CookieOrigin cookieOrigin;
|
||||
private Map<HttpHost, AuthExchange> authExchangeMap;
|
||||
private String exchangeId;
|
||||
|
||||
private Lookup<CookieSpecFactory> cookieSpecFactoryLookup;
|
||||
private Lookup<AuthSchemeFactory> authSchemeFactoryLookup;
|
||||
private CookieStore cookieStore;
|
||||
private CredentialsProvider credentialsProvider;
|
||||
private AuthCache authCache;
|
||||
private Object userToken;
|
||||
private RequestConfig requestConfig;
|
||||
|
||||
public HttpClientContext(final HttpContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
@ -156,99 +195,131 @@ public class HttpClientContext extends HttpCoreContext {
|
|||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents current route used to execute message exchanges.
|
||||
* <p>
|
||||
* This context attribute is expected to be populated by the protocol handler
|
||||
* in the course of request execution.
|
||||
*/
|
||||
public RouteInfo getHttpRoute() {
|
||||
return getAttribute(HTTP_ROUTE, HttpRoute.class);
|
||||
return route;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 5.4
|
||||
*/
|
||||
@Internal
|
||||
public void setRoute(final HttpRoute route) {
|
||||
this.route = route;
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a collection of all redirects executed in the course of request execution.
|
||||
* <p>
|
||||
* This context attribute is expected to be populated by the protocol handler
|
||||
* in the course of request execution.
|
||||
*/
|
||||
public RedirectLocations getRedirectLocations() {
|
||||
return getAttribute(REDIRECT_LOCATIONS, RedirectLocations.class);
|
||||
if (this.redirectLocations == null) {
|
||||
this.redirectLocations = new RedirectLocations();
|
||||
}
|
||||
return this.redirectLocations;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 5.4
|
||||
*/
|
||||
@Internal
|
||||
public void setRedirectLocations(final RedirectLocations redirectLocations) {
|
||||
this.redirectLocations = redirectLocations;
|
||||
}
|
||||
|
||||
public CookieStore getCookieStore() {
|
||||
return getAttribute(COOKIE_STORE, CookieStore.class);
|
||||
return cookieStore;
|
||||
}
|
||||
|
||||
public void setCookieStore(final CookieStore cookieStore) {
|
||||
setAttribute(COOKIE_STORE, cookieStore);
|
||||
this.cookieStore = cookieStore;
|
||||
}
|
||||
|
||||
public CookieSpec getCookieSpec() {
|
||||
return getAttribute(COOKIE_SPEC, CookieSpec.class);
|
||||
return cookieSpec;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 5.4
|
||||
*/
|
||||
@Internal
|
||||
public void setCookieSpec(final CookieSpec cookieSpec) {
|
||||
this.cookieSpec = cookieSpec;
|
||||
}
|
||||
|
||||
public CookieOrigin getCookieOrigin() {
|
||||
return getAttribute(COOKIE_ORIGIN, CookieOrigin.class);
|
||||
return cookieOrigin;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private <T> Lookup<T> getLookup(final String name) {
|
||||
return (Lookup<T>) getAttribute(name, Lookup.class);
|
||||
/**
|
||||
* @since 5.4
|
||||
*/
|
||||
@Internal
|
||||
public void setCookieOrigin(final CookieOrigin cookieOrigin) {
|
||||
this.cookieOrigin = cookieOrigin;
|
||||
}
|
||||
|
||||
public Lookup<CookieSpecFactory> getCookieSpecRegistry() {
|
||||
return getLookup(COOKIESPEC_REGISTRY);
|
||||
return cookieSpecFactoryLookup;
|
||||
}
|
||||
|
||||
public void setCookieSpecRegistry(final Lookup<CookieSpecFactory> lookup) {
|
||||
setAttribute(COOKIESPEC_REGISTRY, lookup);
|
||||
this.cookieSpecFactoryLookup = lookup;
|
||||
}
|
||||
|
||||
public Lookup<AuthSchemeFactory> getAuthSchemeRegistry() {
|
||||
return getLookup(AUTHSCHEME_REGISTRY);
|
||||
return authSchemeFactoryLookup;
|
||||
}
|
||||
|
||||
public void setAuthSchemeRegistry(final Lookup<AuthSchemeFactory> lookup) {
|
||||
setAttribute(AUTHSCHEME_REGISTRY, lookup);
|
||||
this.authSchemeFactoryLookup = lookup;
|
||||
}
|
||||
|
||||
public CredentialsProvider getCredentialsProvider() {
|
||||
return getAttribute(CREDS_PROVIDER, CredentialsProvider.class);
|
||||
return credentialsProvider;
|
||||
}
|
||||
|
||||
public void setCredentialsProvider(final CredentialsProvider credentialsProvider) {
|
||||
setAttribute(CREDS_PROVIDER, credentialsProvider);
|
||||
this.credentialsProvider = credentialsProvider;
|
||||
}
|
||||
|
||||
public AuthCache getAuthCache() {
|
||||
return getAttribute(AUTH_CACHE, AuthCache.class);
|
||||
return authCache;
|
||||
}
|
||||
|
||||
public void setAuthCache(final AuthCache authCache) {
|
||||
setAttribute(AUTH_CACHE, authCache);
|
||||
this.authCache = authCache;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 5.0
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public Map<HttpHost, AuthExchange> getAuthExchanges() {
|
||||
Map<HttpHost, AuthExchange> map = (Map<HttpHost, AuthExchange>) getAttribute(AUTH_EXCHANGE_MAP);
|
||||
if (map == null) {
|
||||
map = new HashMap<>();
|
||||
setAttribute(AUTH_EXCHANGE_MAP, map);
|
||||
if (authExchangeMap == null) {
|
||||
authExchangeMap = new HashMap<>();
|
||||
}
|
||||
return map;
|
||||
return authExchangeMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 5.0
|
||||
*/
|
||||
public AuthExchange getAuthExchange(final HttpHost host) {
|
||||
final Map<HttpHost, AuthExchange> authExchangeMap = getAuthExchanges();
|
||||
AuthExchange authExchange = authExchangeMap.get(host);
|
||||
if (authExchange == null) {
|
||||
authExchange = new AuthExchange();
|
||||
authExchangeMap.put(host, authExchange);
|
||||
}
|
||||
return authExchange;
|
||||
return getAuthExchanges().computeIfAbsent(host, k -> new AuthExchange());
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 5.0
|
||||
*/
|
||||
public void setAuthExchange(final HttpHost host, final AuthExchange authExchange) {
|
||||
final Map<HttpHost, AuthExchange> authExchangeMap = getAuthExchanges();
|
||||
authExchangeMap.put(host, authExchange);
|
||||
getAuthExchanges().put(host, authExchange);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -257,43 +328,143 @@ public class HttpClientContext extends HttpCoreContext {
|
|||
public void resetAuthExchange(final HttpHost host, final AuthScheme authScheme) {
|
||||
final AuthExchange authExchange = new AuthExchange();
|
||||
authExchange.select(authScheme);
|
||||
final Map<HttpHost, AuthExchange> authExchangeMap = getAuthExchanges();
|
||||
authExchangeMap.put(host, authExchange);
|
||||
getAuthExchanges().put(host, authExchange);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #getUserToken()}
|
||||
*/
|
||||
@Deprecated
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T getUserToken(final Class<T> clazz) {
|
||||
return getAttribute(USER_TOKEN, clazz);
|
||||
return (T) getUserToken();
|
||||
}
|
||||
|
||||
public Object getUserToken() {
|
||||
return getAttribute(USER_TOKEN);
|
||||
return userToken;
|
||||
}
|
||||
|
||||
public void setUserToken(final Object obj) {
|
||||
setAttribute(USER_TOKEN, obj);
|
||||
public void setUserToken(final Object userToken) {
|
||||
this.userToken = userToken;
|
||||
}
|
||||
|
||||
public RequestConfig getRequestConfig() {
|
||||
final RequestConfig config = getAttribute(REQUEST_CONFIG, RequestConfig.class);
|
||||
return config != null ? config : RequestConfig.DEFAULT;
|
||||
return requestConfig;
|
||||
}
|
||||
|
||||
public void setRequestConfig(final RequestConfig config) {
|
||||
setAttribute(REQUEST_CONFIG, config);
|
||||
/**
|
||||
* Returns {@link RequestConfig} set in the context or {@link RequestConfig#DEFAULT}
|
||||
* if not present in the context.
|
||||
*
|
||||
* @since 5.4
|
||||
*/
|
||||
public final RequestConfig getRequestConfigOrDefault() {
|
||||
final RequestConfig requestConfig = getRequestConfig();
|
||||
return requestConfig != null ? requestConfig : RequestConfig.DEFAULT;
|
||||
}
|
||||
|
||||
public void setRequestConfig(final RequestConfig requestConfig) {
|
||||
this.requestConfig = requestConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 5.1
|
||||
*/
|
||||
public String getExchangeId() {
|
||||
return getAttribute(EXCHANGE_ID, String.class);
|
||||
return exchangeId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 5.1
|
||||
*/
|
||||
public void setExchangeId(final String id) {
|
||||
setAttribute(EXCHANGE_ID, id);
|
||||
public void setExchangeId(final String exchangeId) {
|
||||
this.exchangeId = exchangeId;
|
||||
}
|
||||
|
||||
static class Delegate extends HttpClientContext {
|
||||
|
||||
final private HttpCoreContext parent;
|
||||
|
||||
Delegate(final HttpCoreContext parent) {
|
||||
super(parent);
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProtocolVersion getProtocolVersion() {
|
||||
return parent.getProtocolVersion();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setProtocolVersion(final ProtocolVersion version) {
|
||||
parent.setProtocolVersion(version);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getAttribute(final String id) {
|
||||
return parent.getAttribute(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object setAttribute(final String id, final Object obj) {
|
||||
return parent.setAttribute(id, obj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object removeAttribute(final String id) {
|
||||
return parent.removeAttribute(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T getAttribute(final String id, final Class<T> clazz) {
|
||||
return parent.getAttribute(id, clazz);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpRequest getRequest() {
|
||||
return parent.getRequest();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRequest(final HttpRequest request) {
|
||||
parent.setRequest(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpResponse getResponse() {
|
||||
return parent.getResponse();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setResponse(final HttpResponse response) {
|
||||
parent.setResponse(response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EndpointDetails getEndpointDetails() {
|
||||
return parent.getEndpointDetails();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEndpointDetails(final EndpointDetails endpointDetails) {
|
||||
parent.setEndpointDetails(endpointDetails);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SSLSession getSSLSession() {
|
||||
return parent.getSSLSession();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSSLSession(final SSLSession sslSession) {
|
||||
parent.setSSLSession(sslSession);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return parent.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -33,13 +33,13 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
import org.apache.hc.client5.http.RouteInfo;
|
||||
import org.apache.hc.client5.http.cookie.StandardCookieSpec;
|
||||
import org.apache.hc.client5.http.config.RequestConfig;
|
||||
import org.apache.hc.client5.http.cookie.Cookie;
|
||||
import org.apache.hc.client5.http.cookie.CookieOrigin;
|
||||
import org.apache.hc.client5.http.cookie.CookieSpec;
|
||||
import org.apache.hc.client5.http.cookie.CookieSpecFactory;
|
||||
import org.apache.hc.client5.http.cookie.CookieStore;
|
||||
import org.apache.hc.client5.http.cookie.StandardCookieSpec;
|
||||
import org.apache.hc.core5.annotation.Contract;
|
||||
import org.apache.hc.core5.annotation.ThreadingBehavior;
|
||||
import org.apache.hc.core5.http.EntityDetails;
|
||||
|
@ -90,7 +90,7 @@ public class RequestAddCookies implements HttpRequestInterceptor {
|
|||
return;
|
||||
}
|
||||
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
|
||||
// Obtain cookie store
|
||||
|
@ -120,7 +120,7 @@ public class RequestAddCookies implements HttpRequestInterceptor {
|
|||
return;
|
||||
}
|
||||
|
||||
final RequestConfig config = clientContext.getRequestConfig();
|
||||
final RequestConfig config = clientContext.getRequestConfigOrDefault();
|
||||
String cookieSpecName = config.getCookieSpec();
|
||||
if (cookieSpecName == null) {
|
||||
cookieSpecName = StandardCookieSpec.STRICT;
|
||||
|
@ -190,8 +190,8 @@ public class RequestAddCookies implements HttpRequestInterceptor {
|
|||
|
||||
// Stick the CookieSpec and CookieOrigin instances to the HTTP context
|
||||
// so they could be obtained by the response interceptor
|
||||
context.setAttribute(HttpClientContext.COOKIE_SPEC, cookieSpec);
|
||||
context.setAttribute(HttpClientContext.COOKIE_ORIGIN, cookieOrigin);
|
||||
clientContext.setCookieSpec(cookieSpec);
|
||||
clientContext.setCookieOrigin(cookieOrigin);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ public class RequestAuthCache implements HttpRequestInterceptor {
|
|||
Args.notNull(request, "HTTP request");
|
||||
Args.notNull(context, "HTTP context");
|
||||
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
|
||||
final AuthCache authCache = clientContext.getAuthCache();
|
||||
|
|
|
@ -70,7 +70,7 @@ public class RequestClientConnControl implements HttpRequestInterceptor {
|
|||
return;
|
||||
}
|
||||
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
|
||||
// Obtain the client connection (required)
|
||||
|
|
|
@ -66,12 +66,12 @@ public class RequestExpectContinue implements HttpRequestInterceptor {
|
|||
Args.notNull(request, "HTTP request");
|
||||
|
||||
if (!request.containsHeader(HttpHeaders.EXPECT)) {
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final ProtocolVersion version = request.getVersion() != null ? request.getVersion() : clientContext.getProtocolVersion();
|
||||
// Do not send the expect header if request body is known to be empty
|
||||
if (entity != null
|
||||
&& entity.getContentLength() != 0 && !version.lessEquals(HttpVersion.HTTP_1_0)) {
|
||||
final RequestConfig config = clientContext.getRequestConfig();
|
||||
final RequestConfig config = clientContext.getRequestConfigOrDefault();
|
||||
if (config.isExpectContinueEnabled()) {
|
||||
request.addHeader(HttpHeaders.EXPECT, HeaderElements.CONTINUE);
|
||||
}
|
||||
|
|
|
@ -63,8 +63,8 @@ public final class RequestUpgrade implements HttpRequestInterceptor {
|
|||
Args.notNull(request, "HTTP request");
|
||||
Args.notNull(context, "HTTP context");
|
||||
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final RequestConfig requestConfig = clientContext.getRequestConfig();
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final RequestConfig requestConfig = clientContext.getRequestConfigOrDefault();
|
||||
if (requestConfig.isProtocolUpgradeEnabled()) {
|
||||
final ProtocolVersion version = request.getVersion() != null ? request.getVersion() : clientContext.getProtocolVersion();
|
||||
if (!request.containsHeader(HttpHeaders.UPGRADE) && version.getMajor() == 1 && version.getMinor() >= 1) {
|
||||
|
|
|
@ -77,7 +77,7 @@ public class ResponseProcessCookies implements HttpResponseInterceptor {
|
|||
Args.notNull(response, "HTTP request");
|
||||
Args.notNull(context, "HTTP context");
|
||||
|
||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||
final HttpClientContext clientContext = HttpClientContext.cast(context);
|
||||
final String exchangeId = clientContext.getExchangeId();
|
||||
|
||||
// Obtain actual CookieSpec instance
|
||||
|
|
|
@ -74,7 +74,7 @@ public class TestHttpAuthenticator {
|
|||
|
||||
private AuthExchange authExchange;
|
||||
private CacheableAuthState authScheme;
|
||||
private HttpContext context;
|
||||
private HttpClientContext context;
|
||||
private HttpHost defaultHost;
|
||||
private CredentialsProvider credentialsProvider;
|
||||
private Lookup<AuthSchemeFactory> authSchemeRegistry;
|
||||
|
@ -89,12 +89,12 @@ public class TestHttpAuthenticator {
|
|||
this.context = new HttpClientContext();
|
||||
this.defaultHost = new HttpHost("localhost", 80);
|
||||
this.credentialsProvider = Mockito.mock(CredentialsProvider.class);
|
||||
this.context.setAttribute(HttpClientContext.CREDS_PROVIDER, this.credentialsProvider);
|
||||
this.context.setCredentialsProvider(this.credentialsProvider);
|
||||
this.authSchemeRegistry = RegistryBuilder.<AuthSchemeFactory>create()
|
||||
.register(StandardAuthScheme.BASIC, BasicSchemeFactory.INSTANCE)
|
||||
.register(StandardAuthScheme.DIGEST, DigestSchemeFactory.INSTANCE)
|
||||
.build();
|
||||
this.context.setAttribute(HttpClientContext.AUTHSCHEME_REGISTRY, this.authSchemeRegistry);
|
||||
this.context.setAuthSchemeRegistry(this.authSchemeRegistry);
|
||||
this.httpAuthenticator = new HttpAuthenticator();
|
||||
}
|
||||
|
||||
|
|
|
@ -225,7 +225,7 @@ public class TestContentCompressionExec {
|
|||
.setContentCompressionEnabled(false)
|
||||
.build();
|
||||
|
||||
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
|
||||
context.setRequestConfig(config);
|
||||
|
||||
Mockito.when(execChain.proceed(request, scope)).thenReturn(response);
|
||||
|
||||
|
|
|
@ -155,7 +155,7 @@ public class TestInternalHttpClient {
|
|||
Assertions.assertSame(authSchemeRegistry, context.getAuthSchemeRegistry());
|
||||
Assertions.assertSame(cookieStore, context.getCookieStore());
|
||||
Assertions.assertSame(credentialsProvider, context.getCredentialsProvider());
|
||||
Assertions.assertSame(defaultConfig, context.getRequestConfig());
|
||||
Assertions.assertSame(defaultConfig, context.getRequestConfigOrDefault());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -176,7 +176,7 @@ public class TestInternalHttpClient {
|
|||
final HttpClientContext context = HttpClientContext.create();
|
||||
client.execute(httpget, context, response -> null);
|
||||
|
||||
Assertions.assertSame(config, context.getRequestConfig());
|
||||
Assertions.assertSame(config, context.getRequestConfigOrDefault());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -212,7 +212,7 @@ public class TestInternalHttpClient {
|
|||
Assertions.assertSame(localAuthSchemeRegistry, context.getAuthSchemeRegistry());
|
||||
Assertions.assertSame(localCookieStore, context.getCookieStore());
|
||||
Assertions.assertSame(localCredentialsProvider, context.getCredentialsProvider());
|
||||
Assertions.assertSame(localConfig, context.getRequestConfig());
|
||||
Assertions.assertSame(localConfig, context.getRequestConfigOrDefault());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -106,9 +106,9 @@ public class TestRequestAddCookies {
|
|||
final HttpRoute route = new HttpRoute(this.target, null, false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -133,9 +133,9 @@ public class TestRequestAddCookies {
|
|||
final HttpRoute route = new HttpRoute(this.target, null, false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -152,9 +152,9 @@ public class TestRequestAddCookies {
|
|||
final HttpRoute route = new HttpRoute(this.target, null, false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, null);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(null);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -171,9 +171,9 @@ public class TestRequestAddCookies {
|
|||
final HttpRoute route = new HttpRoute(this.target, null, false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, null);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(null);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -189,8 +189,8 @@ public class TestRequestAddCookies {
|
|||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setEndpointDetails(null);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -209,10 +209,10 @@ public class TestRequestAddCookies {
|
|||
final HttpRoute route = new HttpRoute(this.target, null, false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setRequestConfig(config);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -233,9 +233,9 @@ public class TestRequestAddCookies {
|
|||
final HttpRoute route = new HttpRoute(this.target, null, false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -249,9 +249,9 @@ public class TestRequestAddCookies {
|
|||
final HttpRoute route = new HttpRoute(new HttpHost("localhost.local", 1234), null, false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -273,9 +273,9 @@ public class TestRequestAddCookies {
|
|||
new HttpHost("localhost.local", 80), null, new HttpHost("localhost", 8888), false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -298,9 +298,9 @@ public class TestRequestAddCookies {
|
|||
new HttpHost("http", "localhost", 8888), true, TunnelType.TUNNELLED, LayerType.LAYERED);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -330,9 +330,9 @@ public class TestRequestAddCookies {
|
|||
final HttpRoute route = new HttpRoute(this.target, null, false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
// Make sure the third cookie expires
|
||||
Thread.sleep(200);
|
||||
|
@ -361,9 +361,9 @@ public class TestRequestAddCookies {
|
|||
final HttpRoute route = new HttpRoute(this.target, null, false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -396,9 +396,9 @@ public class TestRequestAddCookies {
|
|||
final HttpRoute route = new HttpRoute(this.target, null, false);
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry);
|
||||
context.setRoute(route);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
context.setCookieSpecRegistry(this.cookieSpecRegistry);
|
||||
|
||||
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
|
||||
interceptor.process(request, null, context);
|
||||
|
|
|
@ -68,7 +68,7 @@ public class TestRequestClientConnControl {
|
|||
final HttpHost target = new HttpHost("http", "localhost", 80);
|
||||
final HttpRoute route = new HttpRoute(target, null, false);
|
||||
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setRoute(route);
|
||||
|
||||
final HttpRequestInterceptor interceptor = new RequestClientConnControl();
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -88,7 +88,7 @@ public class TestRequestClientConnControl {
|
|||
final HttpRoute route = new HttpRoute(target, null, proxy, true,
|
||||
TunnelType.TUNNELLED, LayerType.LAYERED);
|
||||
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setRoute(route);
|
||||
|
||||
final HttpRequestInterceptor interceptor = new RequestClientConnControl();
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -108,7 +108,7 @@ public class TestRequestClientConnControl {
|
|||
final HttpRoute route = new HttpRoute(target, null, proxy, false,
|
||||
TunnelType.PLAIN, LayerType.PLAIN);
|
||||
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setRoute(route);
|
||||
|
||||
final HttpRequestInterceptor interceptor = new RequestClientConnControl();
|
||||
interceptor.process(request, null, context);
|
||||
|
@ -128,7 +128,7 @@ public class TestRequestClientConnControl {
|
|||
final HttpRoute route = new HttpRoute(target, null, proxy, true,
|
||||
TunnelType.TUNNELLED, LayerType.LAYERED);
|
||||
|
||||
context.setAttribute(HttpClientContext.HTTP_ROUTE, route);
|
||||
context.setRoute(route);
|
||||
|
||||
final HttpRequestInterceptor interceptor = new RequestClientConnControl();
|
||||
interceptor.process(request, null, context);
|
||||
|
|
|
@ -46,7 +46,7 @@ public class TestRequestExpectContinue {
|
|||
public void testRequestExpectContinueGenerated() throws Exception {
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build();
|
||||
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
|
||||
context.setRequestConfig(config);
|
||||
final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
|
||||
final String s = "whatever";
|
||||
final StringEntity entity = new StringEntity(s, StandardCharsets.US_ASCII);
|
||||
|
@ -62,7 +62,7 @@ public class TestRequestExpectContinue {
|
|||
public void testRequestExpectContinueNotGenerated() throws Exception {
|
||||
final HttpClientContext context = new HttpClientContext();
|
||||
final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(false).build();
|
||||
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
|
||||
context.setRequestConfig(config);
|
||||
final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
|
||||
final String s = "whatever";
|
||||
final StringEntity entity = new StringEntity(s, StandardCharsets.US_ASCII);
|
||||
|
@ -77,7 +77,7 @@ public class TestRequestExpectContinue {
|
|||
public void testRequestExpectContinueHTTP10() throws Exception {
|
||||
final HttpClientContext context = new HttpClientContext();
|
||||
final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build();
|
||||
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
|
||||
context.setRequestConfig(config);
|
||||
final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
|
||||
request.setVersion(HttpVersion.HTTP_1_0);
|
||||
final String s = "whatever";
|
||||
|
@ -93,7 +93,7 @@ public class TestRequestExpectContinue {
|
|||
public void testRequestExpectContinueZeroContent() throws Exception {
|
||||
final HttpClientContext context = new HttpClientContext();
|
||||
final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build();
|
||||
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
|
||||
context.setRequestConfig(config);
|
||||
final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
|
||||
final String s = "";
|
||||
final StringEntity entity = new StringEntity(s, StandardCharsets.US_ASCII);
|
||||
|
|
|
@ -76,9 +76,9 @@ public class TestResponseProcessCookies {
|
|||
response.addHeader("Set-Cookie", "name1=value1");
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.COOKIE_ORIGIN, this.cookieOrigin);
|
||||
context.setAttribute(HttpClientContext.COOKIE_SPEC, this.cookieSpec);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setCookieOrigin(this.cookieOrigin);
|
||||
context.setCookieSpec(this.cookieSpec);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
|
||||
final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE;
|
||||
interceptor.process(response, null, context);
|
||||
|
@ -99,9 +99,9 @@ public class TestResponseProcessCookies {
|
|||
response.addHeader("Set-Cookie", "name1=value1");
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.COOKIE_ORIGIN, null);
|
||||
context.setAttribute(HttpClientContext.COOKIE_SPEC, this.cookieSpec);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setCookieOrigin(null);
|
||||
context.setCookieSpec(this.cookieSpec);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
|
||||
final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE;
|
||||
interceptor.process(response, null, context);
|
||||
|
@ -117,9 +117,9 @@ public class TestResponseProcessCookies {
|
|||
response.addHeader("Set-Cookie", "name1=value1");
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.COOKIE_ORIGIN, this.cookieOrigin);
|
||||
context.setAttribute(HttpClientContext.COOKIE_SPEC, null);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore);
|
||||
context.setCookieOrigin(this.cookieOrigin);
|
||||
context.setCookieSpec(null);
|
||||
context.setCookieStore(this.cookieStore);
|
||||
|
||||
final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE;
|
||||
interceptor.process(response, null, context);
|
||||
|
@ -135,9 +135,9 @@ public class TestResponseProcessCookies {
|
|||
response.addHeader("Set-Cookie", "name1=value1");
|
||||
|
||||
final HttpClientContext context = HttpClientContext.create();
|
||||
context.setAttribute(HttpClientContext.COOKIE_ORIGIN, this.cookieOrigin);
|
||||
context.setAttribute(HttpClientContext.COOKIE_SPEC, this.cookieSpec);
|
||||
context.setAttribute(HttpClientContext.COOKIE_STORE, null);
|
||||
context.setCookieOrigin(this.cookieOrigin);
|
||||
context.setCookieSpec(this.cookieSpec);
|
||||
context.setCookieStore(null);
|
||||
|
||||
final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE;
|
||||
interceptor.process(response, null, context);
|
||||
|
|
Loading…
Reference in New Issue