diff --git a/fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpRequest.java b/fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpRequest.java
index 730df1863..58c0ead74 100644
--- a/fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpRequest.java
+++ b/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.
- *
- *
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 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 futureResponse = this.httpClient.execute(this.httpRequest, this.httpContext, callback);
- return new ClientHttpResponseFuture(futureResponse, callback);
- }
-
-
- private static class HttpResponseFutureCallback implements FutureCallback {
-
- private final HttpUriRequest request;
-
- private final ListenableFutureCallbackRegistry callbacks =
- new ListenableFutureCallbackRegistry();
-
- 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
- implements ListenableFuture {
-
- private final HttpResponseFutureCallback callback;
-
- public ClientHttpResponseFuture(Future 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.
+// *
+// * 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 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 futureResponse = this.httpClient.execute(this.httpRequest, this.httpContext, callback);
+// return new ClientHttpResponseFuture(futureResponse, callback);
+// }
+//
+//
+// private static class HttpResponseFutureCallback implements FutureCallback {
+//
+// private final HttpUriRequest request;
+//
+// private final ListenableFutureCallbackRegistry callbacks =
+// new ListenableFutureCallbackRegistry();
+//
+// 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
+// implements ListenableFuture {
+//
+// private final HttpResponseFutureCallback callback;
+//
+// public ClientHttpResponseFuture(Future 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);
+// }
+// }
+//
+//}
diff --git a/fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpRequestFactory.java b/fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpRequestFactory.java
index ecbf3a81f..de2b56567 100644
--- a/fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpRequestFactory.java
+++ b/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
- * Apache HttpComponents
- * HttpAsyncClient 4.0 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
+// * Apache HttpComponents
+// * HttpAsyncClient 4.0 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();
+// }
+// }
+// }
+//
+//}
diff --git a/fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpResponse.java b/fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpResponse.java
index b4849b56b..454e4681a 100644
--- a/fine-spring/src/main/java/com/fr/third/springframework/http/client/HttpComponentsAsyncClientHttpResponse.java
+++ b/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.
- *
- * 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.
+// *
+// *
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...
+// }
+//
+//}