mirror of
https://github.com/apache/httpcomponents-client.git
synced 2025-02-09 19:45:48 +00:00
HttpClientContext to use instance variables for standard attributes
This commit is contained in:
parent
f2b9a374d8
commit
762b18fe69
@ -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) {
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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(
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
@ -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>() {
|
||||||
|
@ -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;
|
||||||
|
@ -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();
|
||||||
|
@ -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()) {
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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()) {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
@ -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()) {
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
|
@ -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.
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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 + "'");
|
||||||
|
@ -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) {
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user