Defensively access deprecated AbstractHttpClient class from Apache HttpComponents
Issue: SPR-14422
This commit is contained in:
parent
8389e3fc35
commit
1c73664c40
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* 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.
|
||||
|
|
@ -39,6 +39,7 @@ import org.apache.http.protocol.HttpContext;
|
|||
import org.springframework.beans.factory.DisposableBean;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ClassUtils;
|
||||
|
||||
/**
|
||||
* {@link org.springframework.http.client.ClientHttpRequestFactory} implementation that
|
||||
|
|
@ -58,6 +59,20 @@ import org.springframework.util.Assert;
|
|||
*/
|
||||
public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequestFactory, DisposableBean {
|
||||
|
||||
private static Class<?> abstractHttpClientClass;
|
||||
|
||||
static {
|
||||
try {
|
||||
// Looking for AbstractHttpClient class (deprecated as of HttpComponents 4.3)
|
||||
abstractHttpClientClass = ClassUtils.forName("org.apache.http.impl.client.AbstractHttpClient",
|
||||
HttpComponentsClientHttpRequestFactory.class.getClassLoader());
|
||||
}
|
||||
catch (ClassNotFoundException ex) {
|
||||
// Probably removed from HttpComponents in the meantime...
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private HttpClient httpClient;
|
||||
|
||||
private RequestConfig requestConfig;
|
||||
|
|
@ -130,7 +145,7 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest
|
|||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private void setLegacyConnectionTimeout(HttpClient client, int timeout) {
|
||||
if (org.apache.http.impl.client.AbstractHttpClient.class.isInstance(client)) {
|
||||
if (abstractHttpClientClass != null && abstractHttpClientClass.isInstance(client)) {
|
||||
client.getParams().setIntParameter(org.apache.http.params.CoreConnectionPNames.CONNECTION_TIMEOUT, timeout);
|
||||
}
|
||||
}
|
||||
|
|
@ -171,7 +186,7 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest
|
|||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private void setLegacySocketTimeout(HttpClient client, int timeout) {
|
||||
if (org.apache.http.impl.client.AbstractHttpClient.class.isInstance(client)) {
|
||||
if (abstractHttpClientClass != null && abstractHttpClientClass.isInstance(client)) {
|
||||
client.getParams().setIntParameter(org.apache.http.params.CoreConnectionPNames.SO_TIMEOUT, timeout);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* 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.
|
||||
|
|
@ -43,6 +43,7 @@ import org.springframework.context.i18n.LocaleContext;
|
|||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.remoting.support.RemoteInvocationResult;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ClassUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
|
|
@ -69,6 +70,21 @@ public class HttpComponentsHttpInvokerRequestExecutor extends AbstractHttpInvoke
|
|||
|
||||
private static final int DEFAULT_READ_TIMEOUT_MILLISECONDS = (60 * 1000);
|
||||
|
||||
|
||||
private static Class<?> abstractHttpClientClass;
|
||||
|
||||
static {
|
||||
try {
|
||||
// Looking for AbstractHttpClient class (deprecated as of HttpComponents 4.3)
|
||||
abstractHttpClientClass = ClassUtils.forName("org.apache.http.impl.client.AbstractHttpClient",
|
||||
HttpComponentsHttpInvokerRequestExecutor.class.getClassLoader());
|
||||
}
|
||||
catch (ClassNotFoundException ex) {
|
||||
// Probably removed from HttpComponents in the meantime...
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private HttpClient httpClient;
|
||||
|
||||
private RequestConfig requestConfig;
|
||||
|
|
@ -156,7 +172,7 @@ public class HttpComponentsHttpInvokerRequestExecutor extends AbstractHttpInvoke
|
|||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private void setLegacyConnectionTimeout(HttpClient client, int timeout) {
|
||||
if (org.apache.http.impl.client.AbstractHttpClient.class.isInstance(client)) {
|
||||
if (abstractHttpClientClass != null && abstractHttpClientClass.isInstance(client)) {
|
||||
client.getParams().setIntParameter(org.apache.http.params.CoreConnectionPNames.CONNECTION_TIMEOUT, timeout);
|
||||
}
|
||||
}
|
||||
|
|
@ -198,7 +214,7 @@ public class HttpComponentsHttpInvokerRequestExecutor extends AbstractHttpInvoke
|
|||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
private void setLegacySocketTimeout(HttpClient client, int timeout) {
|
||||
if (org.apache.http.impl.client.AbstractHttpClient.class.isInstance(client)) {
|
||||
if (abstractHttpClientClass != null && abstractHttpClientClass.isInstance(client)) {
|
||||
client.getParams().setIntParameter(org.apache.http.params.CoreConnectionPNames.SO_TIMEOUT, timeout);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue