[java-opensaml] branch main updated: JSSH-16: Update to Apache HttpClient 5.x
Brent Putman
putmanb at georgetown.edu
Tue Feb 21 19:31:11 UTC 2023
This is an automated email from the git hooks/post-receive script.
putmanb pushed a commit to branch main
in repository java-opensaml.
View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=8de17c9a6a9857ae59718f4c93ce685a8de0113d
The following commit(s) were added to refs/heads/main by this push:
new 8de17c9a6 JSSH-16: Update to Apache HttpClient 5.x
8de17c9a6 is described below
commit 8de17c9a6a9857ae59718f4c93ce685a8de0113d
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Thu Feb 2 03:15:35 2023 -0500
JSSH-16: Update to Apache HttpClient 5.x
Initial refactor.
---
opensaml-core-impl/pom.xml | 8 ++--
.../opensaml/core/metrics/impl/HTTPReporter.java | 26 ++++++------
opensaml-messaging-api/pom.xml | 8 ++--
.../httpclient/HttpClientRequestContext.java | 5 ++-
.../AbstractHttpClientResponseMessageDecoder.java | 8 ++--
.../BaseHttpClientResponseXMLMessageDecoder.java | 1 -
.../HttpClientResponseMessageDecoder.java | 6 +--
.../AbstractHttpClientRequestMessageEncoder.java | 8 ++--
.../HttpClientRequestMessageEncoder.java | 6 +--
opensaml-saml-impl/pom.xml | 11 +++--
...ecordServerTLSEntityAuthenticationtHandler.java | 3 +-
.../impl/AbstractDynamicHTTPMetadataResolver.java | 49 ++++++++++------------
.../impl/FileBackedHTTPMetadataResolver.java | 2 +-
.../FunctionDrivenDynamicHTTPMetadataResolver.java | 2 +-
.../resolver/impl/HTTPMetadataResolver.java | 30 ++++++-------
.../resolver/filter/impl/EntityRoleFilterTest.java | 2 +-
.../AbstractDynamicHTTPMetadataResolverTest.java | 32 +++++++-------
.../resolver/impl/HTTPMetadataResolverTest.java | 2 +-
.../src/test/resources/logback-test.xml | 16 ++++++-
opensaml-security-api/pom.xml | 2 +-
.../HttpClientSecurityConfiguration.java | 2 +-
.../HttpClientSecurityContextHandler.java | 10 ++---
.../httpclient/HttpClientSecurityParameters.java | 12 +++---
.../httpclient/HttpClientSecuritySupport.java | 25 ++++++-----
.../messaging/HttpClientSecurityContext.java | 3 +-
.../httpclient/HttpClientSecuritySupportTest.java | 10 ++---
.../SecurityEnhancedHTTPResourceTest.java | 2 +-
opensaml-security-impl/pom.xml | 7 ++--
.../impl/BasicHttpClientSecurityConfiguration.java | 10 ++---
.../impl/SecurityEnhancedHttpClientSupport.java | 3 +-
.../impl/SecurityEnhancedTLSSocketFactory.java | 11 ++---
.../ThreadLocalClientTLSCredentialHandler.java | 8 ++--
.../impl/ThreadLocalServerTLSHandler.java | 8 ++--
.../BasicHttpClientSecurityConfigurationTest.java | 8 ++--
...icHttpClientSecurityParametersResolverTest.java | 4 +-
.../httpclient/impl/MockTLSSocketFactory.java | 9 ++--
.../impl/SecurityEnhancedTLSSocketFactoryTest.java | 21 +++++-----
opensaml-soap-api/pom.xml | 9 ++--
.../http/AbstractPipelineHttpSOAPClient.java | 28 ++++++-------
.../opensaml/soap/client/http/HttpSOAPClient.java | 28 ++++++-------
opensaml-soap-impl/pom.xml | 10 ++---
.../http/impl/HttpClientResponseSOAP11Decoder.java | 16 +++----
.../http/impl/HttpClientRequestSOAP11Encoder.java | 14 +++----
.../impl/HttpClientResponseSOAP11DecoderTest.java | 24 ++++++-----
.../impl/HttpClientRequestSOAP11EncoderTest.java | 10 ++---
opensaml-spring/pom.xml | 2 +-
.../spring/tls/TLSSocketFactoryFactoryBean.java | 3 +-
47 files changed, 265 insertions(+), 259 deletions(-)
diff --git a/opensaml-core-impl/pom.xml b/opensaml-core-impl/pom.xml
index 76878c4f7..fd51cdc76 100644
--- a/opensaml-core-impl/pom.xml
+++ b/opensaml-core-impl/pom.xml
@@ -52,12 +52,12 @@
</dependency>
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
+ <groupId>${httpclient.groupId}</groupId>
+ <artifactId>${httpclient.artifactId}</artifactId>
</dependency>
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
+ <groupId>${httpclient.httpcore.groupId}</groupId>
+ <artifactId>${httpclient.httpcore.artifactId}</artifactId>
</dependency>
<!-- Provided Dependencies -->
diff --git a/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/HTTPReporter.java b/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/HTTPReporter.java
index 85d937f2f..ec5e03f3a 100644
--- a/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/HTTPReporter.java
+++ b/opensaml-core-impl/src/main/java/org/opensaml/core/metrics/impl/HTTPReporter.java
@@ -28,14 +28,14 @@ import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.entity.EntityBuilder;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.client5.http.entity.EntityBuilder;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpRequest;
+import org.apache.hc.core5.http.HttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
import org.opensaml.security.httpclient.HttpClientSecurityParameters;
import org.opensaml.security.httpclient.HttpClientSecuritySupport;
import org.slf4j.Logger;
@@ -266,13 +266,13 @@ public class HTTPReporter extends ScheduledReporter implements InitializableComp
entityBuilder.setBinary(output.toByteArray());
httpRequest.setEntity(entityBuilder.build());
- final HttpResponse response = httpClient.execute(httpRequest, httpContext);
- HttpClientSecuritySupport.checkTLSCredentialEvaluated(httpContext, httpRequest.getURI().getScheme());
+ final HttpResponse response = httpClient.executeOpen(null, httpRequest, httpContext);
+ HttpClientSecuritySupport.checkTLSCredentialEvaluated(httpContext, httpRequest.getScheme());
- if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
+ if (response.getCode() == HttpStatus.SC_OK) {
log.debug("Metrics delivered successfully to collector");
} else {
- log.error("Collector responded with HTTP status {}", response.getStatusLine().getStatusCode());
+ log.error("Collector responded with HTTP status {}", response.getCode());
}
} catch (final IOException e) {
log.error("Error sending metric registry to collection point {}", collectorURL, e);
@@ -295,7 +295,7 @@ public class HTTPReporter extends ScheduledReporter implements InitializableComp
* @param request the HTTP client request
* @return the client context instance
*/
- @Nonnull private HttpClientContext buildHttpContext(@Nonnull final HttpUriRequest request) {
+ @Nonnull private HttpClientContext buildHttpContext(@Nonnull final HttpRequest request) {
final HttpClientContext clientContext = HttpClientContext.create();
HttpClientSecuritySupport.marshalSecurityParameters(clientContext, httpClientSecurityParameters, false);
HttpClientSecuritySupport.addDefaultTLSTrustEngineCriteria(clientContext, request);
diff --git a/opensaml-messaging-api/pom.xml b/opensaml-messaging-api/pom.xml
index e7185abc8..0c996e563 100644
--- a/opensaml-messaging-api/pom.xml
+++ b/opensaml-messaging-api/pom.xml
@@ -34,14 +34,14 @@
<artifactId>guava</artifactId>
</dependency>
+
<dependency>
<groupId>${httpclient.groupId}</groupId>
- <artifactId>httpclient</artifactId>
+ <artifactId>${httpclient.artifactId}</artifactId>
</dependency>
-
<dependency>
- <groupId>${httpclient.groupId}</groupId>
- <artifactId>httpcore</artifactId>
+ <groupId>${httpclient.httpcore.groupId}</groupId>
+ <artifactId>${httpclient.httpcore.artifactId}</artifactId>
</dependency>
<!-- Provided Dependencies -->
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/HttpClientRequestContext.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/HttpClientRequestContext.java
index b569b079d..eeac9117a 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/HttpClientRequestContext.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/context/httpclient/HttpClientRequestContext.java
@@ -19,11 +19,12 @@ package org.opensaml.messaging.context.httpclient;
import javax.annotation.Nullable;
-import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
import org.opensaml.messaging.context.BaseContext;
/**
- * A context impl holding data related to the execution of an {@link org.apache.http.client.HttpClient} request.
+ * A context impl holding data related to the execution of an {@link org.apache.hc.client5.http.classic.HttpClient}
+ * request.
*/
public final class HttpClientRequestContext extends BaseContext {
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/AbstractHttpClientResponseMessageDecoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/AbstractHttpClientResponseMessageDecoder.java
index cd428cd55..7e0c36ad0 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/AbstractHttpClientResponseMessageDecoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/AbstractHttpClientResponseMessageDecoder.java
@@ -19,7 +19,7 @@ package org.opensaml.messaging.decoder.httpclient;
import javax.annotation.Nullable;
-import org.apache.http.HttpResponse;
+import org.apache.hc.core5.http.ClassicHttpResponse;
import org.opensaml.messaging.decoder.AbstractMessageDecoder;
import org.opensaml.messaging.decoder.MessageDecodingException;
@@ -32,15 +32,15 @@ public abstract class AbstractHttpClientResponseMessageDecoder extends AbstractM
implements HttpClientResponseMessageDecoder {
/** The HTTP client response. */
- private HttpResponse response;
+ private ClassicHttpResponse response;
/** {@inheritDoc} */
- @Nullable public HttpResponse getHttpResponse() {
+ @Nullable public ClassicHttpResponse getHttpResponse() {
return response;
}
/** {@inheritDoc} */
- public synchronized void setHttpResponse(@Nullable final HttpResponse clientResponse) {
+ public synchronized void setHttpResponse(@Nullable final ClassicHttpResponse clientResponse) {
checkSetterPreconditions();
response = clientResponse;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/BaseHttpClientResponseXMLMessageDecoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/BaseHttpClientResponseXMLMessageDecoder.java
index 0042c0cb3..36b2978b7 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/BaseHttpClientResponseXMLMessageDecoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/BaseHttpClientResponseXMLMessageDecoder.java
@@ -27,7 +27,6 @@ import net.shibboleth.shared.xml.ParserPool;
import net.shibboleth.shared.xml.SerializeSupport;
import net.shibboleth.shared.xml.XMLParserException;
-import org.apache.http.HttpResponse;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
import org.opensaml.core.xml.io.MarshallingException;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/HttpClientResponseMessageDecoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/HttpClientResponseMessageDecoder.java
index 0899adbea..8f9455188 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/HttpClientResponseMessageDecoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/decoder/httpclient/HttpClientResponseMessageDecoder.java
@@ -19,7 +19,7 @@ package org.opensaml.messaging.decoder.httpclient;
import javax.annotation.Nullable;
-import org.apache.http.HttpResponse;
+import org.apache.hc.core5.http.ClassicHttpResponse;
import org.opensaml.messaging.decoder.MessageDecoder;
@@ -33,13 +33,13 @@ public interface HttpClientResponseMessageDecoder extends MessageDecoder {
*
* @return the HTTP client response
*/
- @Nullable HttpResponse getHttpResponse();
+ @Nullable ClassicHttpResponse getHttpResponse();
/**
* Set the HTTP client response on which to operate.
*
* @param response the HTTP client response
*/
- void setHttpResponse(@Nullable final HttpResponse response);
+ void setHttpResponse(@Nullable final ClassicHttpResponse response);
}
\ No newline at end of file
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/AbstractHttpClientRequestMessageEncoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/AbstractHttpClientRequestMessageEncoder.java
index a53d6eb07..0bb1077b8 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/AbstractHttpClientRequestMessageEncoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/AbstractHttpClientRequestMessageEncoder.java
@@ -19,7 +19,7 @@ package org.opensaml.messaging.encoder.httpclient;
import javax.annotation.Nullable;
-import org.apache.http.HttpRequest;
+import org.apache.hc.core5.http.ClassicHttpRequest;
import org.opensaml.messaging.encoder.AbstractMessageEncoder;
import org.opensaml.messaging.encoder.servlet.HttpServletResponseMessageEncoder;
@@ -32,15 +32,15 @@ public abstract class AbstractHttpClientRequestMessageEncoder extends AbstractMe
implements HttpClientRequestMessageEncoder {
/** The HTTP client request. */
- @Nullable private HttpRequest request;
+ @Nullable private ClassicHttpRequest request;
/** {@inheritDoc} */
- @Nullable public HttpRequest getHttpRequest() {
+ @Nullable public ClassicHttpRequest getHttpRequest() {
return request;
}
/** {@inheritDoc} */
- public synchronized void setHttpRequest(@Nullable final HttpRequest httpRequest) {
+ public synchronized void setHttpRequest(@Nullable final ClassicHttpRequest httpRequest) {
checkSetterPreconditions();
request = httpRequest;
diff --git a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/HttpClientRequestMessageEncoder.java b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/HttpClientRequestMessageEncoder.java
index 223a14d5b..ba64ff655 100644
--- a/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/HttpClientRequestMessageEncoder.java
+++ b/opensaml-messaging-api/src/main/java/org/opensaml/messaging/encoder/httpclient/HttpClientRequestMessageEncoder.java
@@ -19,7 +19,7 @@ package org.opensaml.messaging.encoder.httpclient;
import javax.annotation.Nullable;
-import org.apache.http.HttpRequest;
+import org.apache.hc.core5.http.ClassicHttpRequest;
import org.opensaml.messaging.encoder.MessageEncoder;
/**
@@ -32,13 +32,13 @@ public interface HttpClientRequestMessageEncoder extends MessageEncoder {
*
* @return the HTTP client request
*/
- @Nullable HttpRequest getHttpRequest();
+ @Nullable ClassicHttpRequest getHttpRequest();
/**
* Set the HTTP client request on which to operate.
*
* @param request the HTTP client request
*/
- void setHttpRequest(@Nullable final HttpRequest request);
+ void setHttpRequest(@Nullable final ClassicHttpRequest request);
}
diff --git a/opensaml-saml-impl/pom.xml b/opensaml-saml-impl/pom.xml
index 583d44506..7a22fa85e 100644
--- a/opensaml-saml-impl/pom.xml
+++ b/opensaml-saml-impl/pom.xml
@@ -134,13 +134,12 @@
<dependency>
<groupId>${httpclient.groupId}</groupId>
- <artifactId>httpclient</artifactId>
- </dependency>
-
+ <artifactId>${httpclient.artifactId}</artifactId>
+ </dependency>
<dependency>
- <groupId>${httpclient.groupId}</groupId>
- <artifactId>httpcore</artifactId>
- </dependency>
+ <groupId>${httpclient.httpcore.groupId}</groupId>
+ <artifactId>${httpclient.httpcore.artifactId}</artifactId>
+ </dependency>
<!-- Provided Dependencies -->
<dependency>
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/security/impl/CheckAndRecordServerTLSEntityAuthenticationtHandler.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/security/impl/CheckAndRecordServerTLSEntityAuthenticationtHandler.java
index 61d6d9e26..7d4868163 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/security/impl/CheckAndRecordServerTLSEntityAuthenticationtHandler.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/common/binding/security/impl/CheckAndRecordServerTLSEntityAuthenticationtHandler.java
@@ -20,8 +20,7 @@ package org.opensaml.saml.common.binding.security.impl;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
import org.opensaml.messaging.context.InOutOperationContext;
import org.opensaml.messaging.context.MessageContext;
import org.opensaml.messaging.context.httpclient.HttpClientRequestContext;
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java
index 8e97e76f5..1423c7a97 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolver.java
@@ -30,14 +30,13 @@ import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.io.UnmarshallingException;
import org.opensaml.core.xml.util.XMLObjectSource;
@@ -93,7 +92,7 @@ public abstract class AbstractDynamicHTTPMetadataResolver extends AbstractDynami
@NonnullAfterInit private Set<MediaType> supportedMediaTypes;
/** HttpClient ResponseHandler instance to use. */
- @Nonnull private ResponseHandler<XMLObject> responseHandler;
+ @Nonnull private HttpClientResponseHandler<XMLObject> responseHandler;
/** Optional HttpClient security parameters.*/
@Nullable private HttpClientSecurityParameters httpClientSecurityParameters;
@@ -257,7 +256,7 @@ public abstract class AbstractDynamicHTTPMetadataResolver extends AbstractDynami
@Nullable protected XMLObject fetchFromOriginSource(@Nonnull final CriteriaSet criteria)
throws IOException {
- final HttpUriRequest request = buildHttpRequest(criteria);
+ final ClassicHttpRequest request = buildHttpRequest(criteria);
if (request == null) {
log.debug("{} Could not build request based on input criteria, unable to query", getLogPrefix());
return null;
@@ -266,9 +265,9 @@ public abstract class AbstractDynamicHTTPMetadataResolver extends AbstractDynami
final HttpClientContext context = buildHttpClientContext(request);
try {
- MDC.put(MDC_ATTRIB_CURRENT_REQUEST_URI, request.getURI().toString());
- final XMLObject result = httpClient.execute(request, responseHandler, context);
- HttpClientSecuritySupport.checkTLSCredentialEvaluated(context, request.getURI().getScheme());
+ MDC.put(MDC_ATTRIB_CURRENT_REQUEST_URI, request.getRequestUri());
+ final XMLObject result = httpClient.execute(request, context, responseHandler);
+ HttpClientSecuritySupport.checkTLSCredentialEvaluated(context, request.getScheme());
return result;
} finally {
MDC.remove(MDC_ATTRIB_CURRENT_REQUEST_URI);
@@ -281,7 +280,7 @@ public abstract class AbstractDynamicHTTPMetadataResolver extends AbstractDynami
* @param criteria the input criteria set
* @return the newly constructed request, or null if it can not be built from the supplied criteria
*/
- @Nullable protected HttpUriRequest buildHttpRequest(@Nonnull final CriteriaSet criteria) {
+ @Nullable protected ClassicHttpRequest buildHttpRequest(@Nonnull final CriteriaSet criteria) {
final String url = buildRequestURL(criteria);
log.debug("{} Built request URL of: {}", getLogPrefix(), url);
@@ -316,7 +315,7 @@ public abstract class AbstractDynamicHTTPMetadataResolver extends AbstractDynami
*
* @return a new instance of {@link HttpClientContext}
*/
- protected HttpClientContext buildHttpClientContext(@Nonnull final HttpUriRequest request) {
+ protected HttpClientContext buildHttpClientContext(@Nonnull final ClassicHttpRequest request) {
final HttpClientContext context = HttpClientContext.create();
HttpClientSecuritySupport.marshalSecurityParameters(context, httpClientSecurityParameters, true);
@@ -328,13 +327,13 @@ public abstract class AbstractDynamicHTTPMetadataResolver extends AbstractDynami
/**
* Basic HttpClient response handler for processing metadata fetch requests.
*/
- public class BasicMetadataResponseHandler implements ResponseHandler<XMLObject> {
+ public class BasicMetadataResponseHandler implements HttpClientResponseHandler<XMLObject> {
/** {@inheritDoc} */
@Override
- public XMLObject handleResponse(@Nonnull final HttpResponse response) throws IOException {
+ public XMLObject handleResponse(@Nonnull final ClassicHttpResponse response) throws IOException {
- final int httpStatusCode = response.getStatusLine().getStatusCode();
+ final int httpStatusCode = response.getCode();
final String currentRequestURI = MDC.get(MDC_ATTRIB_CURRENT_REQUEST_URI);
@@ -380,18 +379,14 @@ public abstract class AbstractDynamicHTTPMetadataResolver extends AbstractDynami
* @param response the received response
* @throws ResolverException if the response was not valid, or if there is a fatal error validating the response
*/
- protected void validateHttpResponse(@Nonnull final HttpResponse response) throws ResolverException {
+ protected void validateHttpResponse(@Nonnull final ClassicHttpResponse response) throws ResolverException {
if (!getSupportedMediaTypes().isEmpty()) {
- String contentTypeValue = null;
- final Header contentType = response.getEntity().getContentType();
- if (contentType != null && contentType.getValue() != null) {
- contentTypeValue = StringSupport.trimOrNull(contentType.getValue());
- }
- log.debug("{} Saw raw Content-Type from response header '{}'", getLogPrefix(), contentTypeValue);
+ final String contentType = StringSupport.trimOrNull(response.getEntity().getContentType());
+ log.debug("{} Saw raw Content-Type from response header '{}'", getLogPrefix(), contentType);
- if (!MediaTypeSupport.validateContentType(contentTypeValue, getSupportedMediaTypes(), true, false)) {
+ if (!MediaTypeSupport.validateContentType(contentType, getSupportedMediaTypes(), true, false)) {
throw new ResolverException("HTTP response specified an unsupported Content-Type MIME type: "
- + contentTypeValue);
+ + contentType);
}
}
}
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/FileBackedHTTPMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/FileBackedHTTPMetadataResolver.java
index 1b14bbbdd..2f7006cfc 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/FileBackedHTTPMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/FileBackedHTTPMetadataResolver.java
@@ -28,7 +28,7 @@ import java.util.Timer;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.http.client.HttpClient;
+import org.apache.hc.client5.http.classic.HttpClient;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
import org.opensaml.saml.metadata.resolver.filter.data.impl.MetadataSource;
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/FunctionDrivenDynamicHTTPMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/FunctionDrivenDynamicHTTPMetadataResolver.java
index a8610f3ca..2e2f549ff 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/FunctionDrivenDynamicHTTPMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/FunctionDrivenDynamicHTTPMetadataResolver.java
@@ -23,7 +23,7 @@ import java.util.function.Function;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.http.client.HttpClient;
+import org.apache.hc.client5.http.classic.HttpClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolver.java
index 5f59ce8d8..94de0a5f6 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolver.java
@@ -26,15 +26,15 @@ import java.util.Timer;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.util.EntityUtils;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.Header;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.opensaml.security.httpclient.HttpClientSecurityParameters;
import org.opensaml.security.httpclient.HttpClientSecuritySupport;
import org.slf4j.Logger;
@@ -203,13 +203,13 @@ public class HTTPMetadataResolver extends AbstractReloadingMetadataResolver {
protected byte[] fetchMetadata() throws ResolverException {
final HttpGet httpGet = buildHttpGet();
final HttpClientContext context = buildHttpClientContext(httpGet);
- HttpResponse response = null;
+ ClassicHttpResponse response = null;
try {
log.debug("{} Attempting to fetch metadata document from '{}'", getLogPrefix(), metadataURI);
- response = httpClient.execute(httpGet, context);
+ response = httpClient.executeOpen(null, httpGet, context);
HttpClientSecuritySupport.checkTLSCredentialEvaluated(context, metadataURI.getScheme());
- final int httpStatusCode = response.getStatusLine().getStatusCode();
+ final int httpStatusCode = response.getCode();
if (httpStatusCode == HttpStatus.SC_NOT_MODIFIED) {
log.debug("{} Metadata document from '{}' has not changed since last retrieval",
@@ -273,7 +273,7 @@ public class HTTPMetadataResolver extends AbstractReloadingMetadataResolver {
*
* @return a new instance of {@link HttpClientContext}
*/
- protected HttpClientContext buildHttpClientContext(@Nonnull final HttpUriRequest request) {
+ protected HttpClientContext buildHttpClientContext(@Nonnull final ClassicHttpRequest request) {
// TODO Really request should be @Nonnull, change when we remove deprecated buildHttpClientContext()
final HttpClientContext context = HttpClientContext.create();
@@ -288,7 +288,7 @@ public class HTTPMetadataResolver extends AbstractReloadingMetadataResolver {
*
* @param response GetMethod containing a valid HTTP response
*/
- protected void processConditionalRetrievalHeaders(final HttpResponse response) {
+ protected void processConditionalRetrievalHeaders(final ClassicHttpResponse response) {
Header httpHeader = response.getFirstHeader("ETag");
if (httpHeader != null) {
cachedMetadataETag = httpHeader.getValue();
@@ -309,7 +309,7 @@ public class HTTPMetadataResolver extends AbstractReloadingMetadataResolver {
*
* @throws ResolverException thrown if there is a problem getting the raw metadata bytes from the response
*/
- protected byte[] getMetadataBytesFromResponse(final HttpResponse response) throws ResolverException {
+ protected byte[] getMetadataBytesFromResponse(final ClassicHttpResponse response) throws ResolverException {
log.debug("{} Attempting to extract metadata from response to request for metadata from '{}'",
getLogPrefix(), getMetadataURI());
try {
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilterTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilterTest.java
index 107187443..4e8526a92 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilterTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilterTest.java
@@ -22,7 +22,7 @@ import java.util.ArrayList;
import javax.xml.namespace.QName;
-import org.apache.http.client.HttpClient;
+import org.apache.hc.client5.http.classic.HttpClient;
import org.opensaml.core.testing.XMLObjectBaseTestCase;
import org.opensaml.saml.metadata.resolver.impl.HTTPMetadataResolver;
import org.opensaml.saml.metadata.resolver.impl.HTTPMetadataResolverTest;
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolverTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolverTest.java
index 84cf7753c..4e5f4b6b6 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolverTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/AbstractDynamicHTTPMetadataResolverTest.java
@@ -19,14 +19,12 @@ package org.opensaml.saml.metadata.resolver.impl;
import java.io.ByteArrayOutputStream;
-import org.apache.http.HttpHeaders;
-import org.apache.http.HttpStatus;
-import org.apache.http.ProtocolVersion;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.ResponseHandler;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.message.BasicHeader;
-import org.apache.http.message.BasicHttpResponse;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
+import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
+import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
import org.opensaml.core.criterion.EntityIdCriterion;
import org.opensaml.core.testing.XMLObjectBaseTestCase;
import org.opensaml.core.xml.XMLObject;
@@ -117,11 +115,10 @@ public class AbstractDynamicHTTPMetadataResolverTest extends XMLObjectBaseTestCa
@Test
public void testResponseHandlerXMLObjectSource() throws Exception {
- ResponseHandler<XMLObject> responseHandler = resolver.new BasicMetadataResponseHandler();
+ HttpClientResponseHandler<XMLObject> responseHandler = resolver.new BasicMetadataResponseHandler();
- BasicHttpResponse httpResponse = new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), HttpStatus.SC_OK, "OK");
- ByteArrayEntity entity = new ByteArrayEntity(entityDescriptorBytes);
- entity.setContentType(new BasicHeader(HttpHeaders.CONTENT_TYPE, "text/xml"));
+ BasicClassicHttpResponse httpResponse = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK");
+ ByteArrayEntity entity = new ByteArrayEntity(entityDescriptorBytes, ContentType.TEXT_XML);
httpResponse.setEntity(entity);
XMLObject result = responseHandler.handleResponse(httpResponse);
@@ -133,9 +130,9 @@ public class AbstractDynamicHTTPMetadataResolverTest extends XMLObjectBaseTestCa
@Test
public void testResponseHandlerBadStatusCode() throws Exception {
- ResponseHandler<XMLObject> responseHandler = resolver.new BasicMetadataResponseHandler();
+ HttpClientResponseHandler<XMLObject> responseHandler = resolver.new BasicMetadataResponseHandler();
- BasicHttpResponse httpResponse = new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), HttpStatus.SC_INTERNAL_SERVER_ERROR, "Internal Error");
+ BasicClassicHttpResponse httpResponse = new BasicClassicHttpResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Internal Error");
XMLObject result = responseHandler.handleResponse(httpResponse);
Assert.assertNull(result);
@@ -143,11 +140,10 @@ public class AbstractDynamicHTTPMetadataResolverTest extends XMLObjectBaseTestCa
@Test
public void testResponseHandlerUnsupportedContentType() throws Exception {
- ResponseHandler<XMLObject> responseHandler = resolver.new BasicMetadataResponseHandler();
+ HttpClientResponseHandler<XMLObject> responseHandler = resolver.new BasicMetadataResponseHandler();
- BasicHttpResponse httpResponse = new BasicHttpResponse(new ProtocolVersion("HTTP", 1, 1), HttpStatus.SC_OK, "OK");
- ByteArrayEntity entity = new ByteArrayEntity(entityDescriptorBytes);
- entity.setContentType(new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/foobar"));
+ BasicClassicHttpResponse httpResponse = new BasicClassicHttpResponse(HttpStatus.SC_OK, "OK");
+ ByteArrayEntity entity = new ByteArrayEntity(entityDescriptorBytes, ContentType.create("application/foobar"));
httpResponse.setEntity(entity);
XMLObject result = responseHandler.handleResponse(httpResponse);
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolverTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolverTest.java
index 0c3afa9d4..e5656f557 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolverTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/HTTPMetadataResolverTest.java
@@ -25,7 +25,7 @@ import java.security.cert.X509Certificate;
import java.util.Collections;
import java.util.Set;
-import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
+import org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory;
import org.opensaml.core.criterion.EntityIdCriterion;
import org.opensaml.core.testing.XMLObjectBaseTestCase;
import org.opensaml.saml.saml2.metadata.EntityDescriptor;
diff --git a/opensaml-saml-impl/src/test/resources/logback-test.xml b/opensaml-saml-impl/src/test/resources/logback-test.xml
index 5933e433c..ce1720f5c 100644
--- a/opensaml-saml-impl/src/test/resources/logback-test.xml
+++ b/opensaml-saml-impl/src/test/resources/logback-test.xml
@@ -8,11 +8,15 @@
</encoder>
</appender>
- <logger name="org.apache.http">
+ <logger name="org.apache.hc">
<level value="WARN"/>
</logger>
- <logger name="org.apache.http.wire">
+ <logger name="org.apache.hc.core5.http.wire">
+ <level value="WARN"/>
+ </logger>
+
+ <logger name="org.apache.hc.client5.http.wire">
<level value="WARN"/>
</logger>
@@ -36,6 +40,14 @@
<level value="INFO"/>
</logger>
+ <logger name="org.opensaml.saml.metadata.resolver.impl.HTTPMetadataResolver">
+ <level value="INFO"/>
+ </logger>
+
+ <logger name="net.shibboleth.shared.httpclient.RequestConnectionClose">
+ <level value="INFO"/>
+ </logger>
+
<logger name="org.opensaml.messaging">
<level value="INFO"/>
</logger>
diff --git a/opensaml-security-api/pom.xml b/opensaml-security-api/pom.xml
index de82f425b..ffee7ccb3 100644
--- a/opensaml-security-api/pom.xml
+++ b/opensaml-security-api/pom.xml
@@ -69,7 +69,7 @@
<dependency>
<groupId>${httpclient.groupId}</groupId>
- <artifactId>httpclient</artifactId>
+ <artifactId>${httpclient.artifactId}</artifactId>
</dependency>
<!-- Provided Dependencies -->
diff --git a/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityConfiguration.java b/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityConfiguration.java
index 1fb9ceb80..959f20aef 100644
--- a/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityConfiguration.java
+++ b/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityConfiguration.java
@@ -22,7 +22,7 @@ import java.util.List;
import javax.annotation.Nullable;
import javax.net.ssl.HostnameVerifier;
-import org.apache.http.client.CredentialsProvider;
+import org.apache.hc.client5.http.auth.CredentialsProvider;
import org.opensaml.security.trust.TrustEngine;
import org.opensaml.security.x509.X509Credential;
diff --git a/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityContextHandler.java b/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityContextHandler.java
index ff9fce74c..069a727ee 100644
--- a/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityContextHandler.java
+++ b/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityContextHandler.java
@@ -21,8 +21,8 @@ import java.io.IOException;
import javax.annotation.Nullable;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
import net.shibboleth.shared.component.AbstractInitializableComponent;
import net.shibboleth.shared.httpclient.HttpClientContextHandler;
@@ -59,7 +59,7 @@ public class HttpClientSecurityContextHandler extends AbstractInitializableCompo
}
/** {@inheritDoc} */
- public void invokeBefore(final HttpClientContext context, final HttpUriRequest request) throws IOException {
+ public void invokeBefore(final HttpClientContext context, final ClassicHttpRequest request) throws IOException {
checkComponentActive();
HttpClientSecuritySupport.marshalSecurityParameters(context, httpClientSecurityParameters, false);
@@ -67,10 +67,10 @@ public class HttpClientSecurityContextHandler extends AbstractInitializableCompo
}
/** {@inheritDoc} */
- public void invokeAfter(final HttpClientContext context, final HttpUriRequest request) throws IOException {
+ public void invokeAfter(final HttpClientContext context, final ClassicHttpRequest request) throws IOException {
checkComponentActive();
- HttpClientSecuritySupport.checkTLSCredentialEvaluated(context, request.getURI().getScheme());
+ HttpClientSecuritySupport.checkTLSCredentialEvaluated(context, request.getScheme());
}
}
\ No newline at end of file
diff --git a/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityParameters.java b/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityParameters.java
index 77e3addcc..94af2f80b 100644
--- a/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityParameters.java
+++ b/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecurityParameters.java
@@ -27,11 +27,11 @@ import javax.net.ssl.HostnameVerifier;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.AuthCache;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.hc.client5.http.auth.AuthCache;
+import org.apache.hc.client5.http.auth.AuthScope;
+import org.apache.hc.client5.http.auth.CredentialsProvider;
+import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
+import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
import org.opensaml.security.trust.TrustEngine;
import org.opensaml.security.x509.X509Credential;
@@ -147,7 +147,7 @@ public class HttpClientSecurityParameters {
if (credentials != null) {
AuthScope authScope = scope;
if (authScope == null) {
- authScope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT);
+ authScope = new AuthScope(null, -1);
}
final BasicCredentialsProvider provider = new BasicCredentialsProvider();
provider.setCredentials(authScope, credentials);
diff --git a/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecuritySupport.java b/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecuritySupport.java
index 2500c75b6..bcbb6c13c 100644
--- a/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecuritySupport.java
+++ b/opensaml-security-api/src/main/java/org/opensaml/security/httpclient/HttpClientSecuritySupport.java
@@ -26,14 +26,15 @@ import static org.opensaml.security.httpclient.HttpClientSecurityConstants.CONTE
import static org.opensaml.security.httpclient.HttpClientSecurityConstants.CONTEXT_KEY_TRUST_ENGINE;
import static org.opensaml.security.httpclient.HttpClientSecurityConstants.CONTEXT_KEY_SERVER_TLS_FAILURE_IS_FATAL;
+import java.net.URISyntaxException;
import java.util.Collections;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.net.ssl.SSLPeerUnverifiedException;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.HttpRequest;
import org.opensaml.core.config.ConfigurationService;
import org.opensaml.security.credential.UsageType;
import org.opensaml.security.criteria.UsageCriterion;
@@ -45,7 +46,7 @@ import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.resolver.CriteriaSet;
/**
- * Support class for working with {@link org.apache.http.client.HttpClient} security features.
+ * Support class for working with {@link org.apache.hc.client5.http.classic.HttpClient} security features.
*/
public final class HttpClientSecuritySupport {
@@ -71,25 +72,29 @@ public final class HttpClientSecuritySupport {
* @param request the current HTTP request
*/
public static void addDefaultTLSTrustEngineCriteria(@Nonnull final HttpClientContext context,
- @Nonnull final HttpUriRequest request) {
+ @Nonnull final HttpRequest request) {
- if ("https".equalsIgnoreCase(request.getURI().getScheme())
+ if ("https".equalsIgnoreCase(request.getScheme())
&& context.getAttribute(CONTEXT_KEY_TRUST_ENGINE) != null) {
-
+
CriteriaSet criteria = (CriteriaSet) context.getAttribute(CONTEXT_KEY_CRITERIA_SET);
if (criteria == null) {
criteria = new CriteriaSet();
context.setAttribute(CONTEXT_KEY_CRITERIA_SET, criteria);
}
-
+
if (!criteria.contains(UsageCriterion.class)) {
criteria.add(new UsageCriterion(UsageType.SIGNING));
}
-
+
if (!criteria.contains(TrustedNamesCriterion.class)) {
- criteria.add(new TrustedNamesCriterion(Collections.singleton(request.getURI().getHost())));
+ try {
+ criteria.add(new TrustedNamesCriterion(Collections.singleton(request.getUri().getHost())));
+ } catch (URISyntaxException e) {
+ LOG.error("HttpRequest URI was invalid, got not extract hostname for TrustedNamesCriterion", e);
+ }
}
-
+
}
}
diff --git a/opensaml-security-api/src/main/java/org/opensaml/security/messaging/HttpClientSecurityContext.java b/opensaml-security-api/src/main/java/org/opensaml/security/messaging/HttpClientSecurityContext.java
index 3942ae708..4d7082297 100644
--- a/opensaml-security-api/src/main/java/org/opensaml/security/messaging/HttpClientSecurityContext.java
+++ b/opensaml-security-api/src/main/java/org/opensaml/security/messaging/HttpClientSecurityContext.java
@@ -28,7 +28,8 @@ import org.opensaml.security.httpclient.HttpClientSecurityParameters;
import net.shibboleth.shared.resolver.CriteriaSet;
/**
- * A context implementation holding parameters related to {@link org.apache.http.client.HttpClient} security features.
+ * A context implementation holding parameters related to {@link org.apache.hc.client5.http.classic.HttpClient}
+ * security features.
*/
public final class HttpClientSecurityContext extends BaseContext {
diff --git a/opensaml-security-api/src/test/java/org/opensaml/security/httpclient/HttpClientSecuritySupportTest.java b/opensaml-security-api/src/test/java/org/opensaml/security/httpclient/HttpClientSecuritySupportTest.java
index 462dc315e..463a6b082 100644
--- a/opensaml-security-api/src/test/java/org/opensaml/security/httpclient/HttpClientSecuritySupportTest.java
+++ b/opensaml-security-api/src/test/java/org/opensaml/security/httpclient/HttpClientSecuritySupportTest.java
@@ -41,11 +41,11 @@ import javax.net.ssl.SSLPeerUnverifiedException;
import net.shibboleth.shared.logic.ConstraintViolationException;
import net.shibboleth.shared.resolver.CriteriaSet;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.conn.ssl.DefaultHostnameVerifier;
-import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.hc.client5.http.auth.CredentialsProvider;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.client5.http.ssl.DefaultHostnameVerifier;
import org.opensaml.security.SecurityException;
import org.opensaml.security.credential.UsageType;
import org.opensaml.security.criteria.UsageCriterion;
diff --git a/opensaml-security-api/src/test/java/org/opensaml/security/httpclient/SecurityEnhancedHTTPResourceTest.java b/opensaml-security-api/src/test/java/org/opensaml/security/httpclient/SecurityEnhancedHTTPResourceTest.java
index 73b3d52f3..e7b8bdf37 100644
--- a/opensaml-security-api/src/test/java/org/opensaml/security/httpclient/SecurityEnhancedHTTPResourceTest.java
+++ b/opensaml-security-api/src/test/java/org/opensaml/security/httpclient/SecurityEnhancedHTTPResourceTest.java
@@ -29,7 +29,7 @@ import net.shibboleth.shared.spring.httpclient.resource.HTTPResource;
import net.shibboleth.shared.testing.RepositorySupport;
import net.shibboleth.shared.testing.ResourceTestHelper;
-import org.apache.http.client.HttpClient;
+import org.apache.hc.client5.http.classic.HttpClient;
import org.springframework.core.io.ClassPathResource;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
diff --git a/opensaml-security-impl/pom.xml b/opensaml-security-impl/pom.xml
index fa0338ddd..7157a3f41 100644
--- a/opensaml-security-impl/pom.xml
+++ b/opensaml-security-impl/pom.xml
@@ -57,13 +57,12 @@
<dependency>
<groupId>${httpclient.groupId}</groupId>
- <artifactId>httpclient</artifactId>
+ <artifactId>${httpclient.artifactId}</artifactId>
<optional>true</optional>
</dependency>
-
<dependency>
- <groupId>${httpclient.groupId}</groupId>
- <artifactId>httpcore</artifactId>
+ <groupId>${httpclient.httpcore.groupId}</groupId>
+ <artifactId>${httpclient.httpcore.artifactId}</artifactId>
<optional>true</optional>
</dependency>
diff --git a/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityConfiguration.java b/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityConfiguration.java
index 465518929..4a79ff22f 100644
--- a/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityConfiguration.java
+++ b/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityConfiguration.java
@@ -24,10 +24,10 @@ import java.util.List;
import javax.annotation.Nullable;
import javax.net.ssl.HostnameVerifier;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.hc.client5.http.auth.AuthScope;
+import org.apache.hc.client5.http.auth.CredentialsProvider;
+import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
+import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
import org.opensaml.security.httpclient.HttpClientSecurityConfiguration;
import org.opensaml.security.trust.TrustEngine;
import org.opensaml.security.x509.X509Credential;
@@ -117,7 +117,7 @@ public class BasicHttpClientSecurityConfiguration implements HttpClientSecurityC
if (credentials != null) {
AuthScope authScope = scope;
if (authScope == null) {
- authScope = new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT);
+ authScope = new AuthScope(null, -1);
}
final BasicCredentialsProvider provider = new BasicCredentialsProvider();
provider.setCredentials(authScope, credentials);
diff --git a/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/SecurityEnhancedHttpClientSupport.java b/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/SecurityEnhancedHttpClientSupport.java
index 9a4fba64a..d44fe19fc 100644
--- a/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/SecurityEnhancedHttpClientSupport.java
+++ b/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/SecurityEnhancedHttpClientSupport.java
@@ -25,8 +25,7 @@ import javax.net.ssl.TrustManager;
import javax.net.ssl.X509KeyManager;
import javax.net.ssl.X509TrustManager;
-import org.apache.http.client.HttpClient;
-import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
+import org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory;
import org.opensaml.security.trust.TrustEngine;
import org.opensaml.security.x509.tls.impl.ThreadLocalX509CredentialKeyManager;
import org.opensaml.security.x509.tls.impl.ThreadLocalX509TrustManager;
diff --git a/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/SecurityEnhancedTLSSocketFactory.java b/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/SecurityEnhancedTLSSocketFactory.java
index 8fc2b5629..9e3fa3fbb 100644
--- a/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/SecurityEnhancedTLSSocketFactory.java
+++ b/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/SecurityEnhancedTLSSocketFactory.java
@@ -28,10 +28,11 @@ import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.X509TrustManager;
-import org.apache.http.HttpHost;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
-import org.apache.http.protocol.HttpContext;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.util.TimeValue;
import org.opensaml.security.credential.UsageType;
import org.opensaml.security.criteria.UsageCriterion;
import org.opensaml.security.httpclient.HttpClientSecurityConstants;
@@ -139,7 +140,7 @@ public class SecurityEnhancedTLSSocketFactory implements LayeredConnectionSocket
// CheckStyle: ParameterNumber OFF
/** {@inheritDoc} */
- public Socket connectSocket(final int connectTimeout, final Socket sock, final HttpHost host,
+ public Socket connectSocket(TimeValue connectTimeout, final Socket sock, final HttpHost host,
final InetSocketAddress remoteAddress, final InetSocketAddress localAddress,
final HttpContext context) throws IOException {
diff --git a/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/ThreadLocalClientTLSCredentialHandler.java b/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/ThreadLocalClientTLSCredentialHandler.java
index 462b748c3..a8f33c0b6 100644
--- a/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/ThreadLocalClientTLSCredentialHandler.java
+++ b/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/ThreadLocalClientTLSCredentialHandler.java
@@ -21,8 +21,8 @@ import java.io.IOException;
import javax.annotation.Nonnull;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
import org.opensaml.security.x509.tls.impl.ThreadLocalX509CredentialContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,14 +39,14 @@ public class ThreadLocalClientTLSCredentialHandler implements HttpClientContextH
private final Logger log = LoggerFactory.getLogger(ThreadLocalClientTLSCredentialHandler.class);
/** {@inheritDoc} */
- public void invokeBefore(@Nonnull final HttpClientContext context, @Nonnull final HttpUriRequest request)
+ public void invokeBefore(@Nonnull final HttpClientContext context, @Nonnull final ClassicHttpRequest request)
throws IOException {
// Do nothing here
}
/** {@inheritDoc} */
- public void invokeAfter(@Nonnull final HttpClientContext context, @Nonnull final HttpUriRequest request)
+ public void invokeAfter(@Nonnull final HttpClientContext context, @Nonnull final ClassicHttpRequest request)
throws IOException {
log.trace("Clearing thread-local client TLS X509Credential");
ThreadLocalX509CredentialContext.clearCurrent();
diff --git a/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/ThreadLocalServerTLSHandler.java b/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/ThreadLocalServerTLSHandler.java
index ffdaa9a26..5cc2f922c 100644
--- a/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/ThreadLocalServerTLSHandler.java
+++ b/opensaml-security-impl/src/main/java/org/opensaml/security/httpclient/impl/ThreadLocalServerTLSHandler.java
@@ -21,8 +21,8 @@ import java.io.IOException;
import javax.annotation.Nonnull;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
import org.opensaml.security.httpclient.HttpClientSecurityConstants;
import org.opensaml.security.x509.tls.impl.ThreadLocalX509TrustEngineContext;
import org.slf4j.Logger;
@@ -40,14 +40,14 @@ public class ThreadLocalServerTLSHandler implements HttpClientContextHandler {
private final Logger log = LoggerFactory.getLogger(ThreadLocalServerTLSHandler.class);
/** {@inheritDoc} */
- public void invokeBefore(@Nonnull final HttpClientContext context, @Nonnull final HttpUriRequest request)
+ public void invokeBefore(@Nonnull final HttpClientContext context, @Nonnull final ClassicHttpRequest request)
throws IOException {
// Do nothing here
}
/** {@inheritDoc} */
- public void invokeAfter(@Nonnull final HttpClientContext context, @Nonnull final HttpUriRequest request)
+ public void invokeAfter(@Nonnull final HttpClientContext context, @Nonnull final ClassicHttpRequest request)
throws IOException {
log.trace("Saw ThreadLocalX509TrustEngineContext.getTrusted: {}",
diff --git a/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityConfigurationTest.java b/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityConfigurationTest.java
index 38a9cf6dd..5eab2907b 100644
--- a/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityConfigurationTest.java
+++ b/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityConfigurationTest.java
@@ -22,9 +22,9 @@ import java.net.URISyntaxException;
import java.security.cert.CertificateException;
import java.util.Collections;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.conn.ssl.DefaultHostnameVerifier;
-import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
+import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
+import org.apache.hc.client5.http.ssl.DefaultHostnameVerifier;
import org.opensaml.security.SecurityException;
import org.opensaml.security.credential.CredentialSupport;
import org.opensaml.security.trust.TrustEngine;
@@ -80,7 +80,7 @@ public class BasicHttpClientSecurityConfigurationTest {
@Test
public void testCredentialsProvider() {
BasicHttpClientSecurityConfiguration config = new BasicHttpClientSecurityConfiguration();
- config.setBasicCredentials(new UsernamePasswordCredentials("test", "test"));
+ config.setBasicCredentials(new UsernamePasswordCredentials("test", "test".toCharArray()));
Assert.assertNotNull(config.getCredentialsProvider());
}
diff --git a/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityParametersResolverTest.java b/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityParametersResolverTest.java
index 49ddf87f4..54c77e068 100644
--- a/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityParametersResolverTest.java
+++ b/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/BasicHttpClientSecurityParametersResolverTest.java
@@ -23,8 +23,8 @@ import java.security.KeyException;
import java.security.cert.CertificateException;
import java.util.Collections;
-import org.apache.http.conn.ssl.DefaultHostnameVerifier;
-import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
+import org.apache.hc.client5.http.ssl.DefaultHostnameVerifier;
import org.opensaml.security.SecurityException;
import org.opensaml.security.credential.CredentialSupport;
import org.opensaml.security.crypto.KeySupport;
diff --git a/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/MockTLSSocketFactory.java b/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/MockTLSSocketFactory.java
index 2af8d0f0e..ea80e9e48 100644
--- a/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/MockTLSSocketFactory.java
+++ b/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/MockTLSSocketFactory.java
@@ -24,9 +24,10 @@ import java.net.UnknownHostException;
import java.security.cert.Certificate;
import java.util.List;
-import org.apache.http.HttpHost;
-import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
-import org.apache.http.protocol.HttpContext;
+import org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.util.TimeValue;
/**
* Mock HttpClient SSL/TLS socket factory.
@@ -49,7 +50,7 @@ public class MockTLSSocketFactory implements LayeredConnectionSocketFactory {
}
/** {@inheritDoc} */
- public Socket connectSocket(int connectTimeout, Socket sock, HttpHost host, InetSocketAddress remoteAddress,
+ public Socket connectSocket(TimeValue connectTimeout, Socket sock, HttpHost host, InetSocketAddress remoteAddress,
InetSocketAddress localAddress, HttpContext context) throws IOException {
return this.socket;
}
diff --git a/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/SecurityEnhancedTLSSocketFactoryTest.java b/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/SecurityEnhancedTLSSocketFactoryTest.java
index f0d6634d5..8a0202bc4 100644
--- a/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/SecurityEnhancedTLSSocketFactoryTest.java
+++ b/opensaml-security-impl/src/test/java/org/opensaml/security/httpclient/impl/SecurityEnhancedTLSSocketFactoryTest.java
@@ -26,10 +26,11 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.List;
-import org.apache.http.HttpHost;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
-import org.apache.http.protocol.HttpContext;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.util.TimeValue;
import org.opensaml.security.credential.impl.StaticCredentialResolver;
import org.opensaml.security.httpclient.HttpClientSecurityConstants;
import org.opensaml.security.trust.impl.ExplicitKeyTrustEngine;
@@ -72,7 +73,7 @@ public class SecurityEnhancedTLSSocketFactoryTest {
securityEnhancedSocketFactory = new SecurityEnhancedTLSSocketFactory(buildInnerSSLFactory(null, hostname));
Socket socket = securityEnhancedSocketFactory.createSocket(httpContext);
- securityEnhancedSocketFactory.connectSocket(0, socket, new HttpHost(hostname, 80, "http"), null, null, httpContext);
+ securityEnhancedSocketFactory.connectSocket(TimeValue.ofMilliseconds(0), socket, new HttpHost("http", hostname, 80), null, null, httpContext);
Assert.assertFalse(ThreadLocalX509TrustEngineContext.haveCurrent());
Assert.assertFalse(HttpClientSupport.getDynamicContextHandlerList(
@@ -91,7 +92,7 @@ public class SecurityEnhancedTLSSocketFactoryTest {
Collections.singletonList((Certificate)cred.getEntityCertificate()), hostname));
Socket socket = securityEnhancedSocketFactory.createSocket(httpContext);
- securityEnhancedSocketFactory.connectSocket(0, socket, new HttpHost(hostname, 443, "https"), null, null, httpContext);
+ securityEnhancedSocketFactory.connectSocket(TimeValue.ofMilliseconds(0), socket, new HttpHost("https", hostname, 443), null, null, httpContext);
Assert.assertFalse(ThreadLocalX509TrustEngineContext.haveCurrent());
Assert.assertFalse(HttpClientSupport.getDynamicContextHandlerList(
@@ -112,7 +113,7 @@ public class SecurityEnhancedTLSSocketFactoryTest {
Collections.singletonList((Certificate)cred.getEntityCertificate()), hostname));
Socket socket = securityEnhancedSocketFactory.createSocket(httpContext);
- securityEnhancedSocketFactory.connectSocket(0, socket, new HttpHost(hostname, 443, "https"), null, null, httpContext);
+ securityEnhancedSocketFactory.connectSocket(TimeValue.ofMilliseconds(0), socket, new HttpHost("https", hostname, 443), null, null, httpContext);
Assert.assertTrue(ThreadLocalX509TrustEngineContext.haveCurrent());
Assert.assertSame(ThreadLocalX509TrustEngineContext.getTrustEngine(), trustEngine);
@@ -139,7 +140,7 @@ public class SecurityEnhancedTLSSocketFactoryTest {
Collections.singletonList((Certificate)cred.getEntityCertificate()), hostname));
Socket socket = securityEnhancedSocketFactory.createSocket(httpContext);
- securityEnhancedSocketFactory.connectSocket(0, socket, new HttpHost(hostname, 443, "https"), null, null, httpContext);
+ securityEnhancedSocketFactory.connectSocket(TimeValue.ofMilliseconds(0), socket, new HttpHost("https", hostname, 443), null, null, httpContext);
Assert.assertTrue(ThreadLocalX509TrustEngineContext.haveCurrent());
Assert.assertSame(ThreadLocalX509TrustEngineContext.getTrustEngine(), trustEngine);
@@ -167,7 +168,7 @@ public class SecurityEnhancedTLSSocketFactoryTest {
Collections.singletonList((Certificate)cred.getEntityCertificate()), hostname));
Socket socket = securityEnhancedSocketFactory.createSocket(httpContext);
- securityEnhancedSocketFactory.connectSocket(0, socket, new HttpHost(hostname, 443, "https"), null, null, httpContext);
+ securityEnhancedSocketFactory.connectSocket(TimeValue.ofMilliseconds(0), socket, new HttpHost("https", hostname, 443), null, null, httpContext);
Assert.assertTrue(ThreadLocalX509TrustEngineContext.haveCurrent());
Assert.assertSame(ThreadLocalX509TrustEngineContext.getTrustEngine(), trustEngine);
@@ -189,7 +190,7 @@ public class SecurityEnhancedTLSSocketFactoryTest {
securityEnhancedSocketFactory = new SecurityEnhancedTLSSocketFactory(buildInnerSSLFactory(null, hostname));
Socket socket = securityEnhancedSocketFactory.createSocket(httpContext);
- securityEnhancedSocketFactory.connectSocket(0, socket, new HttpHost(hostname, 443, "https"), null, null, httpContext);
+ securityEnhancedSocketFactory.connectSocket(TimeValue.ofMilliseconds(0), socket, new HttpHost("https", hostname, 443), null, null, httpContext);
Assert.assertFalse(ThreadLocalX509TrustEngineContext.haveCurrent());
Assert.assertFalse(HttpClientSupport.getDynamicContextHandlerList(
diff --git a/opensaml-soap-api/pom.xml b/opensaml-soap-api/pom.xml
index 19c06ffa3..15f44c93d 100644
--- a/opensaml-soap-api/pom.xml
+++ b/opensaml-soap-api/pom.xml
@@ -47,13 +47,12 @@
</dependency>
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
+ <groupId>${httpclient.groupId}</groupId>
+ <artifactId>${httpclient.artifactId}</artifactId>
</dependency>
-
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
+ <groupId>${httpclient.httpcore.groupId}</groupId>
+ <artifactId>${httpclient.httpcore.artifactId}</artifactId>
</dependency>
<!-- Provided Dependencies -->
diff --git a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/AbstractPipelineHttpSOAPClient.java b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/AbstractPipelineHttpSOAPClient.java
index 4c26315e6..19db0bb00 100644
--- a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/AbstractPipelineHttpSOAPClient.java
+++ b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/AbstractPipelineHttpSOAPClient.java
@@ -29,12 +29,12 @@ import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
import javax.net.ssl.SSLException;
-import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.hc.client5.http.ClientProtocolException;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ClassicHttpResponse;
import org.opensaml.messaging.context.InOutOperationContext;
import org.opensaml.messaging.context.httpclient.HttpClientRequestContext;
import org.opensaml.messaging.decoder.MessageDecodingException;
@@ -194,7 +194,7 @@ public abstract class AbstractPipelineHttpSOAPClient
pipeline.getOutboundPayloadMessageHandler().invoke(operationContext.getOutboundMessageContext());
}
- final HttpUriRequest httpRequest = buildHttpRequest(endpoint, operationContext);
+ final ClassicHttpRequest httpRequest = buildHttpRequest(endpoint, operationContext);
// Request encoding + outbound transport handling
final HttpClientRequestMessageEncoder encoder = pipeline.getEncoder();
encoder.setHttpRequest(httpRequest);
@@ -209,8 +209,8 @@ public abstract class AbstractPipelineHttpSOAPClient
// HttpClient execution
final HttpClientContext httpContext = buildHttpContext(httpRequest, operationContext);
- final HttpResponse httpResponse = getHttpClient().execute(httpRequest, httpContext);
- HttpClientSecuritySupport.checkTLSCredentialEvaluated(httpContext, httpRequest.getURI().getScheme());
+ final ClassicHttpResponse httpResponse = getHttpClient().executeOpen(null, httpRequest, httpContext);
+ HttpClientSecuritySupport.checkTLSCredentialEvaluated(httpContext, httpRequest.getScheme());
// Response decoding
final HttpClientResponseMessageDecoder decoder = pipeline.getDecoder();
@@ -297,13 +297,13 @@ public abstract class AbstractPipelineHttpSOAPClient
throws SOAPException;
/**
- * Build the {@link HttpUriRequest} instance to be executed by the HttpClient.
+ * Build the {@link ClassicHttpRequest} instance to be executed by the HttpClient.
*
* @param endpoint the endpoint to which the message will be sent
* @param operationContext the current operation context
* @return the HTTP request to be executed
*/
- @Nonnull protected HttpUriRequest buildHttpRequest(@Nonnull @NotEmpty final String endpoint,
+ @Nonnull protected ClassicHttpRequest buildHttpRequest(@Nonnull @NotEmpty final String endpoint,
@Nonnull final InOutOperationContext operationContext) {
return new HttpPost(endpoint);
}
@@ -315,7 +315,7 @@ public abstract class AbstractPipelineHttpSOAPClient
* @param operationContext the current operation context
* @return the client context instance
*/
- @Nonnull protected HttpClientContext buildHttpContext(@Nonnull final HttpUriRequest request,
+ @Nonnull protected HttpClientContext buildHttpContext(@Nonnull final ClassicHttpRequest request,
@Nonnull final InOutOperationContext operationContext) {
final HttpClientContext clientContext = resolveClientContext(operationContext);
@@ -327,7 +327,7 @@ public abstract class AbstractPipelineHttpSOAPClient
HttpClientSecuritySupport.marshalSecurityParameters(clientContext, getHttpClientSecurityParameters(), false);
- if ("https".equalsIgnoreCase(request.getURI().getScheme())
+ if ("https".equalsIgnoreCase(request.getScheme())
&& clientContext.getAttribute(CONTEXT_KEY_TRUST_ENGINE) != null) {
if (clientContext.getAttribute(CONTEXT_KEY_CRITERIA_SET) == null) {
@@ -408,7 +408,7 @@ public abstract class AbstractPipelineHttpSOAPClient
* @param operationContext the current operation context
* @return the new criteria set instance
*/
- @Nonnull protected CriteriaSet buildTLSCriteriaSet(@Nonnull final HttpUriRequest request,
+ @Nonnull protected CriteriaSet buildTLSCriteriaSet(@Nonnull final ClassicHttpRequest request,
@Nonnull final InOutOperationContext operationContext) {
final CriteriaSet criteriaSet = new CriteriaSet();
diff --git a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/HttpSOAPClient.java b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/HttpSOAPClient.java
index 2624c8cf4..b0789b410 100644
--- a/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/HttpSOAPClient.java
+++ b/opensaml-soap-api/src/main/java/org/opensaml/soap/client/http/HttpSOAPClient.java
@@ -28,14 +28,14 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.HttpClient;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
import org.opensaml.core.xml.io.Marshaller;
@@ -211,10 +211,10 @@ public class HttpSOAPClient extends AbstractInitializableComponent implements SO
try {
post = createPostMethod(endpoint, soapRequestParams, soapCtx.getEnvelope());
- HttpResponse response = null;
+ ClassicHttpResponse response = null;
try {
- response = httpClient.execute(post);
- final int code = response.getStatusLine().getStatusCode();
+ response = httpClient.executeOpen(null, post, null);
+ final int code = response.getCode();
log.debug("Received HTTP status code of {} when POSTing SOAP message to {}", code, endpoint);
if (code == HttpStatus.SC_OK) {
@@ -291,7 +291,7 @@ public class HttpSOAPClient extends AbstractInitializableComponent implements SO
SerializeSupport.prettyPrintXML(marshaller.marshall(message)));
}
SerializeSupport.writeNode(marshaller.marshall(message), arrayOut);
- return new ByteArrayEntity(arrayOut.toByteArray(), ContentType.create("text/xml", charset));
+ return new ByteArrayEntity(arrayOut.toByteArray(), ContentType.TEXT_XML);
} catch (final MarshallingException e) {
throw new SOAPClientException("Unable to marshall SOAP envelope", e);
}
@@ -305,7 +305,7 @@ public class HttpSOAPClient extends AbstractInitializableComponent implements SO
*
* @throws SOAPClientException thrown if there is a problem reading the response from the {@link HttpPost}
*/
- protected void processSuccessfulResponse(@Nonnull final HttpResponse httpResponse,
+ protected void processSuccessfulResponse(@Nonnull final ClassicHttpResponse httpResponse,
@Nonnull final InOutOperationContext context) throws SOAPClientException {
try {
if (httpResponse.getEntity() == null) {
@@ -330,7 +330,7 @@ public class HttpSOAPClient extends AbstractInitializableComponent implements SO
* @throws SOAPClientException thrown if the response can not be read from the {@link HttpPost}
* @throws SOAPFaultException an exception containing the SOAP fault
*/
- protected void processFaultResponse(@Nonnull final HttpResponse httpResponse,
+ protected void processFaultResponse(@Nonnull final ClassicHttpResponse httpResponse,
@Nonnull final InOutOperationContext context) throws SOAPClientException, SOAPFaultException {
try {
if (httpResponse.getEntity() == null) {
diff --git a/opensaml-soap-impl/pom.xml b/opensaml-soap-impl/pom.xml
index 18d2ac2f1..82a8e9267 100644
--- a/opensaml-soap-impl/pom.xml
+++ b/opensaml-soap-impl/pom.xml
@@ -73,16 +73,14 @@
</dependency>
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
+ <groupId>${httpclient.groupId}</groupId>
+ <artifactId>${httpclient.artifactId}</artifactId>
</dependency>
-
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
+ <groupId>${httpclient.httpcore.groupId}</groupId>
+ <artifactId>${httpclient.httpcore.artifactId}</artifactId>
</dependency>
-
<!-- Provided Dependencies -->
<dependency>
<groupId>jakarta.servlet</groupId>
diff --git a/opensaml-soap-impl/src/main/java/org/opensaml/soap/client/soap11/decoder/http/impl/HttpClientResponseSOAP11Decoder.java b/opensaml-soap-impl/src/main/java/org/opensaml/soap/client/soap11/decoder/http/impl/HttpClientResponseSOAP11Decoder.java
index 2262f9da9..8d2988913 100644
--- a/opensaml-soap-impl/src/main/java/org/opensaml/soap/client/soap11/decoder/http/impl/HttpClientResponseSOAP11Decoder.java
+++ b/opensaml-soap-impl/src/main/java/org/opensaml/soap/client/soap11/decoder/http/impl/HttpClientResponseSOAP11Decoder.java
@@ -22,9 +22,9 @@ import java.util.List;
import javax.xml.namespace.QName;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpStatus;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.messaging.context.MessageContext;
import org.opensaml.messaging.decoder.MessageDecodingException;
@@ -83,11 +83,11 @@ public class HttpClientResponseSOAP11Decoder extends BaseHttpClientResponseXMLMe
/** {@inheritDoc} */
protected void doDecode() throws MessageDecodingException {
final MessageContext messageContext = new MessageContext();
- final HttpResponse response = getHttpResponse();
+ final ClassicHttpResponse response = getHttpResponse();
log.debug("Unmarshalling SOAP message");
try {
- final int responseStatusCode = response.getStatusLine().getStatusCode();
+ final int responseStatusCode = response.getCode();
switch(responseStatusCode) {
case HttpStatus.SC_OK:
@@ -139,7 +139,7 @@ public class HttpClientResponseSOAP11Decoder extends BaseHttpClientResponseXMLMe
* @throws MessageDecodingException if message can not be unmarshalled
* @throws IOException if there is a problem with the response entity input stream
*/
- protected void processSuccessResponse(final HttpResponse httpResponse, final SOAP11Context soapContext)
+ protected void processSuccessResponse(final ClassicHttpResponse httpResponse, final SOAP11Context soapContext)
throws MessageDecodingException, IOException {
if (httpResponse.getEntity() == null) {
@@ -154,7 +154,7 @@ public class HttpClientResponseSOAP11Decoder extends BaseHttpClientResponseXMLMe
}
soapContext.setEnvelope(soapMessage);
- soapContext.setHTTPResponseStatus(httpResponse.getStatusLine().getStatusCode());
+ soapContext.setHTTPResponseStatus(httpResponse.getCode());
}
/**
@@ -166,7 +166,7 @@ public class HttpClientResponseSOAP11Decoder extends BaseHttpClientResponseXMLMe
* @throws MessageDecodingException if message can not be unmarshalled
* @throws IOException if there is a problem with the response entity input stream
*/
- protected MessageDecodingException buildFaultException(final HttpResponse response)
+ protected MessageDecodingException buildFaultException(final ClassicHttpResponse response)
throws MessageDecodingException, IOException {
if (response.getEntity() == null) {
diff --git a/opensaml-soap-impl/src/main/java/org/opensaml/soap/client/soap11/encoder/http/impl/HttpClientRequestSOAP11Encoder.java b/opensaml-soap-impl/src/main/java/org/opensaml/soap/client/soap11/encoder/http/impl/HttpClientRequestSOAP11Encoder.java
index 8b4fdccab..a41891900 100644
--- a/opensaml-soap-impl/src/main/java/org/opensaml/soap/client/soap11/encoder/http/impl/HttpClientRequestSOAP11Encoder.java
+++ b/opensaml-soap-impl/src/main/java/org/opensaml/soap/client/soap11/encoder/http/impl/HttpClientRequestSOAP11Encoder.java
@@ -24,11 +24,11 @@ import java.util.List;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpRequest;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.entity.ContentType;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpEntity;
+import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.XMLObjectBuilderFactory;
import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
@@ -83,7 +83,7 @@ public class HttpClientRequestSOAP11Encoder extends BaseHttpClientRequestXMLMess
*
* <p>This encoder implementation only operates on instances of {@link HttpPost}.</p>
*/
- public synchronized void setHttpRequest(final HttpRequest httpRequest) {
+ public synchronized void setHttpRequest(final ClassicHttpRequest httpRequest) {
if (!(httpRequest instanceof HttpPost)) {
throw new IllegalArgumentException("HttpClient SOAP message encoder only operates on HttpPost");
}
@@ -130,7 +130,7 @@ public class HttpClientRequestSOAP11Encoder extends BaseHttpClientRequestXMLMess
try {
final ByteArrayOutputStream arrayOut = new ByteArrayOutputStream();
SerializeSupport.writeNode(XMLObjectSupport.marshall(message), arrayOut);
- return new ByteArrayEntity(arrayOut.toByteArray(), ContentType.create("text/xml", charset));
+ return new ByteArrayEntity(arrayOut.toByteArray(), ContentType.TEXT_XML, charset.name());
} catch (final MarshallingException e) {
throw new MessageEncodingException("Unable to marshall SOAP envelope", e);
}
diff --git a/opensaml-soap-impl/src/test/java/org/opensaml/soap/client/soap11/decoder/http/impl/HttpClientResponseSOAP11DecoderTest.java b/opensaml-soap-impl/src/test/java/org/opensaml/soap/client/soap11/decoder/http/impl/HttpClientResponseSOAP11DecoderTest.java
index 71a31111c..f58d29b6d 100644
--- a/opensaml-soap-impl/src/test/java/org/opensaml/soap/client/soap11/decoder/http/impl/HttpClientResponseSOAP11DecoderTest.java
+++ b/opensaml-soap-impl/src/test/java/org/opensaml/soap/client/soap11/decoder/http/impl/HttpClientResponseSOAP11DecoderTest.java
@@ -25,11 +25,13 @@ import javax.xml.namespace.QName;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.xml.SerializeSupport;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.HttpVersion;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.message.BasicHttpResponse;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.HttpVersion;
+import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
+import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
+import org.apache.hc.core5.http.message.BasicHttpResponse;
import org.opensaml.core.testing.XMLObjectBaseTestCase;
import org.opensaml.core.xml.io.MarshallingException;
import org.opensaml.core.xml.mock.SimpleXMLObject;
@@ -63,7 +65,7 @@ public class HttpClientResponseSOAP11DecoderTest extends XMLObjectBaseTestCase {
public void testDecodeToPayload() throws ComponentInitializationException, MessageDecodingException, MarshallingException, IOException {
Envelope envelope = buildMessageSkeleton();
envelope.getBody().getUnknownXMLObjects().add(buildXMLObject(simpleXMLObjectQName));
- HttpResponse httpResponse = buildResponse(HttpStatus.SC_OK, envelope);
+ ClassicHttpResponse httpResponse = buildResponse(HttpStatus.SC_OK, envelope);
decoder.setBodyHandler(new TestPayloadBodyHandler());
decoder.setHttpResponse(httpResponse);
@@ -87,7 +89,7 @@ public class HttpClientResponseSOAP11DecoderTest extends XMLObjectBaseTestCase {
public void testDecodeToEnvelope() throws ComponentInitializationException, MessageDecodingException, MarshallingException, IOException {
Envelope envelope = buildMessageSkeleton();
envelope.getBody().getUnknownXMLObjects().add(buildXMLObject(simpleXMLObjectQName));
- HttpResponse httpResponse = buildResponse(HttpStatus.SC_OK, envelope);
+ ClassicHttpResponse httpResponse = buildResponse(HttpStatus.SC_OK, envelope);
decoder.setBodyHandler(new TestEnvelopeBodyHandler());
decoder.setHttpResponse(httpResponse);
@@ -113,7 +115,7 @@ public class HttpClientResponseSOAP11DecoderTest extends XMLObjectBaseTestCase {
Envelope envelope = buildMessageSkeleton();
envelope.getBody().getUnknownXMLObjects().add(fault);
- HttpResponse httpResponse = buildResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR, envelope);
+ ClassicHttpResponse httpResponse = buildResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR, envelope);
decoder.setBodyHandler(new TestPayloadBodyHandler());
decoder.setHttpResponse(httpResponse);
@@ -122,15 +124,15 @@ public class HttpClientResponseSOAP11DecoderTest extends XMLObjectBaseTestCase {
decoder.decode();
}
- private HttpResponse buildResponse(int statusResponseCode, Envelope envelope) throws MarshallingException, IOException {
- BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, statusResponseCode, null);
+ private ClassicHttpResponse buildResponse(int statusResponseCode, Envelope envelope) throws MarshallingException, IOException {
+ BasicClassicHttpResponse response = new BasicClassicHttpResponse(statusResponseCode, null);
Element envelopeElement = XMLObjectSupport.marshall(envelope);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
SerializeSupport.writeNode(envelopeElement, baos);
baos.flush();
- ByteArrayEntity entity = new ByteArrayEntity(baos.toByteArray());
+ ByteArrayEntity entity = new ByteArrayEntity(baos.toByteArray(), ContentType.TEXT_XML);
response.setEntity(entity);
return response;
}
diff --git a/opensaml-soap-impl/src/test/java/org/opensaml/soap/client/soap11/encoder/http/impl/HttpClientRequestSOAP11EncoderTest.java b/opensaml-soap-impl/src/test/java/org/opensaml/soap/client/soap11/encoder/http/impl/HttpClientRequestSOAP11EncoderTest.java
index 91e3d9a78..d00dcdf21 100644
--- a/opensaml-soap-impl/src/test/java/org/opensaml/soap/client/soap11/encoder/http/impl/HttpClientRequestSOAP11EncoderTest.java
+++ b/opensaml-soap-impl/src/test/java/org/opensaml/soap/client/soap11/encoder/http/impl/HttpClientRequestSOAP11EncoderTest.java
@@ -17,7 +17,7 @@
package org.opensaml.soap.client.soap11.encoder.http.impl;
-import org.apache.http.client.methods.HttpPost;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
import org.opensaml.core.testing.XMLObjectBaseTestCase;
import org.opensaml.core.xml.mock.SimpleXMLObject;
import org.opensaml.messaging.context.MessageContext;
@@ -68,8 +68,8 @@ public class HttpClientRequestSOAP11EncoderTest extends XMLObjectBaseTestCase {
Assert.assertNotNull(request.getEntity());
- Assert.assertTrue(request.getEntity().getContentType().getValue().startsWith("text/xml;"), "Unexpected content type");
- Assert.assertEquals(request.getEntity().getContentType().getElements()[0].getParameterByName("charset").getValue(), "UTF-8", "Unexpected character encoding");
+ Assert.assertTrue(request.getEntity().getContentType().startsWith("text/xml;"), "Unexpected content type");
+ Assert.assertEquals(request.getEntity().getContentEncoding(), "UTF-8", "Unexpected character encoding");
Assert.assertEquals(request.getFirstHeader("SOAPAction").getValue(), "");
}
@@ -98,8 +98,8 @@ public class HttpClientRequestSOAP11EncoderTest extends XMLObjectBaseTestCase {
Assert.assertNotNull(request.getEntity());
- Assert.assertTrue(request.getEntity().getContentType().getValue().startsWith("text/xml;"), "Unexpected content type");
- Assert.assertEquals(request.getEntity().getContentType().getElements()[0].getParameterByName("charset").getValue(), "UTF-8", "Unexpected character encoding");
+ Assert.assertTrue(request.getEntity().getContentType().startsWith("text/xml;"), "Unexpected content type");
+ Assert.assertEquals(request.getEntity().getContentEncoding(), "UTF-8", "Unexpected character encoding");
Assert.assertEquals(request.getFirstHeader("SOAPAction").getValue(), "urn:test:action:foo");
}
diff --git a/opensaml-spring/pom.xml b/opensaml-spring/pom.xml
index e2f4ba863..9447780dd 100644
--- a/opensaml-spring/pom.xml
+++ b/opensaml-spring/pom.xml
@@ -81,7 +81,7 @@
<dependency>
<groupId>${httpclient.groupId}</groupId>
- <artifactId>httpclient</artifactId>
+ <artifactId>${httpclient.artifactId}</artifactId>
</dependency>
<dependency>
diff --git a/opensaml-spring/src/main/java/org/opensaml/spring/tls/TLSSocketFactoryFactoryBean.java b/opensaml-spring/src/main/java/org/opensaml/spring/tls/TLSSocketFactoryFactoryBean.java
index 56f2b57ef..611a02feb 100644
--- a/opensaml-spring/src/main/java/org/opensaml/spring/tls/TLSSocketFactoryFactoryBean.java
+++ b/opensaml-spring/src/main/java/org/opensaml/spring/tls/TLSSocketFactoryFactoryBean.java
@@ -19,8 +19,7 @@ package org.opensaml.spring.tls;
import javax.annotation.Nullable;
-import org.apache.http.client.HttpClient;
-import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
+import org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory;
import org.opensaml.security.httpclient.HttpClientSecurityParameters;
import org.opensaml.security.httpclient.impl.SecurityEnhancedHttpClientSupport;
import org.opensaml.security.trust.TrustEngine;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list