Fixed handling of request configuration by async clients
This commit is contained in:
parent
7c0a1127be
commit
1577356f37
|
@ -42,8 +42,6 @@ import org.apache.hc.client5.http.CircularRedirectException;
|
||||||
import org.apache.hc.client5.http.RedirectException;
|
import org.apache.hc.client5.http.RedirectException;
|
||||||
import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
|
import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
|
||||||
import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
|
import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
|
||||||
import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
|
|
||||||
import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
|
|
||||||
import org.apache.hc.client5.http.config.RequestConfig;
|
import org.apache.hc.client5.http.config.RequestConfig;
|
||||||
import org.apache.hc.client5.http.cookie.BasicCookieStore;
|
import org.apache.hc.client5.http.cookie.BasicCookieStore;
|
||||||
import org.apache.hc.client5.http.cookie.CookieStore;
|
import org.apache.hc.client5.http.cookie.CookieStore;
|
||||||
|
@ -455,9 +453,9 @@ public class TestAsyncRedirects extends IntegrationTestBase {
|
||||||
.setCircularRedirectsAllowed(true)
|
.setCircularRedirectsAllowed(true)
|
||||||
.setMaxRedirects(5).build();
|
.setMaxRedirects(5).build();
|
||||||
try {
|
try {
|
||||||
final Future<SimpleHttpResponse> future = httpclient.execute(
|
final SimpleHttpRequest request = SimpleHttpRequest.get(target, "/circular-oldlocation/");
|
||||||
SimpleRequestProducer.create(SimpleHttpRequest.get(target, "/circular-oldlocation/"), config),
|
request.setConfig(config);
|
||||||
SimpleResponseConsumer.create(), null);
|
final Future<SimpleHttpResponse> future = httpclient.execute(request, null);
|
||||||
future.get();
|
future.get();
|
||||||
} catch (final ExecutionException e) {
|
} catch (final ExecutionException e) {
|
||||||
Assert.assertTrue(e.getCause() instanceof RedirectException);
|
Assert.assertTrue(e.getCause() instanceof RedirectException);
|
||||||
|
@ -481,9 +479,9 @@ public class TestAsyncRedirects extends IntegrationTestBase {
|
||||||
.setCircularRedirectsAllowed(false)
|
.setCircularRedirectsAllowed(false)
|
||||||
.build();
|
.build();
|
||||||
try {
|
try {
|
||||||
final Future<SimpleHttpResponse> future = httpclient.execute(
|
final SimpleHttpRequest request = SimpleHttpRequest.get(target, "/circular-oldlocation/");
|
||||||
SimpleRequestProducer.create(SimpleHttpRequest.get(target, "/circular-oldlocation/"), config),
|
request.setConfig(config);
|
||||||
SimpleResponseConsumer.create(), null);
|
final Future<SimpleHttpResponse> future = httpclient.execute(request, null);
|
||||||
future.get();
|
future.get();
|
||||||
} catch (final ExecutionException e) {
|
} catch (final ExecutionException e) {
|
||||||
Assert.assertTrue(e.getCause() instanceof CircularRedirectException);
|
Assert.assertTrue(e.getCause() instanceof CircularRedirectException);
|
||||||
|
|
|
@ -35,8 +35,6 @@ import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
|
import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
|
||||||
import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
|
import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
|
||||||
import org.apache.hc.client5.http.async.methods.SimpleRequestProducer;
|
|
||||||
import org.apache.hc.client5.http.async.methods.SimpleResponseConsumer;
|
|
||||||
import org.apache.hc.client5.http.auth.AuthChallenge;
|
import org.apache.hc.client5.http.auth.AuthChallenge;
|
||||||
import org.apache.hc.client5.http.auth.AuthScheme;
|
import org.apache.hc.client5.http.auth.AuthScheme;
|
||||||
import org.apache.hc.client5.http.auth.AuthSchemeProvider;
|
import org.apache.hc.client5.http.auth.AuthSchemeProvider;
|
||||||
|
@ -45,7 +43,6 @@ import org.apache.hc.client5.http.auth.ChallengeType;
|
||||||
import org.apache.hc.client5.http.auth.Credentials;
|
import org.apache.hc.client5.http.auth.Credentials;
|
||||||
import org.apache.hc.client5.http.auth.CredentialsStore;
|
import org.apache.hc.client5.http.auth.CredentialsStore;
|
||||||
import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
|
import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
|
||||||
import org.apache.hc.client5.http.classic.methods.HttpGet;
|
|
||||||
import org.apache.hc.client5.http.config.RequestConfig;
|
import org.apache.hc.client5.http.config.RequestConfig;
|
||||||
import org.apache.hc.client5.http.impl.DefaultAuthenticationStrategy;
|
import org.apache.hc.client5.http.impl.DefaultAuthenticationStrategy;
|
||||||
import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
|
import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
|
||||||
|
@ -547,12 +544,9 @@ public class TestClientAuthentication extends IntegrationTestBase {
|
||||||
context.setCredentialsProvider(credsProvider);
|
context.setCredentialsProvider(credsProvider);
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
final HttpGet httpget = new HttpGet("/");
|
final SimpleHttpRequest request = SimpleHttpRequest.get(target, "/");
|
||||||
httpget.setConfig(config);
|
request.setConfig(config);
|
||||||
final Future<SimpleHttpResponse> future = httpclient.execute(
|
final Future<SimpleHttpResponse> future = httpclient.execute(request, context, null);
|
||||||
SimpleRequestProducer.create(SimpleHttpRequest.get(target, "/"), config),
|
|
||||||
SimpleResponseConsumer.create(),
|
|
||||||
context, null);
|
|
||||||
final SimpleHttpResponse response = future.get();
|
final SimpleHttpResponse response = future.get();
|
||||||
Assert.assertNotNull(response);
|
Assert.assertNotNull(response);
|
||||||
Assert.assertEquals(HttpStatus.SC_OK, response.getCode());
|
Assert.assertEquals(HttpStatus.SC_OK, response.getCode());
|
||||||
|
|
|
@ -66,7 +66,7 @@ public class AsyncClientConnectionEviction {
|
||||||
|
|
||||||
final SimpleHttpRequest request = SimpleHttpRequest.get(target, "/");
|
final SimpleHttpRequest request = SimpleHttpRequest.get(target, "/");
|
||||||
final Future<SimpleHttpResponse> future1 = client.execute(
|
final Future<SimpleHttpResponse> future1 = client.execute(
|
||||||
SimpleRequestProducer.create(request, null),
|
SimpleRequestProducer.create(request),
|
||||||
SimpleResponseConsumer.create(),
|
SimpleResponseConsumer.create(),
|
||||||
new FutureCallback<SimpleHttpResponse>() {
|
new FutureCallback<SimpleHttpResponse>() {
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ public class AsyncClientConnectionEviction {
|
||||||
// Previous connection should get evicted from the pool by now
|
// Previous connection should get evicted from the pool by now
|
||||||
|
|
||||||
final Future<SimpleHttpResponse> future2 = client.execute(
|
final Future<SimpleHttpResponse> future2 = client.execute(
|
||||||
SimpleRequestProducer.create(request, null),
|
SimpleRequestProducer.create(request),
|
||||||
SimpleResponseConsumer.create(),
|
SimpleResponseConsumer.create(),
|
||||||
new FutureCallback<SimpleHttpResponse>() {
|
new FutureCallback<SimpleHttpResponse>() {
|
||||||
|
|
||||||
|
|
|
@ -98,7 +98,7 @@ public class AsyncClientCustomSSL {
|
||||||
|
|
||||||
final SimpleHttpRequest request = SimpleHttpRequest.get(target, requestUri);
|
final SimpleHttpRequest request = SimpleHttpRequest.get(target, requestUri);
|
||||||
final Future<SimpleHttpResponse> future = client.execute(
|
final Future<SimpleHttpResponse> future = client.execute(
|
||||||
SimpleRequestProducer.create(request, null),
|
SimpleRequestProducer.create(request),
|
||||||
SimpleResponseConsumer.create(),
|
SimpleResponseConsumer.create(),
|
||||||
clientContext,
|
clientContext,
|
||||||
new FutureCallback<SimpleHttpResponse>() {
|
new FutureCallback<SimpleHttpResponse>() {
|
||||||
|
|
|
@ -69,7 +69,7 @@ public class AsyncClientHttp1Pipelining {
|
||||||
for (final String requestUri: requestUris) {
|
for (final String requestUri: requestUris) {
|
||||||
final SimpleHttpRequest request = SimpleHttpRequest.get(target, requestUri);
|
final SimpleHttpRequest request = SimpleHttpRequest.get(target, requestUri);
|
||||||
endpoint.execute(
|
endpoint.execute(
|
||||||
SimpleRequestProducer.create(request, null),
|
SimpleRequestProducer.create(request),
|
||||||
SimpleResponseConsumer.create(),
|
SimpleResponseConsumer.create(),
|
||||||
new FutureCallback<SimpleHttpResponse>() {
|
new FutureCallback<SimpleHttpResponse>() {
|
||||||
|
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class AsyncClientHttp2Multiplexing {
|
||||||
for (final String requestUri: requestUris) {
|
for (final String requestUri: requestUris) {
|
||||||
final SimpleHttpRequest request = SimpleHttpRequest.get(target, requestUri);
|
final SimpleHttpRequest request = SimpleHttpRequest.get(target, requestUri);
|
||||||
endpoint.execute(
|
endpoint.execute(
|
||||||
SimpleRequestProducer.create(request, null),
|
SimpleRequestProducer.create(request),
|
||||||
SimpleResponseConsumer.create(),
|
SimpleResponseConsumer.create(),
|
||||||
new FutureCallback<SimpleHttpResponse>() {
|
new FutureCallback<SimpleHttpResponse>() {
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,7 @@ public class AsyncClientTlsAlpn {
|
||||||
|
|
||||||
final SimpleHttpRequest request = SimpleHttpRequest.get(target, requestUri);
|
final SimpleHttpRequest request = SimpleHttpRequest.get(target, requestUri);
|
||||||
final Future<SimpleHttpResponse> future = client.execute(
|
final Future<SimpleHttpResponse> future = client.execute(
|
||||||
SimpleRequestProducer.create(request, null),
|
SimpleRequestProducer.create(request),
|
||||||
SimpleResponseConsumer.create(),
|
SimpleResponseConsumer.create(),
|
||||||
clientContext,
|
clientContext,
|
||||||
new FutureCallback<SimpleHttpResponse>() {
|
new FutureCallback<SimpleHttpResponse>() {
|
||||||
|
|
|
@ -43,11 +43,11 @@ import org.apache.hc.core5.http.HttpHost;
|
||||||
import org.apache.hc.core5.http.NameValuePair;
|
import org.apache.hc.core5.http.NameValuePair;
|
||||||
import org.apache.hc.core5.http.ProtocolVersion;
|
import org.apache.hc.core5.http.ProtocolVersion;
|
||||||
import org.apache.hc.core5.http.message.BasicHeader;
|
import org.apache.hc.core5.http.message.BasicHeader;
|
||||||
import org.apache.hc.core5.http.message.BasicHttpRequest;
|
|
||||||
import org.apache.hc.core5.http.message.BasicNameValuePair;
|
import org.apache.hc.core5.http.message.BasicNameValuePair;
|
||||||
import org.apache.hc.core5.http.message.HeaderGroup;
|
import org.apache.hc.core5.http.message.HeaderGroup;
|
||||||
import org.apache.hc.core5.http.nio.AsyncEntityProducer;
|
import org.apache.hc.core5.http.nio.AsyncEntityProducer;
|
||||||
import org.apache.hc.core5.http.nio.AsyncRequestProducer;
|
import org.apache.hc.core5.http.nio.AsyncRequestProducer;
|
||||||
|
import org.apache.hc.core5.http.nio.BasicRequestProducer;
|
||||||
import org.apache.hc.core5.http.nio.entity.BasicAsyncEntityProducer;
|
import org.apache.hc.core5.http.nio.entity.BasicAsyncEntityProducer;
|
||||||
import org.apache.hc.core5.http.nio.entity.StringAsyncEntityProducer;
|
import org.apache.hc.core5.http.nio.entity.StringAsyncEntityProducer;
|
||||||
import org.apache.hc.core5.net.URIBuilder;
|
import org.apache.hc.core5.net.URIBuilder;
|
||||||
|
@ -429,16 +429,17 @@ public class AsyncRequestBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final BasicHttpRequest request = host != null ?
|
final ConfigurableHttpRequest request = host != null ?
|
||||||
new BasicHttpRequest(method, host, !TextUtils.isBlank(path) ? path : "/") :
|
new ConfigurableHttpRequest(method, host, !TextUtils.isBlank(path) ? path : "/") :
|
||||||
new BasicHttpRequest(method, uri != null ? uri : URI.create("/"));
|
new ConfigurableHttpRequest(method, uri != null ? uri : URI.create("/"));
|
||||||
if (this.headergroup != null) {
|
if (this.headergroup != null) {
|
||||||
request.setHeaders(this.headergroup.getAllHeaders());
|
request.setHeaders(this.headergroup.getAllHeaders());
|
||||||
}
|
}
|
||||||
if (version != null) {
|
if (version != null) {
|
||||||
request.setVersion(version);
|
request.setVersion(version);
|
||||||
}
|
}
|
||||||
return new DefaultAsyncRequestProducer(request, entityProducerCopy, config);
|
request.setConfig(config);
|
||||||
|
return new BasicRequestProducer(request, entityProducerCopy);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,30 +24,40 @@
|
||||||
* <http://www.apache.org/>.
|
* <http://www.apache.org/>.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.apache.hc.client5.http.async.methods;
|
package org.apache.hc.client5.http.async.methods;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
import org.apache.hc.client5.http.config.Configurable;
|
import org.apache.hc.client5.http.config.Configurable;
|
||||||
import org.apache.hc.client5.http.config.RequestConfig;
|
import org.apache.hc.client5.http.config.RequestConfig;
|
||||||
import org.apache.hc.core5.http.HttpRequest;
|
import org.apache.hc.core5.http.HttpHost;
|
||||||
import org.apache.hc.core5.http.nio.AsyncEntityProducer;
|
import org.apache.hc.core5.http.message.BasicHttpRequest;
|
||||||
import org.apache.hc.core5.http.nio.BasicRequestProducer;
|
|
||||||
|
|
||||||
public class DefaultAsyncRequestProducer extends BasicRequestProducer implements Configurable {
|
public class ConfigurableHttpRequest extends BasicHttpRequest implements Configurable {
|
||||||
|
|
||||||
private final RequestConfig config;
|
private RequestConfig requestConfig;
|
||||||
|
|
||||||
public DefaultAsyncRequestProducer(final HttpRequest request, final AsyncEntityProducer entityProducer, final RequestConfig config) {
|
public ConfigurableHttpRequest(final String method, final String path) {
|
||||||
super(request, entityProducer);
|
super(method, path);
|
||||||
this.config = config;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public DefaultAsyncRequestProducer(final HttpRequest request, final AsyncEntityProducer entityProducer) {
|
public ConfigurableHttpRequest(final String method, final HttpHost host, final String path) {
|
||||||
this(request, entityProducer, null);
|
super(method, host, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ConfigurableHttpRequest(final String method, final URI requestUri) {
|
||||||
|
super(method, requestUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RequestConfig getConfig() {
|
public RequestConfig getConfig() {
|
||||||
return config;
|
return requestConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConfig(final RequestConfig requestConfig) {
|
||||||
|
this.requestConfig = requestConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,15 +31,16 @@ import java.net.URI;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
import org.apache.hc.client5.http.StandardMethods;
|
import org.apache.hc.client5.http.StandardMethods;
|
||||||
|
import org.apache.hc.client5.http.config.RequestConfig;
|
||||||
import org.apache.hc.core5.http.ContentType;
|
import org.apache.hc.core5.http.ContentType;
|
||||||
import org.apache.hc.core5.http.Header;
|
import org.apache.hc.core5.http.Header;
|
||||||
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.HttpRequest;
|
||||||
import org.apache.hc.core5.http.message.BasicHttpRequest;
|
|
||||||
import org.apache.hc.core5.util.Args;
|
import org.apache.hc.core5.util.Args;
|
||||||
|
|
||||||
public final class SimpleHttpRequest extends BasicHttpRequest {
|
public final class SimpleHttpRequest extends ConfigurableHttpRequest {
|
||||||
|
|
||||||
|
private RequestConfig requestConfig;
|
||||||
private SimpleBody body;
|
private SimpleBody body;
|
||||||
|
|
||||||
public static SimpleHttpRequest get(final URI requestUri) {
|
public static SimpleHttpRequest get(final URI requestUri) {
|
||||||
|
|
|
@ -26,20 +26,19 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.hc.client5.http.async.methods;
|
package org.apache.hc.client5.http.async.methods;
|
||||||
|
|
||||||
import org.apache.hc.client5.http.config.RequestConfig;
|
|
||||||
import org.apache.hc.core5.http.HttpRequest;
|
|
||||||
import org.apache.hc.core5.http.nio.AsyncEntityProducer;
|
import org.apache.hc.core5.http.nio.AsyncEntityProducer;
|
||||||
|
import org.apache.hc.core5.http.nio.BasicRequestProducer;
|
||||||
import org.apache.hc.core5.http.nio.entity.BasicAsyncEntityProducer;
|
import org.apache.hc.core5.http.nio.entity.BasicAsyncEntityProducer;
|
||||||
import org.apache.hc.core5.http.nio.entity.StringAsyncEntityProducer;
|
import org.apache.hc.core5.http.nio.entity.StringAsyncEntityProducer;
|
||||||
import org.apache.hc.core5.util.Args;
|
import org.apache.hc.core5.util.Args;
|
||||||
|
|
||||||
public final class SimpleRequestProducer extends DefaultAsyncRequestProducer {
|
public final class SimpleRequestProducer extends BasicRequestProducer {
|
||||||
|
|
||||||
SimpleRequestProducer(final HttpRequest request, final AsyncEntityProducer entityProducer, final RequestConfig requestConfig) {
|
SimpleRequestProducer(final SimpleHttpRequest request, final AsyncEntityProducer entityProducer) {
|
||||||
super(request, entityProducer, requestConfig);
|
super(request, entityProducer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SimpleRequestProducer create(final SimpleHttpRequest request, final RequestConfig requestConfig) {
|
public static SimpleRequestProducer create(final SimpleHttpRequest request) {
|
||||||
Args.notNull(request, "Request");
|
Args.notNull(request, "Request");
|
||||||
final SimpleBody body = request.getBody();
|
final SimpleBody body = request.getBody();
|
||||||
final AsyncEntityProducer entityProducer;
|
final AsyncEntityProducer entityProducer;
|
||||||
|
@ -52,7 +51,7 @@ public final class SimpleRequestProducer extends DefaultAsyncRequestProducer {
|
||||||
} else {
|
} else {
|
||||||
entityProducer = null;
|
entityProducer = null;
|
||||||
}
|
}
|
||||||
return new SimpleRequestProducer(request, entityProducer, requestConfig);
|
return new SimpleRequestProducer(request, entityProducer);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,7 @@ public abstract class CloseableHttpAsyncClient implements HttpAsyncClient, Close
|
||||||
final FutureCallback<SimpleHttpResponse> callback) {
|
final FutureCallback<SimpleHttpResponse> callback) {
|
||||||
Args.notNull(request, "Request");
|
Args.notNull(request, "Request");
|
||||||
final BasicFuture<SimpleHttpResponse> future = new BasicFuture<>(callback);
|
final BasicFuture<SimpleHttpResponse> future = new BasicFuture<>(callback);
|
||||||
execute(SimpleRequestProducer.create(request, null), SimpleResponseConsumer.create(), context, new FutureCallback<SimpleHttpResponse>() {
|
execute(SimpleRequestProducer.create(request), SimpleResponseConsumer.create(), context, new FutureCallback<SimpleHttpResponse>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void completed(final SimpleHttpResponse response) {
|
public void completed(final SimpleHttpResponse response) {
|
||||||
|
|
|
@ -153,15 +153,6 @@ class InternalHttpAsyncClient extends AbstractHttpAsyncClientBase {
|
||||||
final BasicFuture<T> future = new BasicFuture<>(callback);
|
final BasicFuture<T> future = new BasicFuture<>(callback);
|
||||||
try {
|
try {
|
||||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||||
|
|
||||||
RequestConfig requestConfig = null;
|
|
||||||
if (requestProducer instanceof Configurable) {
|
|
||||||
requestConfig = ((Configurable) requestProducer).getConfig();
|
|
||||||
}
|
|
||||||
if (requestConfig != null) {
|
|
||||||
clientContext.setRequestConfig(requestConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
requestProducer.sendRequest(new RequestChannel() {
|
requestProducer.sendRequest(new RequestChannel() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -169,6 +160,13 @@ class InternalHttpAsyncClient extends AbstractHttpAsyncClientBase {
|
||||||
final HttpRequest request,
|
final HttpRequest request,
|
||||||
final EntityDetails entityDetails) throws HttpException, IOException {
|
final EntityDetails entityDetails) throws HttpException, IOException {
|
||||||
|
|
||||||
|
RequestConfig requestConfig = null;
|
||||||
|
if (request instanceof Configurable) {
|
||||||
|
requestConfig = ((Configurable) request).getConfig();
|
||||||
|
}
|
||||||
|
if (requestConfig != null) {
|
||||||
|
clientContext.setRequestConfig(requestConfig);
|
||||||
|
}
|
||||||
final HttpHost target = routePlanner.determineTargetHost(request, clientContext);
|
final HttpHost target = routePlanner.determineTargetHost(request, clientContext);
|
||||||
final HttpRoute route = routePlanner.determineRoute(target, clientContext);
|
final HttpRoute route = routePlanner.determineRoute(target, clientContext);
|
||||||
final String exchangeId = String.format("ex-%08X", ExecSupport.getNextExecNumber());
|
final String exchangeId = String.format("ex-%08X", ExecSupport.getNextExecNumber());
|
||||||
|
|
|
@ -202,25 +202,25 @@ public class MinimalHttpAsyncClient extends AbstractHttpAsyncClientBase {
|
||||||
final HttpContext context,
|
final HttpContext context,
|
||||||
final FutureCallback<T> callback) {
|
final FutureCallback<T> callback) {
|
||||||
ensureRunning();
|
ensureRunning();
|
||||||
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
|
||||||
RequestConfig requestConfig = null;
|
|
||||||
if (requestProducer instanceof Configurable) {
|
|
||||||
requestConfig = ((Configurable) requestProducer).getConfig();
|
|
||||||
}
|
|
||||||
if (requestConfig != null) {
|
|
||||||
clientContext.setRequestConfig(requestConfig);
|
|
||||||
} else {
|
|
||||||
requestConfig = clientContext.getRequestConfig();
|
|
||||||
}
|
|
||||||
final ComplexFuture<T> resultFuture = new ComplexFuture<>(callback);
|
final ComplexFuture<T> resultFuture = new ComplexFuture<>(callback);
|
||||||
|
final HttpClientContext clientContext = HttpClientContext.adapt(context);
|
||||||
try {
|
try {
|
||||||
final Timeout connectTimeout = requestConfig.getConnectTimeout();
|
|
||||||
requestProducer.sendRequest(new RequestChannel() {
|
requestProducer.sendRequest(new RequestChannel() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendRequest(
|
public void sendRequest(
|
||||||
final HttpRequest request,
|
final HttpRequest request,
|
||||||
final EntityDetails entityDetails) throws HttpException, IOException {
|
final EntityDetails entityDetails) throws HttpException, IOException {
|
||||||
|
RequestConfig requestConfig = null;
|
||||||
|
if (request instanceof Configurable) {
|
||||||
|
requestConfig = ((Configurable) request).getConfig();
|
||||||
|
}
|
||||||
|
if (requestConfig != null) {
|
||||||
|
clientContext.setRequestConfig(requestConfig);
|
||||||
|
} else {
|
||||||
|
requestConfig = clientContext.getRequestConfig();
|
||||||
|
}
|
||||||
|
final Timeout connectTimeout = requestConfig.getConnectTimeout();
|
||||||
final HttpHost target = new HttpHost(request.getAuthority(), request.getScheme());
|
final HttpHost target = new HttpHost(request.getAuthority(), request.getScheme());
|
||||||
final Future<AsyncConnectionEndpoint> leaseFuture = leaseEndpoint(target, connectTimeout, clientContext,
|
final Future<AsyncConnectionEndpoint> leaseFuture = leaseEndpoint(target, connectTimeout, clientContext,
|
||||||
new FutureCallback<AsyncConnectionEndpoint>() {
|
new FutureCallback<AsyncConnectionEndpoint>() {
|
||||||
|
|
Loading…
Reference in New Issue