HttpClientContext to use instance variables for standard attributes

This commit is contained in:
Oleg Kalnichevski 2024-02-15 09:49:51 +01:00
parent f2b9a374d8
commit 762b18fe69
55 changed files with 424 additions and 260 deletions

View File

@ -68,7 +68,7 @@ public static HttpCacheContext adapt(final HttpContext context) {
} }
public static HttpCacheContext create() { public static HttpCacheContext create() {
return new HttpCacheContext(new HttpClientContext()); return new HttpCacheContext();
} }
public HttpCacheContext(final HttpContext context) { public HttpCacheContext(final HttpContext context) {

View File

@ -804,7 +804,7 @@ private void handleCacheHit(
scope.route, scope.route,
scope.originalRequest, scope.originalRequest,
new ComplexFuture<>(null), new ComplexFuture<>(null),
HttpClientContext.create(), HttpCacheContext.create(),
scope.execRuntime.fork(), scope.execRuntime.fork(),
scope.scheduler, scope.scheduler,
scope.execCount); scope.execCount);

View File

@ -318,7 +318,7 @@ private ClassicHttpResponse handleCacheHit(
scope.route, scope.route,
scope.originalRequest, scope.originalRequest,
scope.execRuntime.fork(null), scope.execRuntime.fork(null),
HttpClientContext.create()); HttpCacheContext.create());
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
LOG.debug("{} starting asynchronous revalidation exchange {}", exchangeId, revalidationExchangeId); LOG.debug("{} starting asynchronous revalidation exchange {}", exchangeId, revalidationExchangeId);
} }

View File

@ -232,14 +232,14 @@ public Response execute(
final HttpClientContext localContext = HttpClientContext.create(); final HttpClientContext localContext = HttpClientContext.create();
final CredentialsStore credentialsStoreSnapshot = credentialsStore; final CredentialsStore credentialsStoreSnapshot = credentialsStore;
if (credentialsStoreSnapshot != null) { if (credentialsStoreSnapshot != null) {
localContext.setAttribute(HttpClientContext.CREDS_PROVIDER, credentialsStoreSnapshot); localContext.setCredentialsProvider(credentialsStoreSnapshot);
} }
if (this.authCache != null) { if (this.authCache != null) {
localContext.setAttribute(HttpClientContext.AUTH_CACHE, this.authCache); localContext.setAuthCache(this.authCache);
} }
final CookieStore cookieStoreSnapshot = cookieStore; final CookieStore cookieStoreSnapshot = cookieStore;
if (cookieStoreSnapshot != null) { if (cookieStoreSnapshot != null) {
localContext.setAttribute(HttpClientContext.COOKIE_STORE, cookieStoreSnapshot); localContext.setCookieStore(cookieStoreSnapshot);
} }
return new Response(request.internalExecute(this.httpclient, localContext)); return new Response(request.internalExecute(this.httpclient, localContext));
} }

View File

@ -102,7 +102,7 @@ public ContextBuilder preemptiveBasicAuth(final HttpHost host, final UsernamePas
@Override @Override
protected HttpClientContext createContext() { protected HttpClientContext createContext() {
return new HttpClientContext(); return HttpClientContext.create();
} }
} }

View File

@ -81,7 +81,7 @@ public Scope(
this.route = Args.notNull(route, "Route"); this.route = Args.notNull(route, "Route");
this.originalRequest = Args.notNull(originalRequest, "Original request"); this.originalRequest = Args.notNull(originalRequest, "Original request");
this.cancellableDependency = Args.notNull(cancellableDependency, "Dependency"); 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.execRuntime = Args.notNull(execRuntime, "Exec runtime");
this.scheduler = scheduler; this.scheduler = scheduler;
this.execCount = execCount != null ? execCount : new AtomicInteger(1); this.execCount = execCount != null ? execCount : new AtomicInteger(1);

View File

@ -59,7 +59,7 @@ public Scope(final String exchangeId, final HttpRoute route, final ClassicHttpRe
this.route = Args.notNull(route, "Route"); this.route = Args.notNull(route, "Route");
this.originalRequest = Args.notNull(originalRequest, "Original request"); this.originalRequest = Args.notNull(originalRequest, "Original request");
this.execRuntime = Args.notNull(execRuntime, "Exec runtime"); this.execRuntime = Args.notNull(execRuntime, "Exec runtime");
this.clientContext = clientContext != null ? clientContext : HttpClientContext.create(); this.clientContext = Args.notNull(clientContext, "HTTP context");
} }
} }

View File

@ -77,7 +77,7 @@ public List<AuthScheme> select(
Args.notNull(challengeType, "ChallengeType"); Args.notNull(challengeType, "ChallengeType");
Args.notNull(challenges, "Map of auth challenges"); Args.notNull(challenges, "Map of auth challenges");
Args.notNull(context, "HTTP context"); Args.notNull(context, "HTTP context");
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
final List<AuthScheme> options = new ArrayList<>(); final List<AuthScheme> options = new ArrayList<>();
@ -88,7 +88,7 @@ public List<AuthScheme> select(
} }
return options; return options;
} }
final RequestConfig config = clientContext.getRequestConfig(); final RequestConfig config = clientContext.getRequestConfigOrDefault();
Collection<String> authPrefs = challengeType == ChallengeType.TARGET ? Collection<String> authPrefs = challengeType == ChallengeType.TARGET ?
config.getTargetPreferredAuthSchemes() : config.getProxyPreferredAuthSchemes(); config.getTargetPreferredAuthSchemes() : config.getProxyPreferredAuthSchemes();
if (authPrefs == null) { if (authPrefs == null) {

View File

@ -71,8 +71,8 @@ public TimeValue getKeepAliveDuration(final HttpResponse response, final HttpCon
} }
} }
} }
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final RequestConfig requestConfig = clientContext.getRequestConfig(); final RequestConfig requestConfig = clientContext.getRequestConfigOrDefault();
return requestConfig.getConnectionKeepAlive(); return requestConfig.getConnectionKeepAlive();
} }

View File

