|
|
|
@ -40,15 +40,15 @@ import org.springframework.util.concurrent.SuccessCallback; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* {@link ClientHttpRequest} implementation that uses Apache HttpComponents HttpClient to |
|
|
|
* {@link ClientHttpRequest} implementation based on |
|
|
|
* execute requests. |
|
|
|
* Apache HttpComponents HttpAsyncClient. |
|
|
|
* |
|
|
|
* |
|
|
|
* <p>Created via the {@link org.springframework.http.client.HttpComponentsClientHttpRequestFactory}. |
|
|
|
* <p>Created via the {@link HttpComponentsClientHttpRequestFactory}. |
|
|
|
* |
|
|
|
* |
|
|
|
* @author Oleg Kalnichevski |
|
|
|
* @author Oleg Kalnichevski |
|
|
|
* @author Arjen Poutsma |
|
|
|
* @author Arjen Poutsma |
|
|
|
* @since 4.0 |
|
|
|
* @since 4.0 |
|
|
|
* @see org.springframework.http.client.HttpComponentsClientHttpRequestFactory#createRequest |
|
|
|
* @see HttpComponentsClientHttpRequestFactory#createRequest |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
final class HttpComponentsAsyncClientHttpRequest extends AbstractBufferingAsyncClientHttpRequest { |
|
|
|
final class HttpComponentsAsyncClientHttpRequest extends AbstractBufferingAsyncClientHttpRequest { |
|
|
|
|
|
|
|
|
|
|
|
@ -59,10 +59,10 @@ final class HttpComponentsAsyncClientHttpRequest extends AbstractBufferingAsyncC |
|
|
|
private final HttpContext httpContext; |
|
|
|
private final HttpContext httpContext; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HttpComponentsAsyncClientHttpRequest(HttpAsyncClient httpClient, HttpUriRequest httpRequest, HttpContext httpContext) { |
|
|
|
HttpComponentsAsyncClientHttpRequest(HttpAsyncClient client, HttpUriRequest request, HttpContext context) { |
|
|
|
this.httpClient = httpClient; |
|
|
|
this.httpClient = client; |
|
|
|
this.httpRequest = httpRequest; |
|
|
|
this.httpRequest = request; |
|
|
|
this.httpContext = httpContext; |
|
|
|
this.httpContext = context; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -92,26 +92,23 @@ final class HttpComponentsAsyncClientHttpRequest extends AbstractBufferingAsyncC |
|
|
|
entityEnclosingRequest.setEntity(requestEntity); |
|
|
|
entityEnclosingRequest.setEntity(requestEntity); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
final HttpResponseFutureCallback callback = new HttpResponseFutureCallback(this.httpRequest); |
|
|
|
HttpResponseFutureCallback callback = new HttpResponseFutureCallback(this.httpRequest); |
|
|
|
final Future<HttpResponse> futureResponse = |
|
|
|
Future<HttpResponse> futureResponse = this.httpClient.execute(this.httpRequest, this.httpContext, callback); |
|
|
|
this.httpClient.execute(this.httpRequest, this.httpContext, callback); |
|
|
|
|
|
|
|
return new ClientHttpResponseFuture(futureResponse, callback); |
|
|
|
return new ClientHttpResponseFuture(futureResponse, callback); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static class HttpResponseFutureCallback implements FutureCallback<HttpResponse> { |
|
|
|
private static class HttpResponseFutureCallback implements FutureCallback<HttpResponse> { |
|
|
|
|
|
|
|
|
|
|
|
private final ListenableFutureCallbackRegistry<ClientHttpResponse> callbacks = |
|
|
|
|
|
|
|
new ListenableFutureCallbackRegistry<>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final HttpUriRequest httpRequest; |
|
|
|
private final HttpUriRequest httpRequest; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private final ListenableFutureCallbackRegistry<ClientHttpResponse> callbacks = |
|
|
|
|
|
|
|
new ListenableFutureCallbackRegistry<>(); |
|
|
|
|
|
|
|
|
|
|
|
public HttpResponseFutureCallback(HttpUriRequest httpRequest) { |
|
|
|
public HttpResponseFutureCallback(HttpUriRequest httpRequest) { |
|
|
|
this.httpRequest = httpRequest; |
|
|
|
this.httpRequest = httpRequest; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void addCallback(ListenableFutureCallback<? super ClientHttpResponse> callback) { |
|
|
|
public void addCallback(ListenableFutureCallback<? super ClientHttpResponse> callback) { |
|
|
|
this.callbacks.addCallback(callback); |
|
|
|
this.callbacks.addCallback(callback); |
|
|
|
} |
|
|
|
} |
|
|
|
|