Browse Source
Merge in CORE/base-third from ~CLOUD.LIU/base-third:final/11.0 to final/11.0 * commit '1ea36a23f8b53a5177686d5e2ec7579ff0bd62bc': REPORT-98773 fix: 编译失败final/11.0
Cloud.Liu-刘学真
1 year ago
3 changed files with 464 additions and 464 deletions
@ -1,168 +1,168 @@
|
||||
/* |
||||
* Copyright 2002-2016 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package com.fr.third.springframework.http.client; |
||||
|
||||
import java.io.IOException; |
||||
import java.net.URI; |
||||
import java.util.concurrent.Future; |
||||
|
||||
import org.apache.http.HttpEntity; |
||||
import org.apache.http.HttpEntityEnclosingRequest; |
||||
import org.apache.http.HttpResponse; |
||||
import org.apache.http.client.methods.HttpUriRequest; |
||||
import org.apache.http.concurrent.FutureCallback; |
||||
import org.apache.http.nio.client.HttpAsyncClient; |
||||
import org.apache.http.nio.entity.NByteArrayEntity; |
||||
import org.apache.http.protocol.HttpContext; |
||||
|
||||
import com.fr.third.springframework.http.HttpHeaders; |
||||
import com.fr.third.springframework.http.HttpMethod; |
||||
import com.fr.third.springframework.util.concurrent.FailureCallback; |
||||
import com.fr.third.springframework.util.concurrent.FutureAdapter; |
||||
import com.fr.third.springframework.util.concurrent.ListenableFuture; |
||||
import com.fr.third.springframework.util.concurrent.ListenableFutureCallback; |
||||
import com.fr.third.springframework.util.concurrent.ListenableFutureCallbackRegistry; |
||||
import com.fr.third.springframework.util.concurrent.SuccessCallback; |
||||
|
||||
|
||||
/** |
||||
* {@link ClientHttpRequest} implementation based on |
||||
* Apache HttpComponents HttpAsyncClient. |
||||
* |
||||
* <p>Created via the {@link HttpComponentsClientHttpRequestFactory}. |
||||
* |
||||
* @author Oleg Kalnichevski |
||||
* @author Arjen Poutsma |
||||
* @since 4.0 |
||||
* @see HttpComponentsClientHttpRequestFactory#createRequest |
||||
*/ |
||||
final class HttpComponentsAsyncClientHttpRequest extends AbstractBufferingAsyncClientHttpRequest { |
||||
|
||||
private final HttpAsyncClient httpClient; |
||||
|
||||
private final HttpUriRequest httpRequest; |
||||
|
||||
private final HttpContext httpContext; |
||||
|
||||
|
||||
HttpComponentsAsyncClientHttpRequest(HttpAsyncClient client, HttpUriRequest request, HttpContext context) { |
||||
this.httpClient = client; |
||||
this.httpRequest = request; |
||||
this.httpContext = context; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public HttpMethod getMethod() { |
||||
return HttpMethod.resolve(this.httpRequest.getMethod()); |
||||
} |
||||
|
||||
@Override |
||||
public URI getURI() { |
||||
return this.httpRequest.getURI(); |
||||
} |
||||
|
||||
HttpContext getHttpContext() { |
||||
return this.httpContext; |
||||
} |
||||
|
||||
@Override |
||||
protected ListenableFuture<ClientHttpResponse> executeInternal(HttpHeaders headers, byte[] bufferedOutput) |
||||
throws IOException { |
||||
|
||||
HttpComponentsClientHttpRequest.addHeaders(this.httpRequest, headers); |
||||
|
||||
if (this.httpRequest instanceof HttpEntityEnclosingRequest) { |
||||
HttpEntityEnclosingRequest entityEnclosingRequest = (HttpEntityEnclosingRequest) this.httpRequest; |
||||
HttpEntity requestEntity = new NByteArrayEntity(bufferedOutput); |
||||
entityEnclosingRequest.setEntity(requestEntity); |
||||
} |
||||
|
||||
HttpResponseFutureCallback callback = new HttpResponseFutureCallback(this.httpRequest); |
||||
Future<HttpResponse> futureResponse = this.httpClient.execute(this.httpRequest, this.httpContext, callback); |
||||
return new ClientHttpResponseFuture(futureResponse, callback); |
||||
} |
||||
|
||||
|
||||
private static class HttpResponseFutureCallback implements FutureCallback<HttpResponse> { |
||||
|
||||
private final HttpUriRequest request; |
||||
|
||||
private final ListenableFutureCallbackRegistry<ClientHttpResponse> callbacks = |
||||
new ListenableFutureCallbackRegistry<ClientHttpResponse>(); |
||||
|
||||
public HttpResponseFutureCallback(HttpUriRequest request) { |
||||
this.request = request; |
||||
} |
||||
|
||||
public void addCallback(ListenableFutureCallback<? super ClientHttpResponse> callback) { |
||||
this.callbacks.addCallback(callback); |
||||
} |
||||
|
||||
public void addSuccessCallback(SuccessCallback<? super ClientHttpResponse> callback) { |
||||
this.callbacks.addSuccessCallback(callback); |
||||
} |
||||
|
||||
public void addFailureCallback(FailureCallback callback) { |
||||
this.callbacks.addFailureCallback(callback); |
||||
} |
||||
|
||||
@Override |
||||
public void completed(HttpResponse result) { |
||||
this.callbacks.success(new HttpComponentsAsyncClientHttpResponse(result)); |
||||
} |
||||
|
||||
@Override |
||||
public void failed(Exception ex) { |
||||
this.callbacks.failure(ex); |
||||
} |
||||
|
||||
@Override |
||||
public void cancelled() { |
||||
this.request.abort(); |
||||
} |
||||
} |
||||
|
||||
|
||||
private static class ClientHttpResponseFuture extends FutureAdapter<ClientHttpResponse, HttpResponse> |
||||
implements ListenableFuture<ClientHttpResponse> { |
||||
|
||||
private final HttpResponseFutureCallback callback; |
||||
|
||||
public ClientHttpResponseFuture(Future<HttpResponse> response, HttpResponseFutureCallback callback) { |
||||
super(response); |
||||
this.callback = callback; |
||||
} |
||||
|
||||
@Override |
||||
protected ClientHttpResponse adapt(HttpResponse response) { |
||||
return new HttpComponentsAsyncClientHttpResponse(response); |
||||
} |
||||
|
||||
@Override |
||||
public void addCallback(ListenableFutureCallback<? super ClientHttpResponse> callback) { |
||||
this.callback.addCallback(callback); |
||||
} |
||||
|
||||
@Override |
||||
public void addCallback(SuccessCallback<? super ClientHttpResponse> successCallback, FailureCallback failureCallback) { |
||||
this.callback.addSuccessCallback(successCallback); |
||||
this.callback.addFailureCallback(failureCallback); |
||||
} |
||||
} |
||||
|
||||
} |
||||
///*
|
||||
// * Copyright 2002-2016 the original author or authors.
|
||||
// *
|
||||
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// * you may not use this file except in compliance with the License.
|
||||
// * You may obtain a copy of the License at
|
||||
// *
|
||||
// * https://www.apache.org/licenses/LICENSE-2.0
|
||||
// *
|
||||
// * Unless required by applicable law or agreed to in writing, software
|
||||
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// * See the License for the specific language governing permissions and
|
||||
// * limitations under the License.
|
||||
// */
|
||||
//
|
||||
//package com.fr.third.springframework.http.client;
|
||||
//
|
||||
//import java.io.IOException;
|
||||
//import java.net.URI;
|
||||
//import java.util.concurrent.Future;
|
||||
//
|
||||
//import org.apache.http.HttpEntity;
|
||||
//import org.apache.http.HttpEntityEnclosingRequest;
|
||||
//import org.apache.http.HttpResponse;
|
||||
//import org.apache.http.client.methods.HttpUriRequest;
|
||||
//import org.apache.http.concurrent.FutureCallback;
|
||||
//import org.apache.http.nio.client.HttpAsyncClient;
|
||||
//import org.apache.http.nio.entity.NByteArrayEntity;
|
||||
//import org.apache.http.protocol.HttpContext;
|
||||
//
|
||||
//import com.fr.third.springframework.http.HttpHeaders;
|
||||
//import com.fr.third.springframework.http.HttpMethod;
|
||||
//import com.fr.third.springframework.util.concurrent.FailureCallback;
|
||||
//import com.fr.third.springframework.util.concurrent.FutureAdapter;
|
||||
//import com.fr.third.springframework.util.concurrent.ListenableFuture;
|
||||
//import com.fr.third.springframework.util.concurrent.ListenableFutureCallback;
|
||||
//import com.fr.third.springframework.util.concurrent.ListenableFutureCallbackRegistry;
|
||||
//import com.fr.third.springframework.util.concurrent.SuccessCallback;
|
||||
//
|
||||
//
|
||||
///**
|
||||
// * {@link ClientHttpRequest} implementation based on
|
||||
// * Apache HttpComponents HttpAsyncClient.
|
||||
// *
|
||||
// * <p>Created via the {@link HttpComponentsClientHttpRequestFactory}.
|
||||
// *
|
||||
// * @author Oleg Kalnichevski
|
||||
// * @author Arjen Poutsma
|
||||
// * @since 4.0
|
||||
// * @see HttpComponentsClientHttpRequestFactory#createRequest
|
||||
// */
|
||||
//final class HttpComponentsAsyncClientHttpRequest extends AbstractBufferingAsyncClientHttpRequest {
|
||||
//
|
||||
// private final HttpAsyncClient httpClient;
|
||||
//
|
||||
// private final HttpUriRequest httpRequest;
|
||||
//
|
||||
// private final HttpContext httpContext;
|
||||
//
|
||||
//
|
||||
// HttpComponentsAsyncClientHttpRequest(HttpAsyncClient client, HttpUriRequest request, HttpContext context) {
|
||||
// this.httpClient = client;
|
||||
// this.httpRequest = request;
|
||||
// this.httpContext = context;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public HttpMethod getMethod() {
|
||||
// return HttpMethod.resolve(this.httpRequest.getMethod());
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public URI getURI() {
|
||||
// return this.httpRequest.getURI();
|
||||
// }
|
||||
//
|
||||
// HttpContext getHttpContext() {
|
||||
// return this.httpContext;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// protected ListenableFuture<ClientHttpResponse> executeInternal(HttpHeaders headers, byte[] bufferedOutput)
|
||||
// throws IOException {
|
||||
//
|
||||
// HttpComponentsClientHttpRequest.addHeaders(this.httpRequest, headers);
|
||||
//
|
||||
// if (this.httpRequest instanceof HttpEntityEnclosingRequest) {
|
||||
// HttpEntityEnclosingRequest entityEnclosingRequest = (HttpEntityEnclosingRequest) this.httpRequest;
|
||||
// HttpEntity requestEntity = new NByteArrayEntity(bufferedOutput);
|
||||
// entityEnclosingRequest.setEntity(requestEntity);
|
||||
// }
|
||||
//
|
||||
// HttpResponseFutureCallback callback = new HttpResponseFutureCallback(this.httpRequest);
|
||||
// Future<HttpResponse> futureResponse = this.httpClient.execute(this.httpRequest, this.httpContext, callback);
|
||||
// return new ClientHttpResponseFuture(futureResponse, callback);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// private static class HttpResponseFutureCallback implements FutureCallback<HttpResponse> {
|
||||
//
|
||||
// private final HttpUriRequest request;
|
||||
//
|
||||
// private final ListenableFutureCallbackRegistry<ClientHttpResponse> callbacks =
|
||||
// new ListenableFutureCallbackRegistry<ClientHttpResponse>();
|
||||
//
|
||||
// public HttpResponseFutureCallback(HttpUriRequest request) {
|
||||
// this.request = request;
|
||||
// }
|
||||
//
|
||||
// public void addCallback(ListenableFutureCallback<? super ClientHttpResponse> callback) {
|
||||
// this.callbacks.addCallback(callback);
|
||||
// }
|
||||
//
|
||||
// public void addSuccessCallback(SuccessCallback<? super ClientHttpResponse> callback) {
|
||||
// this.callbacks.addSuccessCallback(callback);
|
||||
// }
|
||||
//
|
||||
// public void addFailureCallback(FailureCallback callback) {
|
||||
// this.callbacks.addFailureCallback(callback);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void completed(HttpResponse result) {
|
||||
// this.callbacks.success(new HttpComponentsAsyncClientHttpResponse(result));
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void failed(Exception ex) {
|
||||
// this.callbacks.failure(ex);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void cancelled() {
|
||||
// this.request.abort();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// private static class ClientHttpResponseFuture extends FutureAdapter<ClientHttpResponse, HttpResponse>
|
||||
// implements ListenableFuture<ClientHttpResponse> {
|
||||
//
|
||||
// private final HttpResponseFutureCallback callback;
|
||||
//
|
||||
// public ClientHttpResponseFuture(Future<HttpResponse> response, HttpResponseFutureCallback callback) {
|
||||
// super(response);
|
||||
// this.callback = callback;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// protected ClientHttpResponse adapt(HttpResponse response) {
|
||||
// return new HttpComponentsAsyncClientHttpResponse(response);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void addCallback(ListenableFutureCallback<? super ClientHttpResponse> callback) {
|
||||
// this.callback.addCallback(callback);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void addCallback(SuccessCallback<? super ClientHttpResponse> successCallback, FailureCallback failureCallback) {
|
||||
// this.callback.addSuccessCallback(successCallback);
|
||||
// this.callback.addFailureCallback(failureCallback);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
@ -1,211 +1,211 @@
|
||||
/* |
||||
* Copyright 2002-2017 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package com.fr.third.springframework.http.client; |
||||
|
||||
import java.io.Closeable; |
||||
import java.io.IOException; |
||||
import java.net.URI; |
||||
|
||||
import org.apache.http.client.HttpClient; |
||||
import org.apache.http.client.config.RequestConfig; |
||||
import org.apache.http.client.methods.Configurable; |
||||
import org.apache.http.client.methods.HttpUriRequest; |
||||
import org.apache.http.client.protocol.HttpClientContext; |
||||
import org.apache.http.impl.client.CloseableHttpClient; |
||||
import org.apache.http.impl.nio.client.CloseableHttpAsyncClient; |
||||
import org.apache.http.impl.nio.client.HttpAsyncClients; |
||||
import org.apache.http.nio.client.HttpAsyncClient; |
||||
import org.apache.http.protocol.HttpContext; |
||||
|
||||
import com.fr.third.springframework.beans.factory.InitializingBean; |
||||
import com.fr.third.springframework.http.HttpMethod; |
||||
import com.fr.third.springframework.util.Assert; |
||||
|
||||
/** |
||||
* Asynchronous extension of the {@link HttpComponentsClientHttpRequestFactory}. Uses |
||||
* <a href="https://hc.apache.org/httpcomponents-asyncclient-dev/">Apache HttpComponents |
||||
* HttpAsyncClient 4.0</a> to create requests. |
||||
* |
||||
* @author Arjen Poutsma |
||||
* @author Stephane Nicoll |
||||
* @since 4.0 |
||||
* @see HttpAsyncClient |
||||
*/ |
||||
public class HttpComponentsAsyncClientHttpRequestFactory extends HttpComponentsClientHttpRequestFactory |
||||
implements AsyncClientHttpRequestFactory, InitializingBean { |
||||
|
||||
private HttpAsyncClient asyncClient; |
||||
|
||||
|
||||
/** |
||||
* Create a new instance of the {@code HttpComponentsAsyncClientHttpRequestFactory} |
||||
* with a default {@link HttpAsyncClient} and {@link HttpClient}. |
||||
*/ |
||||
public HttpComponentsAsyncClientHttpRequestFactory() { |
||||
super(); |
||||
this.asyncClient = HttpAsyncClients.createSystem(); |
||||
} |
||||
|
||||
/** |
||||
* Create a new instance of the {@code HttpComponentsAsyncClientHttpRequestFactory} |
||||
* with the given {@link HttpAsyncClient} instance and a default {@link HttpClient}. |
||||
* @param asyncClient the HttpAsyncClient instance to use for this request factory |
||||
* @since 4.3.10 |
||||
*/ |
||||
public HttpComponentsAsyncClientHttpRequestFactory(HttpAsyncClient asyncClient) { |
||||
super(); |
||||
setAsyncClient(asyncClient); |
||||
} |
||||
|
||||
/** |
||||
* Create a new instance of the {@code HttpComponentsAsyncClientHttpRequestFactory} |
||||
* with the given {@link CloseableHttpAsyncClient} instance and a default {@link HttpClient}. |
||||
* @param asyncClient the CloseableHttpAsyncClient instance to use for this request factory |
||||
*/ |
||||
public HttpComponentsAsyncClientHttpRequestFactory(CloseableHttpAsyncClient asyncClient) { |
||||
super(); |
||||
setAsyncClient(asyncClient); |
||||
} |
||||
|
||||
/** |
||||
* Create a new instance of the {@code HttpComponentsAsyncClientHttpRequestFactory} |
||||
* with the given {@link HttpClient} and {@link HttpAsyncClient} instances. |
||||
* @param httpClient the HttpClient instance to use for this request factory |
||||
* @param asyncClient the HttpAsyncClient instance to use for this request factory |
||||
* @since 4.3.10 |
||||
*/ |
||||
public HttpComponentsAsyncClientHttpRequestFactory(HttpClient httpClient, HttpAsyncClient asyncClient) { |
||||
super(httpClient); |
||||
setAsyncClient(asyncClient); |
||||
} |
||||
|
||||
/** |
||||
* Create a new instance of the {@code HttpComponentsAsyncClientHttpRequestFactory} |
||||
* with the given {@link CloseableHttpClient} and {@link CloseableHttpAsyncClient} instances. |
||||
* @param httpClient the CloseableHttpClient instance to use for this request factory |
||||
* @param asyncClient the CloseableHttpAsyncClient instance to use for this request factory |
||||
*/ |
||||
public HttpComponentsAsyncClientHttpRequestFactory( |
||||
CloseableHttpClient httpClient, CloseableHttpAsyncClient asyncClient) { |
||||
|
||||
super(httpClient); |
||||
setAsyncClient(asyncClient); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* Set the {@code HttpAsyncClient} used for |
||||
* {@linkplain #createAsyncRequest(URI, HttpMethod) synchronous execution}. |
||||
* @since 4.3.10 |
||||
* @see #setHttpClient(HttpClient) |
||||
*/ |
||||
public void setAsyncClient(HttpAsyncClient asyncClient) { |
||||
Assert.notNull(asyncClient, "HttpAsyncClient must not be null"); |
||||
this.asyncClient = asyncClient; |
||||
} |
||||
|
||||
/** |
||||
* Return the {@code HttpAsyncClient} used for |
||||
* {@linkplain #createAsyncRequest(URI, HttpMethod) synchronous execution}. |
||||
* @since 4.3.10 |
||||
* @see #getHttpClient() |
||||
*/ |
||||
public HttpAsyncClient getAsyncClient() { |
||||
return this.asyncClient; |
||||
} |
||||
|
||||
/** |
||||
* Set the {@code CloseableHttpAsyncClient} used for |
||||
* {@linkplain #createAsyncRequest(URI, HttpMethod) asynchronous execution}. |
||||
* @deprecated as of 4.3.10, in favor of {@link #setAsyncClient(HttpAsyncClient)} |
||||
*/ |
||||
@Deprecated |
||||
public void setHttpAsyncClient(CloseableHttpAsyncClient asyncClient) { |
||||
this.asyncClient = asyncClient; |
||||
} |
||||
|
||||
/** |
||||
* Return the {@code CloseableHttpAsyncClient} used for |
||||
* {@linkplain #createAsyncRequest(URI, HttpMethod) asynchronous execution}. |
||||
* @deprecated as of 4.3.10, in favor of {@link #getAsyncClient()} |
||||
*/ |
||||
@Deprecated |
||||
public CloseableHttpAsyncClient getHttpAsyncClient() { |
||||
Assert.state(this.asyncClient == null || this.asyncClient instanceof CloseableHttpAsyncClient, |
||||
"No CloseableHttpAsyncClient - use getAsyncClient() instead"); |
||||
return (CloseableHttpAsyncClient) this.asyncClient; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public void afterPropertiesSet() { |
||||
startAsyncClient(); |
||||
} |
||||
|
||||
private void startAsyncClient() { |
||||
HttpAsyncClient asyncClient = getAsyncClient(); |
||||
if (asyncClient instanceof CloseableHttpAsyncClient) { |
||||
CloseableHttpAsyncClient closeableAsyncClient = (CloseableHttpAsyncClient) asyncClient; |
||||
if (!closeableAsyncClient.isRunning()) { |
||||
closeableAsyncClient.start(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public AsyncClientHttpRequest createAsyncRequest(URI uri, HttpMethod httpMethod) throws IOException { |
||||
startAsyncClient(); |
||||
|
||||
HttpUriRequest httpRequest = createHttpUriRequest(httpMethod, uri); |
||||
postProcessHttpRequest(httpRequest); |
||||
HttpContext context = createHttpContext(httpMethod, uri); |
||||
if (context == null) { |
||||
context = HttpClientContext.create(); |
||||
} |
||||
|
||||
// Request configuration not set in the context
|
||||
if (context.getAttribute(HttpClientContext.REQUEST_CONFIG) == null) { |
||||
// Use request configuration given by the user, when available
|
||||
RequestConfig config = null; |
||||
if (httpRequest instanceof Configurable) { |
||||
config = ((Configurable) httpRequest).getConfig(); |
||||
} |
||||
if (config == null) { |
||||
config = createRequestConfig(getAsyncClient()); |
||||
} |
||||
if (config != null) { |
||||
context.setAttribute(HttpClientContext.REQUEST_CONFIG, config); |
||||
} |
||||
} |
||||
|
||||
return new HttpComponentsAsyncClientHttpRequest(getAsyncClient(), httpRequest, context); |
||||
} |
||||
|
||||
@Override |
||||
public void destroy() throws Exception { |
||||
try { |
||||
super.destroy(); |
||||
} |
||||
finally { |
||||
HttpAsyncClient asyncClient = getAsyncClient(); |
||||
if (asyncClient instanceof Closeable) { |
||||
((Closeable) asyncClient).close(); |
||||
} |
||||
} |
||||
} |
||||
|
||||
} |
||||
///*
|
||||
// * Copyright 2002-2017 the original author or authors.
|
||||
// *
|
||||
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// * you may not use this file except in compliance with the License.
|
||||
// * You may obtain a copy of the License at
|
||||
// *
|
||||
// * https://www.apache.org/licenses/LICENSE-2.0
|
||||
// *
|
||||
// * Unless required by applicable law or agreed to in writing, software
|
||||
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// * See the License for the specific language governing permissions and
|
||||
// * limitations under the License.
|
||||
// */
|
||||
//
|
||||
//package com.fr.third.springframework.http.client;
|
||||
//
|
||||
//import java.io.Closeable;
|
||||
//import java.io.IOException;
|
||||
//import java.net.URI;
|
||||
//
|
||||
//import org.apache.http.client.HttpClient;
|
||||
//import org.apache.http.client.config.RequestConfig;
|
||||
//import org.apache.http.client.methods.Configurable;
|
||||
//import org.apache.http.client.methods.HttpUriRequest;
|
||||
//import org.apache.http.client.protocol.HttpClientContext;
|
||||
//import org.apache.http.impl.client.CloseableHttpClient;
|
||||
//import org.apache.http.impl.nio.client.CloseableHttpAsyncClient;
|
||||
//import org.apache.http.impl.nio.client.HttpAsyncClients;
|
||||
//import org.apache.http.nio.client.HttpAsyncClient;
|
||||
//import org.apache.http.protocol.HttpContext;
|
||||
//
|
||||
//import com.fr.third.springframework.beans.factory.InitializingBean;
|
||||
//import com.fr.third.springframework.http.HttpMethod;
|
||||
//import com.fr.third.springframework.util.Assert;
|
||||
//
|
||||
///**
|
||||
// * Asynchronous extension of the {@link HttpComponentsClientHttpRequestFactory}. Uses
|
||||
// * <a href="https://hc.apache.org/httpcomponents-asyncclient-dev/">Apache HttpComponents
|
||||
// * HttpAsyncClient 4.0</a> to create requests.
|
||||
// *
|
||||
// * @author Arjen Poutsma
|
||||
// * @author Stephane Nicoll
|
||||
// * @since 4.0
|
||||
// * @see HttpAsyncClient
|
||||
// */
|
||||
//public class HttpComponentsAsyncClientHttpRequestFactory extends HttpComponentsClientHttpRequestFactory
|
||||
// implements AsyncClientHttpRequestFactory, InitializingBean {
|
||||
//
|
||||
// private HttpAsyncClient asyncClient;
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * Create a new instance of the {@code HttpComponentsAsyncClientHttpRequestFactory}
|
||||
// * with a default {@link HttpAsyncClient} and {@link HttpClient}.
|
||||
// */
|
||||
// public HttpComponentsAsyncClientHttpRequestFactory() {
|
||||
// super();
|
||||
// this.asyncClient = HttpAsyncClients.createSystem();
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Create a new instance of the {@code HttpComponentsAsyncClientHttpRequestFactory}
|
||||
// * with the given {@link HttpAsyncClient} instance and a default {@link HttpClient}.
|
||||
// * @param asyncClient the HttpAsyncClient instance to use for this request factory
|
||||
// * @since 4.3.10
|
||||
// */
|
||||
// public HttpComponentsAsyncClientHttpRequestFactory(HttpAsyncClient asyncClient) {
|
||||
// super();
|
||||
// setAsyncClient(asyncClient);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Create a new instance of the {@code HttpComponentsAsyncClientHttpRequestFactory}
|
||||
// * with the given {@link CloseableHttpAsyncClient} instance and a default {@link HttpClient}.
|
||||
// * @param asyncClient the CloseableHttpAsyncClient instance to use for this request factory
|
||||
// */
|
||||
// public HttpComponentsAsyncClientHttpRequestFactory(CloseableHttpAsyncClient asyncClient) {
|
||||
// super();
|
||||
// setAsyncClient(asyncClient);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Create a new instance of the {@code HttpComponentsAsyncClientHttpRequestFactory}
|
||||
// * with the given {@link HttpClient} and {@link HttpAsyncClient} instances.
|
||||
// * @param httpClient the HttpClient instance to use for this request factory
|
||||
// * @param asyncClient the HttpAsyncClient instance to use for this request factory
|
||||
// * @since 4.3.10
|
||||
// */
|
||||
// public HttpComponentsAsyncClientHttpRequestFactory(HttpClient httpClient, HttpAsyncClient asyncClient) {
|
||||
// super(httpClient);
|
||||
// setAsyncClient(asyncClient);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Create a new instance of the {@code HttpComponentsAsyncClientHttpRequestFactory}
|
||||
// * with the given {@link CloseableHttpClient} and {@link CloseableHttpAsyncClient} instances.
|
||||
// * @param httpClient the CloseableHttpClient instance to use for this request factory
|
||||
// * @param asyncClient the CloseableHttpAsyncClient instance to use for this request factory
|
||||
// */
|
||||
// public HttpComponentsAsyncClientHttpRequestFactory(
|
||||
// CloseableHttpClient httpClient, CloseableHttpAsyncClient asyncClient) {
|
||||
//
|
||||
// super(httpClient);
|
||||
// setAsyncClient(asyncClient);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**
|
||||
// * Set the {@code HttpAsyncClient} used for
|
||||
// * {@linkplain #createAsyncRequest(URI, HttpMethod) synchronous execution}.
|
||||
// * @since 4.3.10
|
||||
// * @see #setHttpClient(HttpClient)
|
||||
// */
|
||||
// public void setAsyncClient(HttpAsyncClient asyncClient) {
|
||||
// Assert.notNull(asyncClient, "HttpAsyncClient must not be null");
|
||||
// this.asyncClient = asyncClient;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Return the {@code HttpAsyncClient} used for
|
||||
// * {@linkplain #createAsyncRequest(URI, HttpMethod) synchronous execution}.
|
||||
// * @since 4.3.10
|
||||
// * @see #getHttpClient()
|
||||
// */
|
||||
// public HttpAsyncClient getAsyncClient() {
|
||||
// return this.asyncClient;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Set the {@code CloseableHttpAsyncClient} used for
|
||||
// * {@linkplain #createAsyncRequest(URI, HttpMethod) asynchronous execution}.
|
||||
// * @deprecated as of 4.3.10, in favor of {@link #setAsyncClient(HttpAsyncClient)}
|
||||
// */
|
||||
// @Deprecated
|
||||
// public void setHttpAsyncClient(CloseableHttpAsyncClient asyncClient) {
|
||||
// this.asyncClient = asyncClient;
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * Return the {@code CloseableHttpAsyncClient} used for
|
||||
// * {@linkplain #createAsyncRequest(URI, HttpMethod) asynchronous execution}.
|
||||
// * @deprecated as of 4.3.10, in favor of {@link #getAsyncClient()}
|
||||
// */
|
||||
// @Deprecated
|
||||
// public CloseableHttpAsyncClient getHttpAsyncClient() {
|
||||
// Assert.state(this.asyncClient == null || this.asyncClient instanceof CloseableHttpAsyncClient,
|
||||
// "No CloseableHttpAsyncClient - use getAsyncClient() instead");
|
||||
// return (CloseableHttpAsyncClient) this.asyncClient;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void afterPropertiesSet() {
|
||||
// startAsyncClient();
|
||||
// }
|
||||
//
|
||||
// private void startAsyncClient() {
|
||||
// HttpAsyncClient asyncClient = getAsyncClient();
|
||||
// if (asyncClient instanceof CloseableHttpAsyncClient) {
|
||||
// CloseableHttpAsyncClient closeableAsyncClient = (CloseableHttpAsyncClient) asyncClient;
|
||||
// if (!closeableAsyncClient.isRunning()) {
|
||||
// closeableAsyncClient.start();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public AsyncClientHttpRequest createAsyncRequest(URI uri, HttpMethod httpMethod) throws IOException {
|
||||
// startAsyncClient();
|
||||
//
|
||||
// HttpUriRequest httpRequest = createHttpUriRequest(httpMethod, uri);
|
||||
// postProcessHttpRequest(httpRequest);
|
||||
// HttpContext context = createHttpContext(httpMethod, uri);
|
||||
// if (context == null) {
|
||||
// context = HttpClientContext.create();
|
||||
// }
|
||||
//
|
||||
// // Request configuration not set in the context
|
||||
// if (context.getAttribute(HttpClientContext.REQUEST_CONFIG) == null) {
|
||||
// // Use request configuration given by the user, when available
|
||||
// RequestConfig config = null;
|
||||
// if (httpRequest instanceof Configurable) {
|
||||
// config = ((Configurable) httpRequest).getConfig();
|
||||
// }
|
||||
// if (config == null) {
|
||||
// config = createRequestConfig(getAsyncClient());
|
||||
// }
|
||||
// if (config != null) {
|
||||
// context.setAttribute(HttpClientContext.REQUEST_CONFIG, config);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return new HttpComponentsAsyncClientHttpRequest(getAsyncClient(), httpRequest, context);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void destroy() throws Exception {
|
||||
// try {
|
||||
// super.destroy();
|
||||
// }
|
||||
// finally {
|
||||
// HttpAsyncClient asyncClient = getAsyncClient();
|
||||
// if (asyncClient instanceof Closeable) {
|
||||
// ((Closeable) asyncClient).close();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
@ -1,85 +1,85 @@
|
||||
/* |
||||
* Copyright 2002-2016 the original author or authors. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package com.fr.third.springframework.http.client; |
||||
|
||||
import java.io.IOException; |
||||
import java.io.InputStream; |
||||
|
||||
import org.apache.http.Header; |
||||
import org.apache.http.HttpEntity; |
||||
import org.apache.http.HttpResponse; |
||||
|
||||
import com.fr.third.springframework.http.HttpHeaders; |
||||
import com.fr.third.springframework.util.StreamUtils; |
||||
|
||||
/** |
||||
* {@link ClientHttpResponse} implementation based on |
||||
* Apache HttpComponents HttpAsyncClient. |
||||
* |
||||
* <p>Created via the {@link HttpComponentsAsyncClientHttpRequest}. |
||||
* |
||||
* @author Oleg Kalnichevski |
||||
* @author Arjen Poutsma |
||||
* @since 4.0 |
||||
* @see HttpComponentsAsyncClientHttpRequest#executeAsync() |
||||
*/ |
||||
final class HttpComponentsAsyncClientHttpResponse extends AbstractClientHttpResponse { |
||||
|
||||
private final HttpResponse httpResponse; |
||||
|
||||
private HttpHeaders headers; |
||||
|
||||
|
||||
HttpComponentsAsyncClientHttpResponse(HttpResponse httpResponse) { |
||||
this.httpResponse = httpResponse; |
||||
} |
||||
|
||||
|
||||
@Override |
||||
public int getRawStatusCode() throws IOException { |
||||
return this.httpResponse.getStatusLine().getStatusCode(); |
||||
} |
||||
|
||||
@Override |
||||
public String getStatusText() throws IOException { |
||||
return this.httpResponse.getStatusLine().getReasonPhrase(); |
||||
} |
||||
|
||||
@Override |
||||
public HttpHeaders getHeaders() { |
||||
if (this.headers == null) { |
||||
this.headers = new HttpHeaders(); |
||||
for (Header header : this.httpResponse.getAllHeaders()) { |
||||
this.headers.add(header.getName(), header.getValue()); |
||||
} |
||||
} |
||||
return this.headers; |
||||
} |
||||
|
||||
@Override |
||||
public InputStream getBody() throws IOException { |
||||
HttpEntity entity = this.httpResponse.getEntity(); |
||||
return (entity != null ? entity.getContent() : StreamUtils.emptyInput()); |
||||
} |
||||
|
||||
@Override |
||||
public void close() { |
||||
// HTTP responses returned by async HTTP client are not bound to an
|
||||
// active connection and do not have to deallocate any resources...
|
||||
} |
||||
|
||||
} |
||||
///*
|
||||
// * Copyright 2002-2016 the original author or authors.
|
||||
// *
|
||||
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// * you may not use this file except in compliance with the License.
|
||||
// * You may obtain a copy of the License at
|
||||
// *
|
||||
// * https://www.apache.org/licenses/LICENSE-2.0
|
||||
// *
|
||||
// * Unless required by applicable law or agreed to in writing, software
|
||||
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// * See the License for the specific language governing permissions and
|
||||
// * limitations under the License.
|
||||
// */
|
||||
//
|
||||
//package com.fr.third.springframework.http.client;
|
||||
//
|
||||
//import java.io.IOException;
|
||||
//import java.io.InputStream;
|
||||
//
|
||||
//import org.apache.http.Header;
|
||||
//import org.apache.http.HttpEntity;
|
||||
//import org.apache.http.HttpResponse;
|
||||
//
|
||||
//import com.fr.third.springframework.http.HttpHeaders;
|
||||
//import com.fr.third.springframework.util.StreamUtils;
|
||||
//
|
||||
///**
|
||||
// * {@link ClientHttpResponse} implementation based on
|
||||
// * Apache HttpComponents HttpAsyncClient.
|
||||
// *
|
||||
// * <p>Created via the {@link HttpComponentsAsyncClientHttpRequest}.
|
||||
// *
|
||||
// * @author Oleg Kalnichevski
|
||||
// * @author Arjen Poutsma
|
||||
// * @since 4.0
|
||||
// * @see HttpComponentsAsyncClientHttpRequest#executeAsync()
|
||||
// */
|
||||
//final class HttpComponentsAsyncClientHttpResponse extends AbstractClientHttpResponse {
|
||||
//
|
||||
// private final HttpResponse httpResponse;
|
||||
//
|
||||
// private HttpHeaders headers;
|
||||
//
|
||||
//
|
||||
// HttpComponentsAsyncClientHttpResponse(HttpResponse httpResponse) {
|
||||
// this.httpResponse = httpResponse;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public int getRawStatusCode() throws IOException {
|
||||
// return this.httpResponse.getStatusLine().getStatusCode();
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public String getStatusText() throws IOException {
|
||||
// return this.httpResponse.getStatusLine().getReasonPhrase();
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public HttpHeaders getHeaders() {
|
||||
// if (this.headers == null) {
|
||||
// this.headers = new HttpHeaders();
|
||||
// for (Header header : this.httpResponse.getAllHeaders()) {
|
||||
// this.headers.add(header.getName(), header.getValue());
|
||||
// }
|
||||
// }
|
||||
// return this.headers;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public InputStream getBody() throws IOException {
|
||||
// HttpEntity entity = this.httpResponse.getEntity();
|
||||
// return (entity != null ? entity.getContent() : StreamUtils.emptyInput());
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void close() {
|
||||
// // HTTP responses returned by async HTTP client are not bound to an
|
||||
// // active connection and do not have to deallocate any resources...
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
Loading…
Reference in new issue