@ -69,7 +69,7 @@ public Object getUserToken(final HttpRoute route, final HttpContext context) {
@Override @Override
public Object getUserToken(final HttpRoute route, final HttpRequest request, final HttpContext context) { 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(); final HttpHost target = request != null ? new HttpHost(request.getScheme(), request.getAuthority()) : route.getTargetHost();

View File

@ -29,7 +29,6 @@
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.ThreadFactory; 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.Cancellable;
import org.apache.hc.core5.concurrent.ComplexFuture; import org.apache.hc.core5.concurrent.ComplexFuture;
import org.apache.hc.core5.concurrent.FutureCallback; import org.apache.hc.core5.concurrent.FutureCallback;
@ -86,7 +85,7 @@ public void cancelled() {
} }
public final Cancellable execute(final AsyncClientExchangeHandler exchangeHandler) { public final Cancellable execute(final AsyncClientExchangeHandler exchangeHandler) {
return execute(exchangeHandler, null, HttpClientContext.create()); return execute(exchangeHandler, null, null);
} }
public abstract Cancellable execute( public abstract Cancellable execute(

View File

@ -509,7 +509,7 @@ private boolean needAuthentication(
final HttpHost proxy, final HttpHost proxy,
final HttpResponse response, final HttpResponse response,
final HttpClientContext context) { final HttpClientContext context) {
final RequestConfig config = context.getRequestConfig(); final RequestConfig config = context.getRequestConfigOrDefault();
if (config.isAuthenticationEnabled()) { if (config.isAuthenticationEnabled()) {
final boolean proxyAuthRequested = authenticator.isChallenged(proxy, ChallengeType.PROXY, response, proxyAuthExchange, context); final boolean proxyAuthRequested = authenticator.isChallenged(proxy, ChallengeType.PROXY, response, proxyAuthExchange, context);

View File

@ -306,7 +306,7 @@ private boolean needAuthentication(
final String pathPrefix, final String pathPrefix,
final HttpResponse response, final HttpResponse response,
final HttpClientContext context) { final HttpClientContext context) {
final RequestConfig config = context.getRequestConfig(); final RequestConfig config = context.getRequestConfigOrDefault();
if (config.isAuthenticationEnabled()) { if (config.isAuthenticationEnabled()) {
final boolean targetAuthRequested = authenticator.isChallenged( final boolean targetAuthRequested = authenticator.isChallenged(
target, ChallengeType.TARGET, response, targetAuthExchange, context); target, ChallengeType.TARGET, response, targetAuthExchange, context);

View File

@ -118,7 +118,7 @@ public AsyncDataConsumer handleResponse(
final EntityDetails entityDetails) throws HttpException, IOException { final EntityDetails entityDetails) throws HttpException, IOException {
state.redirectURI = null; state.redirectURI = null;
final RequestConfig config = clientContext.getRequestConfig(); final RequestConfig config = clientContext.getRequestConfigOrDefault();
if (config.isRedirectsEnabled() && redirectStrategy.isRedirected(request, response, clientContext)) { if (config.isRedirectsEnabled() && redirectStrategy.isRedirected(request, response, clientContext)) {
if (state.redirectCount >= state.maxRedirects) { if (state.redirectCount >= state.maxRedirects) {
throw new RedirectException("Maximum redirects (" + state.maxRedirects + ") exceeded"); throw new RedirectException("Maximum redirects (" + state.maxRedirects + ") exceeded");
@ -263,11 +263,11 @@ public void execute(
RedirectLocations redirectLocations = clientContext.getRedirectLocations(); RedirectLocations redirectLocations = clientContext.getRedirectLocations();
if (redirectLocations == null) { if (redirectLocations == null) {
redirectLocations = new RedirectLocations(); redirectLocations = new RedirectLocations();
clientContext.setAttribute(HttpClientContext.REDIRECT_LOCATIONS, redirectLocations); clientContext.setRedirectLocations(redirectLocations);
} }
redirectLocations.clear(); redirectLocations.clear();
final RequestConfig config = clientContext.getRequestConfig(); final RequestConfig config = clientContext.getRequestConfigOrDefault();
final State state = new State(); final State state = new State();
state.maxRedirects = config.getMaxRedirects() > 0 ? config.getMaxRedirects() : 50; state.maxRedirects = config.getMaxRedirects() > 0 ? config.getMaxRedirects() : 50;

View File

@ -33,7 +33,6 @@
import org.apache.hc.client5.http.async.methods.SimpleHttpResponse; 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.SimpleRequestProducer;
import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer; 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.Contract;
import org.apache.hc.core5.annotation.ThreadingBehavior; import org.apache.hc.core5.annotation.ThreadingBehavior;
import org.apache.hc.core5.concurrent.FutureCallback; import org.apache.hc.core5.concurrent.FutureCallback;
@ -113,7 +112,7 @@ public final <T> Future<T> execute(
final FutureCallback<T> callback) { final FutureCallback<T> callback) {
Args.notNull(requestProducer, "Request producer"); Args.notNull(requestProducer, "Request producer");
Args.notNull(responseConsumer, "Response consumer"); Args.notNull(responseConsumer, "Response consumer");
return execute(requestProducer, responseConsumer, HttpClientContext.create(), callback); return execute(requestProducer, responseConsumer, null, callback);
} }
public final Future<SimpleHttpResponse> execute( public final Future<SimpleHttpResponse> execute(
@ -127,7 +126,7 @@ public final Future<SimpleHttpResponse> execute(
public final Future<SimpleHttpResponse> execute( public final Future<SimpleHttpResponse> execute(
final SimpleHttpRequest request, final SimpleHttpRequest request,
final FutureCallback<SimpleHttpResponse> callback) { 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); public abstract void register(String hostname, String uriPattern, Supplier<AsyncPushConsumer> supplier);

View File

@ -125,9 +125,8 @@ public void cancel() {
@Override @Override
public void produceRequest(final RequestChannel channel, final HttpContext context) throws HttpException, IOException { public void produceRequest(final RequestChannel channel, final HttpContext context) throws HttpException, IOException {
clientContext.setAttribute(HttpClientContext.HTTP_ROUTE, route);
clientContext.setRequest(request); clientContext.setRequest(request);
clientContext.setRoute(route);
httpProcessor.process(request, entityProducer, clientContext); httpProcessor.process(request, entityProducer, clientContext);
channel.sendRequest(request, entityProducer, context); channel.sendRequest(request, entityProducer, context);

View File

@ -148,7 +148,7 @@ public void produceRequest(
final RequestChannel channel, final RequestChannel channel,
final HttpContext context) throws HttpException, IOException { final HttpContext context) throws HttpException, IOException {
clientContext.setAttribute(HttpClientContext.HTTP_ROUTE, route); clientContext.setRoute(route);
clientContext.setRequest(request); clientContext.setRequest(request);
httpProcessor.process(request, entityProducer, clientContext); httpProcessor.process(request, entityProducer, clientContext);
@ -248,7 +248,7 @@ public void consumeResponse(
Object userToken = clientContext.getUserToken(); Object userToken = clientContext.getUserToken();
if (userToken == null) { if (userToken == null) {
userToken = userTokenHandler.getUserToken(route, request, clientContext); userToken = userTokenHandler.getUserToken(route, request, clientContext);
clientContext.setAttribute(HttpClientContext.USER_TOKEN, userToken); clientContext.setUserToken(userToken);
} }
execRuntime.markConnectionReusable(userToken, keepAliveDuration); execRuntime.markConnectionReusable(userToken, keepAliveDuration);
if (entityDetails == null) { if (entityDetails == null) {

View File

@ -84,6 +84,7 @@ abstract class InternalAbstractHttpAsyncClient extends AbstractHttpAsyncClientBa
private final static ThreadFactory SCHEDULER_THREAD_FACTORY = new DefaultThreadFactory("Scheduled-executor", true); private final static ThreadFactory SCHEDULER_THREAD_FACTORY = new DefaultThreadFactory("Scheduled-executor", true);
private static final Logger LOG = LoggerFactory.getLogger(InternalAbstractHttpAsyncClient.class); private static final Logger LOG = LoggerFactory.getLogger(InternalAbstractHttpAsyncClient.class);
private final AsyncExecChainElement execChain; private final AsyncExecChainElement execChain;
private final Lookup<CookieSpecFactory> cookieSpecRegistry; private final Lookup<CookieSpecFactory> cookieSpecRegistry;
private final Lookup<AuthSchemeFactory> authSchemeRegistry; private final Lookup<AuthSchemeFactory> authSchemeRegistry;
@ -165,20 +166,20 @@ void internalClose(final CloseMode closeMode) {
} }
private void setupContext(final HttpClientContext context) { private void setupContext(final HttpClientContext context) {
if (context.getAttribute(HttpClientContext.AUTHSCHEME_REGISTRY) == null) { if (context.getAuthSchemeRegistry() == null) {
context.setAttribute(HttpClientContext.AUTHSCHEME_REGISTRY, authSchemeRegistry); context.setAuthSchemeRegistry(authSchemeRegistry);
} }
if (context.getAttribute(HttpClientContext.COOKIESPEC_REGISTRY) == null) { if (context.getCookieSpecRegistry() == null) {
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, cookieSpecRegistry); context.setCookieSpecRegistry(cookieSpecRegistry);
} }
if (context.getAttribute(HttpClientContext.COOKIE_STORE) == null) { if (context.getCookieStore() == null) {
context.setAttribute(HttpClientContext.COOKIE_STORE, cookieStore); context.setCookieStore(cookieStore);
} }
if (context.getAttribute(HttpClientContext.CREDS_PROVIDER) == null) { if (context.getCredentialsProvider() == null) {
context.setAttribute(HttpClientContext.CREDS_PROVIDER, credentialsProvider); context.setCredentialsProvider(credentialsProvider);
} }
if (context.getAttribute(HttpClientContext.REQUEST_CONFIG) == null) { if (context.getRequestConfig() == null) {
context.setAttribute(HttpClientContext.REQUEST_CONFIG, defaultConfig); context.setRequestConfig(defaultConfig);
} }
} }
@ -199,7 +200,7 @@ protected <T> Future<T> doExecute(
if (!isRunning()) { if (!isRunning()) {
throw new CancellationException("Request execution cancelled"); 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) -> { requestProducer.sendRequest((request, entityDetails, c) -> {
RequestConfig requestConfig = null; RequestConfig requestConfig = null;

View File

@ -87,7 +87,7 @@ public Cancellable acquireEndpoint(
final HttpClientContext context, final HttpClientContext context,
final FutureCallback<AsyncExecRuntime> callback) { final FutureCallback<AsyncExecRuntime> callback) {
if (sessionRef.get() == null) { if (sessionRef.get() == null) {
final RequestConfig requestConfig = context.getRequestConfig(); final RequestConfig requestConfig = context.getRequestConfigOrDefault();
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
final Timeout connectTimeout = requestConfig.getConnectTimeout(); final Timeout connectTimeout = requestConfig.getConnectTimeout();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
@ -183,7 +183,7 @@ public Cancellable connectEndpoint(
return Operations.nonCancellable(); return Operations.nonCancellable();
} }
final HttpRoute route = endpoint.route; final HttpRoute route = endpoint.route;
final RequestConfig requestConfig = context.getRequestConfig(); final RequestConfig requestConfig = context.getRequestConfigOrDefault();
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
final Timeout connectTimeout = requestConfig.getConnectTimeout(); final Timeout connectTimeout = requestConfig.getConnectTimeout();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
@ -262,7 +262,7 @@ public Cancellable execute(
Command.Priority.NORMAL); Command.Priority.NORMAL);
} else { } else {
final HttpRoute route = endpoint.route; final HttpRoute route = endpoint.route;
final RequestConfig requestConfig = context.getRequestConfig(); final RequestConfig requestConfig = context.getRequestConfigOrDefault();
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
final Timeout connectTimeout = requestConfig.getConnectTimeout(); final Timeout connectTimeout = requestConfig.getConnectTimeout();
connPool.getSession(route, connectTimeout, new FutureCallback<IOSession>() { connPool.getSession(route, connectTimeout, new FutureCallback<IOSession>() {

View File

@ -98,7 +98,7 @@ public Cancellable acquireEndpoint(
final FutureCallback<AsyncExecRuntime> callback) { final FutureCallback<AsyncExecRuntime> callback) {
if (endpointRef.get() == null) { if (endpointRef.get() == null) {
state = object; state = object;
final RequestConfig requestConfig = context.getRequestConfig(); final RequestConfig requestConfig = context.getRequestConfigOrDefault();
final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout(); final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("{} acquiring endpoint ({})", id, connectionRequestTimeout); log.debug("{} acquiring endpoint ({})", id, connectionRequestTimeout);
@ -208,7 +208,7 @@ public Cancellable connectEndpoint(
callback.completed(this); callback.completed(this);
return Operations.nonCancellable(); return Operations.nonCancellable();
} }
final RequestConfig requestConfig = context.getRequestConfig(); final RequestConfig requestConfig = context.getRequestConfigOrDefault();
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
final Timeout connectTimeout = requestConfig.getConnectTimeout(); final Timeout connectTimeout = requestConfig.getConnectTimeout();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
@ -280,13 +280,13 @@ public Cancellable execute(
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("{} start execution {}", ConnPoolSupport.getId(endpoint), id); log.debug("{} start execution {}", ConnPoolSupport.getId(endpoint), id);
} }
final RequestConfig requestConfig = context.getRequestConfig(); final RequestConfig requestConfig = context.getRequestConfigOrDefault();
final Timeout responseTimeout = requestConfig.getResponseTimeout(); final Timeout responseTimeout = requestConfig.getResponseTimeout();
if (responseTimeout != null) { if (responseTimeout != null) {
endpoint.setSocketTimeout(responseTimeout); endpoint.setSocketTimeout(responseTimeout);
} }
endpoint.execute(id, exchangeHandler, context); endpoint.execute(id, exchangeHandler, context);
if (context.getRequestConfig().isHardCancellationEnabled()) { if (context.getRequestConfigOrDefault().isHardCancellationEnabled()) {
return () -> { return () -> {
exchangeHandler.cancel(); exchangeHandler.cancel();
return true; return true;

View File

@ -71,6 +71,7 @@
import org.apache.hc.core5.reactor.IOEventHandlerFactory; import org.apache.hc.core5.reactor.IOEventHandlerFactory;
import org.apache.hc.core5.reactor.IOReactorConfig; import org.apache.hc.core5.reactor.IOReactorConfig;
import org.apache.hc.core5.reactor.IOSession; import org.apache.hc.core5.reactor.IOSession;
import org.apache.hc.core5.util.Args;
import org.apache.hc.core5.util.Timeout; import org.apache.hc.core5.util.Timeout;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -122,12 +123,13 @@ public Cancellable execute(
final AsyncClientExchangeHandler exchangeHandler, final AsyncClientExchangeHandler exchangeHandler,
final HandlerFactory<AsyncPushConsumer> pushHandlerFactory, final HandlerFactory<AsyncPushConsumer> pushHandlerFactory,
final HttpContext context) { final HttpContext context) {
Args.notNull(exchangeHandler, "Message exchange handler");
final ComplexCancellable cancellable = new ComplexCancellable(); final ComplexCancellable cancellable = new ComplexCancellable();
try { try {
if (!isRunning()) { if (!isRunning()) {
throw new CancellationException("Request execution cancelled"); 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) -> { exchangeHandler.produceRequest((request, entityDetails, context1) -> {
RequestConfig requestConfig = null; RequestConfig requestConfig = null;
if (request instanceof Configurable) { if (request instanceof Configurable) {
@ -136,7 +138,7 @@ public Cancellable execute(
if (requestConfig != null) { if (requestConfig != null) {
clientContext.setRequestConfig(requestConfig); clientContext.setRequestConfig(requestConfig);
} else { } else {
requestConfig = clientContext.getRequestConfig(); requestConfig = clientContext.getRequestConfigOrDefault();
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
final Timeout connectTimeout = requestConfig.getConnectTimeout(); final Timeout connectTimeout = requestConfig.getConnectTimeout();

View File

@ -205,7 +205,7 @@ public void cancelled() {
public Future<AsyncClientEndpoint> lease( public Future<AsyncClientEndpoint> lease(
final HttpHost host, final HttpHost host,
final FutureCallback<AsyncClientEndpoint> callback) { final FutureCallback<AsyncClientEndpoint> callback) {
return lease(host, HttpClientContext.create(), callback); return lease(host, null, callback);
} }
public Future<AsyncClientEndpoint> lease( public Future<AsyncClientEndpoint> lease(
@ -213,14 +213,13 @@ public Future<AsyncClientEndpoint> lease(
final HttpContext context, final HttpContext context,
final FutureCallback<AsyncClientEndpoint> callback) { final FutureCallback<AsyncClientEndpoint> callback) {
Args.notNull(host, "Host"); Args.notNull(host, "Host");
Args.notNull(context, "HTTP context");
final BasicFuture<AsyncClientEndpoint> future = new BasicFuture<>(callback); final BasicFuture<AsyncClientEndpoint> future = new BasicFuture<>(callback);
if (!isRunning()) { if (!isRunning()) {
future.failed(new CancellationException("Connection lease cancelled")); future.failed(new CancellationException("Connection lease cancelled"));
return future; return future;
} }
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.adapt(context);
final RequestConfig requestConfig = clientContext.getRequestConfig(); final RequestConfig requestConfig = clientContext.getRequestConfigOrDefault();
final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout(); final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout();
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
final Timeout connectTimeout = requestConfig.getConnectTimeout(); final Timeout connectTimeout = requestConfig.getConnectTimeout();
@ -260,7 +259,7 @@ public Cancellable execute(
if (!isRunning()) { if (!isRunning()) {
throw new CancellationException("Request execution cancelled"); 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) -> { exchangeHandler.produceRequest((request, entityDetails, context1) -> {
RequestConfig requestConfig = null; RequestConfig requestConfig = null;
if (request instanceof Configurable) { if (request instanceof Configurable) {
@ -269,7 +268,7 @@ public Cancellable execute(
if (requestConfig != null) { if (requestConfig != null) {
clientContext.setRequestConfig(requestConfig); clientContext.setRequestConfig(requestConfig);
} else { } else {
requestConfig = clientContext.getRequestConfig(); requestConfig = clientContext.getRequestConfigOrDefault();
} }
final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout(); final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout();
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
@ -456,7 +455,7 @@ public void execute(
final HttpContext context) { final HttpContext context) {
Asserts.check(!released.get(), "Endpoint has already been released"); 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(); final String exchangeId = ExecSupport.getNextExchangeId();
clientContext.setExchangeId(exchangeId); clientContext.setExchangeId(exchangeId);
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {

View File

@ -62,7 +62,7 @@ public void updateOnChallenge(final HttpHost host,
final String pathPrefix, final String pathPrefix,
final AuthExchange authExchange, final AuthExchange authExchange,
final HttpContext context) { final HttpContext context) {
clearCache(host, pathPrefix, HttpClientContext.adapt(context)); clearCache(host, pathPrefix, HttpClientContext.cast(context));
} }
public void updateOnNoChallenge(final HttpHost host, public void updateOnNoChallenge(final HttpHost host,
@ -70,7 +70,7 @@ public void updateOnNoChallenge(final HttpHost host,
final AuthExchange authExchange, final AuthExchange authExchange,
final HttpContext context) { final HttpContext context) {
if (authExchange.getState() == AuthExchange.State.SUCCESS) { 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 void updateOnResponse(final HttpHost host,
final AuthExchange authExchange, final AuthExchange authExchange,
final HttpContext context) { final HttpContext context) {
if (authExchange.getState() == AuthExchange.State.FAILURE) { if (authExchange.getState() == AuthExchange.State.FAILURE) {
clearCache(host, pathPrefix, HttpClientContext.adapt(context)); clearCache(host, pathPrefix, HttpClientContext.cast(context));
} }
} }
@ -88,9 +88,9 @@ public void loadPreemptively(final HttpHost host,
final AuthExchange authExchange, final AuthExchange authExchange,
final HttpContext context) { final HttpContext context) {
if (authExchange.getState() == AuthExchange.State.UNCHALLENGED) { 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) { if (authScheme == null && pathPrefix != null) {
authScheme = loadFromCache(host, null, HttpClientContext.adapt(context)); authScheme = loadFromCache(host, null, HttpClientContext.cast(context));
} }
if (authScheme != null) { if (authScheme != null) {
authExchange.select(authScheme); authExchange.select(authScheme);

View File

@ -162,7 +162,7 @@ public boolean isResponseReady(
} }
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope); LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope);
} }

View File

@ -141,7 +141,7 @@ public boolean isResponseReady(
} }
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope); LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope);
} }

View File

@ -227,7 +227,7 @@ public boolean isResponseReady(
} }
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope); LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope);
} }

View File

@ -118,7 +118,7 @@ public void processChallenge(
state = State.CHALLENGE_RECEIVED; state = State.CHALLENGE_RECEIVED;
} else { } else {
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
LOG.debug("{} Authentication already attempted", exchangeId); LOG.debug("{} Authentication already attempted", exchangeId);
} }
@ -225,7 +225,7 @@ public String generateAuthResponse(
} }
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
LOG.debug("{} init {}", exchangeId, authServer); LOG.debug("{} init {}", exchangeId, authServer);
} }
@ -252,7 +252,7 @@ public String generateAuthResponse(
final Base64 codec = new Base64(0); final Base64 codec = new Base64(0);
final String tokenstr = new String(codec.encode(token)); final String tokenstr = new String(codec.encode(token));
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
LOG.debug("{} Sending response '{}' back to the auth server", exchangeId, tokenstr); LOG.debug("{} Sending response '{}' back to the auth server", exchangeId, tokenstr);
} }

View File

@ -109,7 +109,7 @@ public boolean isChallenged(
throw new IllegalStateException("Unexpected challenge type: " + challengeType); throw new IllegalStateException("Unexpected challenge type: " + challengeType);
} }
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
if (response.getCode() == challengeCode) { if (response.getCode() == challengeCode) {
@ -155,7 +155,7 @@ public boolean updateAuthState(
final AuthExchange authExchange, final AuthExchange authExchange,
final HttpContext context) { final HttpContext context) {
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
@ -304,7 +304,7 @@ public void addAuthResponse(
final HttpRequest request, final HttpRequest request,
final AuthExchange authExchange, final AuthExchange authExchange,
final HttpContext context) { final HttpContext context) {
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
AuthScheme authScheme = authExchange.getAuthScheme(); AuthScheme authScheme = authExchange.getAuthScheme();
switch (authExchange.getState()) { switch (authExchange.getState()) {

View File

@ -146,7 +146,7 @@ public boolean isResponseReady(
} }
if (LOG.isDebugEnabled()) { if (LOG.isDebugEnabled()) {
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope); LOG.debug("{} No credentials found for auth scope [{}]", exchangeId, authScope);
} }

View File

@ -105,7 +105,7 @@ public Credentials getCredentials(final AuthScope authScope, final HttpContext c
} }
final String host = authScope.getHost(); final String host = authScope.getHost();
if (host != null) { 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); final String protocol = authScope.getProtocol() != null ? authScope.getProtocol() : (authScope.getPort() == 443 ? URIScheme.HTTPS.id : URIScheme.HTTP.id);
PasswordAuthentication systemcreds = getSystemCreds( PasswordAuthentication systemcreds = getSystemCreds(
protocol, authScope, Authenticator.RequestorType.SERVER, clientContext); protocol, authScope, Authenticator.RequestorType.SERVER, clientContext);

View File

@ -214,7 +214,7 @@ private boolean createTunnelToTarget(
final ExecRuntime execRuntime, final ExecRuntime execRuntime,
final HttpClientContext context) throws HttpException, IOException { final HttpClientContext context) throws HttpException, IOException {
final RequestConfig config = context.getRequestConfig(); final RequestConfig config = context.getRequestConfigOrDefault();
final HttpHost target = route.getTargetHost(); final HttpHost target = route.getTargetHost();
final HttpHost proxy = route.getProxyHost(); final HttpHost proxy = route.getProxyHost();

View File

@ -137,7 +137,7 @@ public ClassicHttpResponse execute(
Args.notNull(scope, "Scope"); Args.notNull(scope, "Scope");
final HttpClientContext clientContext = scope.clientContext; final HttpClientContext clientContext = scope.clientContext;
final RequestConfig requestConfig = clientContext.getRequestConfig(); final RequestConfig requestConfig = clientContext.getRequestConfigOrDefault();
/* Signal support for Accept-Encoding transfer encodings. */ /* Signal support for Accept-Encoding transfer encodings. */
if (!request.containsHeader(HttpHeaders.ACCEPT_ENCODING) && requestConfig.isContentCompressionEnabled()) { if (!request.containsHeader(HttpHeaders.ACCEPT_ENCODING) && requestConfig.isContentCompressionEnabled()) {

View File

@ -167,7 +167,7 @@ public ClassicHttpResponse execute(
final TimeValue nextInterval = retryStrategy.getRetryInterval(response, execCount, context); final TimeValue nextInterval = retryStrategy.getRetryInterval(response, execCount, context);
// Make sure the retry interval does not exceed the response timeout // Make sure the retry interval does not exceed the response timeout
if (TimeValue.isPositive(nextInterval)) { if (TimeValue.isPositive(nextInterval)) {
final RequestConfig requestConfig = context.getRequestConfig(); final RequestConfig requestConfig = context.getRequestConfigOrDefault();
final Timeout responseTimeout = requestConfig.getResponseTimeout(); final Timeout responseTimeout = requestConfig.getResponseTimeout();
if (responseTimeout != null && nextInterval.compareTo(responseTimeout) > 0) { if (responseTimeout != null && nextInterval.compareTo(responseTimeout) > 0) {
return response; return response;

View File

@ -97,7 +97,7 @@ public void acquireEndpoint(
final String id, final HttpRoute route, final Object object, final HttpClientContext context) throws IOException { final String id, final HttpRoute route, final Object object, final HttpClientContext context) throws IOException {
Args.notNull(route, "Route"); Args.notNull(route, "Route");
if (endpointRef.get() == null) { if (endpointRef.get() == null) {
final RequestConfig requestConfig = context.getRequestConfig(); final RequestConfig requestConfig = context.getRequestConfigOrDefault();
final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout(); final Timeout connectionRequestTimeout = requestConfig.getConnectionRequestTimeout();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("{} acquiring endpoint ({})", id, connectionRequestTimeout); log.debug("{} acquiring endpoint ({})", id, connectionRequestTimeout);
@ -155,7 +155,7 @@ private void connectEndpoint(final ConnectionEndpoint endpoint, final HttpClient
if (isExecutionAborted()) { if (isExecutionAborted()) {
throw new RequestFailedException("Request aborted"); throw new RequestFailedException("Request aborted");
} }
final RequestConfig requestConfig = context.getRequestConfig(); final RequestConfig requestConfig = context.getRequestConfigOrDefault();
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
final Timeout connectTimeout = requestConfig.getConnectTimeout(); final Timeout connectTimeout = requestConfig.getConnectTimeout();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
@ -222,7 +222,7 @@ public ClassicHttpResponse execute(
if (isExecutionAborted()) { if (isExecutionAborted()) {
throw new RequestFailedException("Request aborted"); throw new RequestFailedException("Request aborted");
} }
final RequestConfig requestConfig = context.getRequestConfig(); final RequestConfig requestConfig = context.getRequestConfigOrDefault();
final Timeout responseTimeout = requestConfig.getResponseTimeout(); final Timeout responseTimeout = requestConfig.getResponseTimeout();
if (responseTimeout != null) { if (responseTimeout != null) {
endpoint.setSocketTimeout(responseTimeout); endpoint.setSocketTimeout(responseTimeout);

View File

@ -121,20 +121,20 @@ private HttpRoute determineRoute(final HttpHost target, final HttpRequest reques
} }
private void setupContext(final HttpClientContext context) { private void setupContext(final HttpClientContext context) {
if (context.getAttribute(HttpClientContext.AUTHSCHEME_REGISTRY) == null) { if (context.getAuthSchemeRegistry() == null) {
context.setAttribute(HttpClientContext.AUTHSCHEME_REGISTRY, this.authSchemeRegistry); context.setAuthSchemeRegistry(this.authSchemeRegistry);
} }
if (context.getAttribute(HttpClientContext.COOKIESPEC_REGISTRY) == null) { if (context.getCookieSpecRegistry() == null) {
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
} }
if (context.getAttribute(HttpClientContext.COOKIE_STORE) == null) { if (context.getCookieStore() == null) {
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
} }
if (context.getAttribute(HttpClientContext.CREDS_PROVIDER) == null) { if (context.getCredentialsProvider() == null) {
context.setAttribute(HttpClientContext.CREDS_PROVIDER, this.credentialsProvider); context.setCredentialsProvider(this.credentialsProvider);
} }
if (context.getAttribute(HttpClientContext.REQUEST_CONFIG) == null) { if (context.getRequestConfig() == null) {
context.setAttribute(HttpClientContext.REQUEST_CONFIG, this.defaultConfig); context.setRequestConfig(this.defaultConfig);
} }
} }
@ -145,8 +145,7 @@ protected CloseableHttpResponse doExecute(
final HttpContext context) throws IOException { final HttpContext context) throws IOException {
Args.notNull(request, "HTTP request"); Args.notNull(request, "HTTP request");
try { try {
final HttpClientContext localcontext = HttpClientContext.adapt( final HttpClientContext localcontext = HttpClientContext.adapt(context);
context != null ? context : new HttpClientContext());
RequestConfig config = null; RequestConfig config = null;
if (request instanceof Configurable) { if (request instanceof Configurable) {
config = ((Configurable) request).getConfig(); config = ((Configurable) request).getConfig();

View File

@ -113,7 +113,7 @@ public ClassicHttpResponse execute(
} }
try { try {
// Run request protocol interceptors // Run request protocol interceptors
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setRequest(request); context.setRequest(request);
httpProcessor.process(request, request.getEntity(), context); httpProcessor.process(request, request.getEntity(), context);
@ -146,7 +146,7 @@ public ClassicHttpResponse execute(
Object userToken = context.getUserToken(); Object userToken = context.getUserToken();
if (userToken == null) { if (userToken == null) {
userToken = userTokenHandler.getUserToken(route, request, context); 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. // The connection is in or can be brought to a re-usable state.

View File

@ -118,8 +118,7 @@ protected CloseableHttpResponse doExecute(
if (request.getAuthority() == null) { if (request.getAuthority() == null) {
request.setAuthority(new URIAuthority(target)); request.setAuthority(new URIAuthority(target));
} }
final HttpClientContext clientContext = HttpClientContext.adapt( final HttpClientContext clientContext = HttpClientContext.adapt(context);
context != null ? context : new HttpClientContext());
RequestConfig config = null; RequestConfig config = null;
if (request instanceof Configurable) { if (request instanceof Configurable) {
config = ((Configurable) request).getConfig(); config = ((Configurable) request).getConfig();
@ -142,7 +141,7 @@ protected CloseableHttpResponse doExecute(
} }
clientContext.setRequest(request); clientContext.setRequest(request);
clientContext.setAttribute(HttpClientContext.HTTP_ROUTE, route); clientContext.setRoute(route);
httpProcessor.process(request, request.getEntity(), clientContext); httpProcessor.process(request, request.getEntity(), clientContext);
final ClassicHttpResponse response = execRuntime.execute(exchangeId, request, clientContext); final ClassicHttpResponse response = execRuntime.execute(exchangeId, request, clientContext);

View File

@ -266,7 +266,7 @@ private boolean needAuthentication(
final String pathPrefix, final String pathPrefix,
final HttpResponse response, final HttpResponse response,
final HttpClientContext context) { final HttpClientContext context) {
final RequestConfig config = context.getRequestConfig(); final RequestConfig config = context.getRequestConfigOrDefault();
if (config.isAuthenticationEnabled()) { if (config.isAuthenticationEnabled()) {
final boolean targetAuthRequested = authenticator.isChallenged( final boolean targetAuthRequested = authenticator.isChallenged(
target, ChallengeType.TARGET, response, targetAuthExchange, context); target, ChallengeType.TARGET, response, targetAuthExchange, context);

View File

@ -145,7 +145,7 @@ public Socket tunnel(
proxy, false, TunnelType.TUNNELLED, LayerType.PLAIN); proxy, false, TunnelType.TUNNELLED, LayerType.PLAIN);
final ManagedHttpClientConnection conn = this.connFactory.createConnection(null); final ManagedHttpClientConnection conn = this.connFactory.createConnection(null);
final HttpClientContext context = new HttpClientContext(); final HttpClientContext context = HttpClientContext.create();
ClassicHttpResponse response; ClassicHttpResponse response;
final ClassicHttpRequest connect = new BasicClassicHttpRequest(Method.CONNECT, proxy, target.toHostString()); final ClassicHttpRequest connect = new BasicClassicHttpRequest(Method.CONNECT, proxy, target.toHostString());
@ -155,10 +155,10 @@ public Socket tunnel(
// Populate the execution context // Populate the execution context
context.setRequest(connect); context.setRequest(connect);
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.CREDS_PROVIDER, credsProvider); context.setCredentialsProvider(credsProvider);
context.setAttribute(HttpClientContext.AUTHSCHEME_REGISTRY, this.authSchemeRegistry); context.setAuthSchemeRegistry(this.authSchemeRegistry);
context.setAttribute(HttpClientContext.REQUEST_CONFIG, this.requestConfig); context.setRequestConfig(this.requestConfig);
this.requestExec.preProcess(connect, this.httpProcessor, context); this.requestExec.preProcess(connect, this.httpProcessor, context);

View File

@ -99,14 +99,9 @@ public ClassicHttpResponse execute(
Args.notNull(scope, "Scope"); Args.notNull(scope, "Scope");
final HttpClientContext context = scope.clientContext; final HttpClientContext context = scope.clientContext;
RedirectLocations redirectLocations = context.getRedirectLocations(); context.setRedirectLocations(null);
if (redirectLocations == null) {
redirectLocations = new RedirectLocations();
context.setAttribute(HttpClientContext.REDIRECT_LOCATIONS, redirectLocations);
}
redirectLocations.clear();
final RequestConfig config = context.getRequestConfig(); final RequestConfig config = context.getRequestConfigOrDefault();
final int maxRedirects = config.getMaxRedirects() > 0 ? config.getMaxRedirects() : 50; final int maxRedirects = config.getMaxRedirects() > 0 ? config.getMaxRedirects() : 50;
ClassicHttpRequest originalRequest = scope.originalRequest; ClassicHttpRequest originalRequest = scope.originalRequest;
ClassicHttpRequest currentRequest = request; ClassicHttpRequest currentRequest = request;
@ -139,6 +134,7 @@ public ClassicHttpResponse execute(
redirectUri); redirectUri);
} }
final RedirectLocations redirectLocations = context.getRedirectLocations();
if (!config.isCircularRedirectsAllowed()) { if (!config.isCircularRedirectsAllowed()) {
if (redirectLocations.contains(redirectUri)) { if (redirectLocations.contains(redirectUri)) {
throw new CircularRedirectException("Circular redirect to '" + redirectUri + "'"); throw new CircularRedirectException("Circular redirect to '" + redirectUri + "'");

View File

@ -76,8 +76,8 @@ public final HttpRoute determineRoute(final HttpHost host, final HttpRequest req
if (host == null) { if (host == null) {
throw new ProtocolException("Target host is not specified"); throw new ProtocolException("Target host is not specified");
} }
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final RequestConfig config = clientContext.getRequestConfig(); final RequestConfig config = clientContext.getRequestConfigOrDefault();
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
HttpHost proxy = config.getProxy(); HttpHost proxy = config.getProxy();
if (proxy == null) { if (proxy == null) {

View File

@ -30,6 +30,8 @@
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.net.ssl.SSLSession;
import org.apache.hc.client5.http.HttpRoute; import org.apache.hc.client5.http.HttpRoute;
import org.apache.hc.client5.http.RouteInfo; import org.apache.hc.client5.http.RouteInfo;
import org.apache.hc.client5.http.auth.AuthCache; import org.apache.hc.client5.http.auth.AuthCache;
@ -42,11 +44,15 @@
import org.apache.hc.client5.http.cookie.CookieSpec; import org.apache.hc.client5.http.cookie.CookieSpec;
import org.apache.hc.client5.http.cookie.CookieSpecFactory; import org.apache.hc.client5.http.cookie.CookieSpecFactory;
import org.apache.hc.client5.http.cookie.CookieStore; 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.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.config.Lookup;
import org.apache.hc.core5.http.protocol.HttpContext; import org.apache.hc.core5.http.protocol.HttpContext;
import org.apache.hc.core5.http.protocol.HttpCoreContext; 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 * Adaptor class that provides convenience type safe setters and getters
@ -58,96 +64,129 @@
public class HttpClientContext extends HttpCoreContext { public class HttpClientContext extends HttpCoreContext {
/** /**
* Attribute name of a {@link RouteInfo} * @deprecated Use getter methods
* object that represents the actual connection route.
*/ */
@Deprecated
public static final String HTTP_ROUTE = "http.route"; public static final String HTTP_ROUTE = "http.route";
/** /**
* Attribute name of a {@link RedirectLocations} object that represents a collection of all * @deprecated Use getter methods
* redirect locations received in the process of request execution.
*/ */
@Deprecated
public static final String REDIRECT_LOCATIONS = "http.protocol.redirect-locations"; 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 * @deprecated Use getter methods
* the actual {@link CookieSpecFactory} registry.
*/ */
@Deprecated
public static final String COOKIESPEC_REGISTRY = "http.cookiespec-registry"; public static final String COOKIESPEC_REGISTRY = "http.cookiespec-registry";
/** /**
* Attribute name of a {@link org.apache.hc.client5.http.cookie.CookieSpec} * @deprecated Use getter methods
* object that represents the actual cookie specification.
*/ */
@Deprecated
public static final String COOKIE_SPEC = "http.cookie-spec"; public static final String COOKIE_SPEC = "http.cookie-spec";
/** /**
* Attribute name of a {@link org.apache.hc.client5.http.cookie.CookieOrigin} * @deprecated Use getter methods
* object that represents the actual details of the origin server.
*/ */
@Deprecated
public static final String COOKIE_ORIGIN = "http.cookie-origin"; public static final String COOKIE_ORIGIN = "http.cookie-origin";
/** /**
* Attribute name of a {@link CookieStore} * @deprecated Use getter methods
* object that represents the actual cookie store.
*/ */
@Deprecated
public static final String COOKIE_STORE = "http.cookie-store"; public static final String COOKIE_STORE = "http.cookie-store";
/** /**
* Attribute name of a {@link CredentialsProvider} * @deprecated Use getter methods
* object that represents the actual credentials provider.
*/ */
@Deprecated
public static final String CREDS_PROVIDER = "http.auth.credentials-provider"; public static final String CREDS_PROVIDER = "http.auth.credentials-provider";
/** /**
* Attribute name of a {@link AuthCache} object * @deprecated Use getter methods
* that represents the auth scheme cache.
*/ */
@Deprecated
public static final String AUTH_CACHE = "http.auth.auth-cache"; public static final String AUTH_CACHE = "http.auth.auth-cache";
/** /**
* Attribute name of a map containing actual {@link AuthExchange}s keyed by their respective * @deprecated Use getter methods
* {@link org.apache.hc.core5.http.HttpHost}.
*/ */
@Deprecated
public static final String AUTH_EXCHANGE_MAP = "http.auth.exchanges"; public static final String AUTH_EXCHANGE_MAP = "http.auth.exchanges";
/** /**
* Attribute name of a {@link java.lang.Object} object that represents * @deprecated Use getter methods
* the actual user identity such as user {@link java.security.Principal}.
*/ */
@Deprecated
public static final String USER_TOKEN = "http.user-token"; public static final String USER_TOKEN = "http.user-token";
/** /**
* Attribute name of a {@link org.apache.hc.core5.http.config.Lookup} object that represents * @deprecated Use getter methods
* the actual {@link AuthSchemeFactory} registry.
*/ */
@Deprecated
public static final String AUTHSCHEME_REGISTRY = "http.authscheme-registry"; public static final String AUTHSCHEME_REGISTRY = "http.authscheme-registry";
/** /**
* Attribute name of a {@link org.apache.hc.client5.http.config.RequestConfig} object that * @deprecated Use getter methods
* represents the actual request configuration.
*/ */
@Deprecated
public static final String REQUEST_CONFIG = "http.request-config"; public static final String REQUEST_CONFIG = "http.request-config";
/** /**
* Attribute name of a {@link java.lang.String} object that represents the ID of the * @deprecated Use getter methods
* current message exchange.
*/ */
@Deprecated
public static final String EXCHANGE_ID = "http.exchange-id"; public static final String EXCHANGE_ID = "http.exchange-id";
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public static HttpClientContext adapt(final HttpContext context) { public static HttpClientContext adapt(final HttpContext context) {
Args.notNull(context, "HTTP context");
if (context instanceof HttpClientContext) { if (context instanceof HttpClientContext) {
return (HttpClientContext) context; 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() { public static HttpClientContext create() {
return new HttpClientContext(); 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) { public HttpClientContext(final HttpContext context) {
super(context); super(context);
} }
@ -156,99 +195,131 @@ public HttpClientContext() {
super(); 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() { 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() { 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() { public CookieStore getCookieStore() {
return getAttribute(COOKIE_STORE, CookieStore.class); return cookieStore;
} }
public void setCookieStore(final CookieStore cookieStore) { public void setCookieStore(final CookieStore cookieStore) {
setAttribute(COOKIE_STORE, cookieStore); this.cookieStore = cookieStore;
} }
public CookieSpec getCookieSpec() { 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() { public CookieOrigin getCookieOrigin() {
return getAttribute(COOKIE_ORIGIN, CookieOrigin.class); return cookieOrigin;
} }
@SuppressWarnings("unchecked") /**
private <T> Lookup<T> getLookup(final String name) { * @since 5.4
return (Lookup<T>) getAttribute(name, Lookup.class); */
@Internal
public void setCookieOrigin(final CookieOrigin cookieOrigin) {
this.cookieOrigin = cookieOrigin;
} }
public Lookup<CookieSpecFactory> getCookieSpecRegistry() { public Lookup<CookieSpecFactory> getCookieSpecRegistry() {
return getLookup(COOKIESPEC_REGISTRY); return cookieSpecFactoryLookup;
} }
public void setCookieSpecRegistry(final Lookup<CookieSpecFactory> lookup) { public void setCookieSpecRegistry(final Lookup<CookieSpecFactory> lookup) {
setAttribute(COOKIESPEC_REGISTRY, lookup); this.cookieSpecFactoryLookup = lookup;
} }
public Lookup<AuthSchemeFactory> getAuthSchemeRegistry() { public Lookup<AuthSchemeFactory> getAuthSchemeRegistry() {
return getLookup(AUTHSCHEME_REGISTRY); return authSchemeFactoryLookup;
} }
public void setAuthSchemeRegistry(final Lookup<AuthSchemeFactory> lookup) { public void setAuthSchemeRegistry(final Lookup<AuthSchemeFactory> lookup) {
setAttribute(AUTHSCHEME_REGISTRY, lookup); this.authSchemeFactoryLookup = lookup;
} }
public CredentialsProvider getCredentialsProvider() { public CredentialsProvider getCredentialsProvider() {
return getAttribute(CREDS_PROVIDER, CredentialsProvider.class); return credentialsProvider;
} }
public void setCredentialsProvider(final CredentialsProvider credentialsProvider) { public void setCredentialsProvider(final CredentialsProvider credentialsProvider) {
setAttribute(CREDS_PROVIDER, credentialsProvider); this.credentialsProvider = credentialsProvider;
} }
public AuthCache getAuthCache() { public AuthCache getAuthCache() {
return getAttribute(AUTH_CACHE, AuthCache.class); return authCache;
} }
public void setAuthCache(final AuthCache authCache) { public void setAuthCache(final AuthCache authCache) {
setAttribute(AUTH_CACHE, authCache); this.authCache = authCache;
} }
/** /**
* @since 5.0 * @since 5.0
*/ */
@SuppressWarnings("unchecked")
public Map<HttpHost, AuthExchange> getAuthExchanges() { public Map<HttpHost, AuthExchange> getAuthExchanges() {
Map<HttpHost, AuthExchange> map = (Map<HttpHost, AuthExchange>) getAttribute(AUTH_EXCHANGE_MAP); if (authExchangeMap == null) {
if (map == null) { authExchangeMap = new HashMap<>();
map = new HashMap<>();
setAttribute(AUTH_EXCHANGE_MAP, map);
} }
return map; return authExchangeMap;
} }
/** /**
* @since 5.0 * @since 5.0
*/ */
public AuthExchange getAuthExchange(final HttpHost host) { public AuthExchange getAuthExchange(final HttpHost host) {
final Map<HttpHost, AuthExchange> authExchangeMap = getAuthExchanges(); return getAuthExchanges().computeIfAbsent(host, k -> new AuthExchange());
AuthExchange authExchange = authExchangeMap.get(host);
if (authExchange == null) {
authExchange = new AuthExchange();
authExchangeMap.put(host, authExchange);
}
return authExchange;
} }
/** /**
* @since 5.0 * @since 5.0
*/ */
public void setAuthExchange(final HttpHost host, final AuthExchange authExchange) { public void setAuthExchange(final HttpHost host, final AuthExchange authExchange) {
final Map<HttpHost, AuthExchange> authExchangeMap = getAuthExchanges(); getAuthExchanges().put(host, authExchange);
authExchangeMap.put(host, authExchange);
} }
/** /**
@ -257,43 +328,143 @@ public void setAuthExchange(final HttpHost host, final AuthExchange authExchange
public void resetAuthExchange(final HttpHost host, final AuthScheme authScheme) { public void resetAuthExchange(final HttpHost host, final AuthScheme authScheme) {
final AuthExchange authExchange = new AuthExchange(); final AuthExchange authExchange = new AuthExchange();
authExchange.select(authScheme); authExchange.select(authScheme);
final Map<HttpHost, AuthExchange> authExchangeMap = getAuthExchanges(); getAuthExchanges().put(host, authExchange);
authExchangeMap.put(host, authExchange);
} }
/**
* @deprecated Use {@link #getUserToken()}
*/
@Deprecated
@SuppressWarnings("unchecked")
public <T> T getUserToken(final Class<T> clazz) { public <T> T getUserToken(final Class<T> clazz) {
return getAttribute(USER_TOKEN, clazz); return (T) getUserToken();
} }
public Object getUserToken() { public Object getUserToken() {
return getAttribute(USER_TOKEN); return userToken;
} }
public void setUserToken(final Object obj) { public void setUserToken(final Object userToken) {
setAttribute(USER_TOKEN, obj); this.userToken = userToken;
} }
public RequestConfig getRequestConfig() { public RequestConfig getRequestConfig() {
final RequestConfig config = getAttribute(REQUEST_CONFIG, RequestConfig.class); return requestConfig;
return config != null ? config : RequestConfig.DEFAULT;
} }
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 * @since 5.1
*/ */
public String getExchangeId() { public String getExchangeId() {
return getAttribute(EXCHANGE_ID, String.class); return exchangeId;
} }
/** /**
* @since 5.1 * @since 5.1
*/ */
public void setExchangeId(final String id) { public void setExchangeId(final String exchangeId) {
setAttribute(EXCHANGE_ID, id); 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();
}
} }
} }

View File

@ -33,13 +33,13 @@
import java.util.List; import java.util.List;
import org.apache.hc.client5.http.RouteInfo; 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.config.RequestConfig;
import org.apache.hc.client5.http.cookie.Cookie; import org.apache.hc.client5.http.cookie.Cookie;
import org.apache.hc.client5.http.cookie.CookieOrigin; import org.apache.hc.client5.http.cookie.CookieOrigin;
import org.apache.hc.client5.http.cookie.CookieSpec; import org.apache.hc.client5.http.cookie.CookieSpec;
import org.apache.hc.client5.http.cookie.CookieSpecFactory; import org.apache.hc.client5.http.cookie.CookieSpecFactory;
import org.apache.hc.client5.http.cookie.CookieStore; 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.Contract;
import org.apache.hc.core5.annotation.ThreadingBehavior; import org.apache.hc.core5.annotation.ThreadingBehavior;
import org.apache.hc.core5.http.EntityDetails; import org.apache.hc.core5.http.EntityDetails;
@ -90,7 +90,7 @@ public void process(final HttpRequest request, final EntityDetails entity, final
return; return;
} }
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
// Obtain cookie store // Obtain cookie store
@ -120,7 +120,7 @@ public void process(final HttpRequest request, final EntityDetails entity, final
return; return;
} }
final RequestConfig config = clientContext.getRequestConfig(); final RequestConfig config = clientContext.getRequestConfigOrDefault();
String cookieSpecName = config.getCookieSpec(); String cookieSpecName = config.getCookieSpec();
if (cookieSpecName == null) { if (cookieSpecName == null) {
cookieSpecName = StandardCookieSpec.STRICT; cookieSpecName = StandardCookieSpec.STRICT;
@ -190,8 +190,8 @@ public void process(final HttpRequest request, final EntityDetails entity, final
// Stick the CookieSpec and CookieOrigin instances to the HTTP context // Stick the CookieSpec and CookieOrigin instances to the HTTP context
// so they could be obtained by the response interceptor // so they could be obtained by the response interceptor
context.setAttribute(HttpClientContext.COOKIE_SPEC, cookieSpec); clientContext.setCookieSpec(cookieSpec);
context.setAttribute(HttpClientContext.COOKIE_ORIGIN, cookieOrigin); clientContext.setCookieOrigin(cookieOrigin);
} }
} }

View File

@ -72,7 +72,7 @@ public void process(final HttpRequest request, final EntityDetails entity, final
Args.notNull(request, "HTTP request"); Args.notNull(request, "HTTP request");
Args.notNull(context, "HTTP context"); Args.notNull(context, "HTTP context");
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
final AuthCache authCache = clientContext.getAuthCache(); final AuthCache authCache = clientContext.getAuthCache();

View File

@ -70,7 +70,7 @@ public void process(final HttpRequest request, final EntityDetails entity, final
return; return;
} }
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
// Obtain the client connection (required) // Obtain the client connection (required)

View File

@ -66,12 +66,12 @@ public void process(final HttpRequest request, final EntityDetails entity, final
Args.notNull(request, "HTTP request"); Args.notNull(request, "HTTP request");
if (!request.containsHeader(HttpHeaders.EXPECT)) { 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(); final ProtocolVersion version = request.getVersion() != null ? request.getVersion() : clientContext.getProtocolVersion();
// Do not send the expect header if request body is known to be empty // Do not send the expect header if request body is known to be empty
if (entity != null if (entity != null
&& entity.getContentLength() != 0 && !version.lessEquals(HttpVersion.HTTP_1_0)) { && entity.getContentLength() != 0 && !version.lessEquals(HttpVersion.HTTP_1_0)) {
final RequestConfig config = clientContext.getRequestConfig(); final RequestConfig config = clientContext.getRequestConfigOrDefault();
if (config.isExpectContinueEnabled()) { if (config.isExpectContinueEnabled()) {
request.addHeader(HttpHeaders.EXPECT, HeaderElements.CONTINUE); request.addHeader(HttpHeaders.EXPECT, HeaderElements.CONTINUE);
} }

View File

@ -63,8 +63,8 @@ public void process(
Args.notNull(request, "HTTP request"); Args.notNull(request, "HTTP request");
Args.notNull(context, "HTTP context"); Args.notNull(context, "HTTP context");
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final RequestConfig requestConfig = clientContext.getRequestConfig(); final RequestConfig requestConfig = clientContext.getRequestConfigOrDefault();
if (requestConfig.isProtocolUpgradeEnabled()) { if (requestConfig.isProtocolUpgradeEnabled()) {
final ProtocolVersion version = request.getVersion() != null ? request.getVersion() : clientContext.getProtocolVersion(); final ProtocolVersion version = request.getVersion() != null ? request.getVersion() : clientContext.getProtocolVersion();
if (!request.containsHeader(HttpHeaders.UPGRADE) && version.getMajor() == 1 && version.getMinor() >= 1) { if (!request.containsHeader(HttpHeaders.UPGRADE) && version.getMajor() == 1 && version.getMinor() >= 1) {

View File

@ -77,7 +77,7 @@ public void process(final HttpResponse response, final EntityDetails entity, fin
Args.notNull(response, "HTTP request"); Args.notNull(response, "HTTP request");
Args.notNull(context, "HTTP context"); Args.notNull(context, "HTTP context");
final HttpClientContext clientContext = HttpClientContext.adapt(context); final HttpClientContext clientContext = HttpClientContext.cast(context);
final String exchangeId = clientContext.getExchangeId(); final String exchangeId = clientContext.getExchangeId();
// Obtain actual CookieSpec instance // Obtain actual CookieSpec instance

View File

@ -74,7 +74,7 @@ public String getName() {
private AuthExchange authExchange; private AuthExchange authExchange;
private CacheableAuthState authScheme; private CacheableAuthState authScheme;
private HttpContext context; private HttpClientContext context;
private HttpHost defaultHost; private HttpHost defaultHost;
private CredentialsProvider credentialsProvider; private CredentialsProvider credentialsProvider;
private Lookup<AuthSchemeFactory> authSchemeRegistry; private Lookup<AuthSchemeFactory> authSchemeRegistry;
@ -89,12 +89,12 @@ public void setUp() throws Exception {
this.context = new HttpClientContext(); this.context = new HttpClientContext();
this.defaultHost = new HttpHost("localhost", 80); this.defaultHost = new HttpHost("localhost", 80);
this.credentialsProvider = Mockito.mock(CredentialsProvider.class); this.credentialsProvider = Mockito.mock(CredentialsProvider.class);
this.context.setAttribute(HttpClientContext.CREDS_PROVIDER, this.credentialsProvider); this.context.setCredentialsProvider(this.credentialsProvider);
this.authSchemeRegistry = RegistryBuilder.<AuthSchemeFactory>create() this.authSchemeRegistry = RegistryBuilder.<AuthSchemeFactory>create()
.register(StandardAuthScheme.BASIC, BasicSchemeFactory.INSTANCE) .register(StandardAuthScheme.BASIC, BasicSchemeFactory.INSTANCE)
.register(StandardAuthScheme.DIGEST, DigestSchemeFactory.INSTANCE) .register(StandardAuthScheme.DIGEST, DigestSchemeFactory.INSTANCE)
.build(); .build();
this.context.setAttribute(HttpClientContext.AUTHSCHEME_REGISTRY, this.authSchemeRegistry); this.context.setAuthSchemeRegistry(this.authSchemeRegistry);
this.httpAuthenticator = new HttpAuthenticator(); this.httpAuthenticator = new HttpAuthenticator();
} }

View File

@ -225,7 +225,7 @@ public void testContentEncodingRequestParameter() throws Exception {
.setContentCompressionEnabled(false) .setContentCompressionEnabled(false)
.build(); .build();
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config); context.setRequestConfig(config);
Mockito.when(execChain.proceed(request, scope)).thenReturn(response); Mockito.when(execChain.proceed(request, scope)).thenReturn(response);

View File

@ -155,7 +155,7 @@ public void testExecuteDefaultContext() throws Exception {
Assertions.assertSame(authSchemeRegistry, context.getAuthSchemeRegistry()); Assertions.assertSame(authSchemeRegistry, context.getAuthSchemeRegistry());
Assertions.assertSame(cookieStore, context.getCookieStore()); Assertions.assertSame(cookieStore, context.getCookieStore());
Assertions.assertSame(credentialsProvider, context.getCredentialsProvider()); Assertions.assertSame(credentialsProvider, context.getCredentialsProvider());
Assertions.assertSame(defaultConfig, context.getRequestConfig()); Assertions.assertSame(defaultConfig, context.getRequestConfigOrDefault());
} }
@Test @Test
@ -176,7 +176,7 @@ public void testExecuteRequestConfig() throws Exception {
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
client.execute(httpget, context, response -> null); client.execute(httpget, context, response -> null);
Assertions.assertSame(config, context.getRequestConfig()); Assertions.assertSame(config, context.getRequestConfigOrDefault());
} }
@Test @Test
@ -212,7 +212,7 @@ public void testExecuteLocalContext() throws Exception {
Assertions.assertSame(localAuthSchemeRegistry, context.getAuthSchemeRegistry()); Assertions.assertSame(localAuthSchemeRegistry, context.getAuthSchemeRegistry());
Assertions.assertSame(localCookieStore, context.getCookieStore()); Assertions.assertSame(localCookieStore, context.getCookieStore());
Assertions.assertSame(localCredentialsProvider, context.getCredentialsProvider()); Assertions.assertSame(localCredentialsProvider, context.getCredentialsProvider());
Assertions.assertSame(localConfig, context.getRequestConfig()); Assertions.assertSame(localConfig, context.getRequestConfigOrDefault());
} }
@Test @Test

View File

@ -106,9 +106,9 @@ public void testAddCookies() throws Exception {
final HttpRoute route = new HttpRoute(this.target, null, false); final HttpRoute route = new HttpRoute(this.target, null, false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -133,9 +133,9 @@ public void testCookiesForConnectRequest() throws Exception {
final HttpRoute route = new HttpRoute(this.target, null, false); final HttpRoute route = new HttpRoute(this.target, null, false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -152,9 +152,9 @@ public void testNoCookieStore() throws Exception {
final HttpRoute route = new HttpRoute(this.target, null, false); final HttpRoute route = new HttpRoute(this.target, null, false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, null); context.setCookieStore(null);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -171,9 +171,9 @@ public void testNoCookieSpecRegistry() throws Exception {
final HttpRoute route = new HttpRoute(this.target, null, false); final HttpRoute route = new HttpRoute(this.target, null, false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, null); context.setCookieSpecRegistry(null);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -189,8 +189,8 @@ public void testNoHttpConnection() throws Exception {
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setEndpointDetails(null); context.setEndpointDetails(null);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -209,10 +209,10 @@ public void testAddCookiesUsingExplicitCookieSpec() throws Exception {
final HttpRoute route = new HttpRoute(this.target, null, false); final HttpRoute route = new HttpRoute(this.target, null, false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config); context.setRequestConfig(config);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -233,9 +233,9 @@ public void testAuthScopeInvalidRequestURI() throws Exception {
final HttpRoute route = new HttpRoute(this.target, null, false); final HttpRoute route = new HttpRoute(this.target, null, false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -249,9 +249,9 @@ public void testAuthScopeRemotePortWhenDirect() throws Exception {
final HttpRoute route = new HttpRoute(new HttpHost("localhost.local", 1234), null, false); final HttpRoute route = new HttpRoute(new HttpHost("localhost.local", 1234), null, false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -273,9 +273,9 @@ public void testAuthDefaultHttpPortWhenProxy() throws Exception {
new HttpHost("localhost.local", 80), null, new HttpHost("localhost", 8888), false); new HttpHost("localhost.local", 80), null, new HttpHost("localhost", 8888), false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -298,9 +298,9 @@ public void testAuthDefaultHttpsPortWhenProxy() throws Exception {
new HttpHost("http", "localhost", 8888), true, TunnelType.TUNNELLED, LayerType.LAYERED); new HttpHost("http", "localhost", 8888), true, TunnelType.TUNNELLED, LayerType.LAYERED);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -330,9 +330,9 @@ public void testExcludeExpiredCookies() throws Exception {
final HttpRoute route = new HttpRoute(this.target, null, false); final HttpRoute route = new HttpRoute(this.target, null, false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
// Make sure the third cookie expires // Make sure the third cookie expires
Thread.sleep(200); Thread.sleep(200);
@ -361,9 +361,9 @@ public void testNoMatchingCookies() throws Exception {
final HttpRoute route = new HttpRoute(this.target, null, false); final HttpRoute route = new HttpRoute(this.target, null, false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -396,9 +396,9 @@ public void testCookieOrder() throws Exception {
final HttpRoute route = new HttpRoute(this.target, null, false); final HttpRoute route = new HttpRoute(this.target, null, false);
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
context.setAttribute(HttpClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); context.setCookieSpecRegistry(this.cookieSpecRegistry);
final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE; final HttpRequestInterceptor interceptor = RequestAddCookies.INSTANCE;
interceptor.process(request, null, context); interceptor.process(request, null, context);

View File

@ -68,7 +68,7 @@ public void testConnectionKeepAliveForDirectRequests() throws Exception {
final HttpHost target = new HttpHost("http", "localhost", 80); final HttpHost target = new HttpHost("http", "localhost", 80);
final HttpRoute route = new HttpRoute(target, null, false); final HttpRoute route = new HttpRoute(target, null, false);
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
final HttpRequestInterceptor interceptor = new RequestClientConnControl(); final HttpRequestInterceptor interceptor = new RequestClientConnControl();
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -88,7 +88,7 @@ public void testConnectionKeepAliveForTunneledRequests() throws Exception {
final HttpRoute route = new HttpRoute(target, null, proxy, true, final HttpRoute route = new HttpRoute(target, null, proxy, true,
TunnelType.TUNNELLED, LayerType.LAYERED); TunnelType.TUNNELLED, LayerType.LAYERED);
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
final HttpRequestInterceptor interceptor = new RequestClientConnControl(); final HttpRequestInterceptor interceptor = new RequestClientConnControl();
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -108,7 +108,7 @@ public void testProxyConnectionKeepAliveForRequestsOverProxy() throws Exception
final HttpRoute route = new HttpRoute(target, null, proxy, false, final HttpRoute route = new HttpRoute(target, null, proxy, false,
TunnelType.PLAIN, LayerType.PLAIN); TunnelType.PLAIN, LayerType.PLAIN);
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
final HttpRequestInterceptor interceptor = new RequestClientConnControl(); final HttpRequestInterceptor interceptor = new RequestClientConnControl();
interceptor.process(request, null, context); interceptor.process(request, null, context);
@ -128,7 +128,7 @@ public void testPreserveCustomConnectionHeader() throws Exception {
final HttpRoute route = new HttpRoute(target, null, proxy, true, final HttpRoute route = new HttpRoute(target, null, proxy, true,
TunnelType.TUNNELLED, LayerType.LAYERED); TunnelType.TUNNELLED, LayerType.LAYERED);
context.setAttribute(HttpClientContext.HTTP_ROUTE, route); context.setRoute(route);
final HttpRequestInterceptor interceptor = new RequestClientConnControl(); final HttpRequestInterceptor interceptor = new RequestClientConnControl();
interceptor.process(request, null, context); interceptor.process(request, null, context);

View File

@ -46,7 +46,7 @@ public class TestRequestExpectContinue {
public void testRequestExpectContinueGenerated() throws Exception { public void testRequestExpectContinueGenerated() throws Exception {
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build(); final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build();
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config); context.setRequestConfig(config);
final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/"); final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
final String s = "whatever"; final String s = "whatever";
final StringEntity entity = new StringEntity(s, StandardCharsets.US_ASCII); final StringEntity entity = new StringEntity(s, StandardCharsets.US_ASCII);
@ -62,7 +62,7 @@ public void testRequestExpectContinueGenerated() throws Exception {
public void testRequestExpectContinueNotGenerated() throws Exception { public void testRequestExpectContinueNotGenerated() throws Exception {
final HttpClientContext context = new HttpClientContext(); final HttpClientContext context = new HttpClientContext();
final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(false).build(); final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(false).build();
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config); context.setRequestConfig(config);
final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/"); final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
final String s = "whatever"; final String s = "whatever";
final StringEntity entity = new StringEntity(s, StandardCharsets.US_ASCII); final StringEntity entity = new StringEntity(s, StandardCharsets.US_ASCII);
@ -77,7 +77,7 @@ public void testRequestExpectContinueNotGenerated() throws Exception {
public void testRequestExpectContinueHTTP10() throws Exception { public void testRequestExpectContinueHTTP10() throws Exception {
final HttpClientContext context = new HttpClientContext(); final HttpClientContext context = new HttpClientContext();
final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build(); final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build();
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config); context.setRequestConfig(config);
final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/"); final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
request.setVersion(HttpVersion.HTTP_1_0); request.setVersion(HttpVersion.HTTP_1_0);
final String s = "whatever"; final String s = "whatever";
@ -93,7 +93,7 @@ public void testRequestExpectContinueHTTP10() throws Exception {
public void testRequestExpectContinueZeroContent() throws Exception { public void testRequestExpectContinueZeroContent() throws Exception {
final HttpClientContext context = new HttpClientContext(); final HttpClientContext context = new HttpClientContext();
final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build(); final RequestConfig config = RequestConfig.custom().setExpectContinueEnabled(true).build();
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config); context.setRequestConfig(config);
final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/"); final ClassicHttpRequest request = new BasicClassicHttpRequest("POST", "/");
final String s = ""; final String s = "";
final StringEntity entity = new StringEntity(s, StandardCharsets.US_ASCII); final StringEntity entity = new StringEntity(s, StandardCharsets.US_ASCII);

View File

@ -76,9 +76,9 @@ public void testParseCookies() throws Exception {
response.addHeader("Set-Cookie", "name1=value1"); response.addHeader("Set-Cookie", "name1=value1");
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.COOKIE_ORIGIN, this.cookieOrigin); context.setCookieOrigin(this.cookieOrigin);
context.setAttribute(HttpClientContext.COOKIE_SPEC, this.cookieSpec); context.setCookieSpec(this.cookieSpec);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE; final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE;
interceptor.process(response, null, context); interceptor.process(response, null, context);
@ -99,9 +99,9 @@ public void testNoCookieOrigin() throws Exception {
response.addHeader("Set-Cookie", "name1=value1"); response.addHeader("Set-Cookie", "name1=value1");
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.COOKIE_ORIGIN, null); context.setCookieOrigin(null);
context.setAttribute(HttpClientContext.COOKIE_SPEC, this.cookieSpec); context.setCookieSpec(this.cookieSpec);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE; final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE;
interceptor.process(response, null, context); interceptor.process(response, null, context);
@ -117,9 +117,9 @@ public void testNoCookieSpec() throws Exception {
response.addHeader("Set-Cookie", "name1=value1"); response.addHeader("Set-Cookie", "name1=value1");
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.COOKIE_ORIGIN, this.cookieOrigin); context.setCookieOrigin(this.cookieOrigin);
context.setAttribute(HttpClientContext.COOKIE_SPEC, null); context.setCookieSpec(null);
context.setAttribute(HttpClientContext.COOKIE_STORE, this.cookieStore); context.setCookieStore(this.cookieStore);
final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE; final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE;
interceptor.process(response, null, context); interceptor.process(response, null, context);
@ -135,9 +135,9 @@ public void testNoCookieStore() throws Exception {
response.addHeader("Set-Cookie", "name1=value1"); response.addHeader("Set-Cookie", "name1=value1");
final HttpClientContext context = HttpClientContext.create(); final HttpClientContext context = HttpClientContext.create();
context.setAttribute(HttpClientContext.COOKIE_ORIGIN, this.cookieOrigin); context.setCookieOrigin(this.cookieOrigin);
context.setAttribute(HttpClientContext.COOKIE_SPEC, this.cookieSpec); context.setCookieSpec(this.cookieSpec);
context.setAttribute(HttpClientContext.COOKIE_STORE, null); context.setCookieStore(null);
final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE; final HttpResponseInterceptor interceptor = ResponseProcessCookies.INSTANCE;
interceptor.process(response, null, context); interceptor.process(response, null, context);