Browse Source

Pull request #8962: REPORT-98773 fix: 编译失败

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
parent
commit
f9833e83b2
  1. 336
      fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpRequest.java
  2. 422
      fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpRequestFactory.java
  3. 170
      fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpResponse.java

336
fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpRequest.java

@ -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);
// }
// }
//
//}

422
fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpRequestFactory.java

@ -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();
// }
// }
// }
//
//}

170
fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpResponse.java

@ -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…
Cancel
Save