[java-shib-attribute] branch main updated: JSSH-16: Update to Apache HttpClient 5.x
Brent Putman
putmanb at georgetown.edu
Tue Feb 21 19:31:24 UTC 2023
This is an automated email from the git hooks/post-receive script.
putmanb pushed a commit to branch main
in repository java-shib-attribute.
View the commit online:
http://git.shibboleth.net/view/?p=java-shib-attribute.git;a=commit;h=6535f2e6343dae5a232d21b0ef28ee36e360ca5b
The following commit(s) were added to refs/heads/main by this push:
new 6535f2e63 JSSH-16: Update to Apache HttpClient 5.x
6535f2e63 is described below
commit 6535f2e6343dae5a232d21b0ef28ee36e360ca5b
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Thu Feb 2 23:42:23 2023 -0500
JSSH-16: Update to Apache HttpClient 5.x
Initial refactor.
---
shib-attribute-resolver-api/pom.xml | 4 ++--
.../dc/http/HTTPResponseMappingStrategy.java | 6 ++---
.../idp/attribute/resolver/dc/http/HTTPSearch.java | 2 +-
shib-attribute-resolver-impl/pom.xml | 9 ++++----
.../dc/http/impl/AbstractHTTPSearchBuilder.java | 26 ++++++++++------------
.../resolver/dc/http/impl/HTTPDataConnector.java | 2 +-
.../http/impl/ScriptedResponseMappingStrategy.java | 25 ++++++++++-----------
.../dc/http/impl/TemplatedBodyBuilder.java | 17 +++++++-------
.../dc/http/impl/HTTPDataConnectorTest.java | 4 ++--
9 files changed, 46 insertions(+), 49 deletions(-)
diff --git a/shib-attribute-resolver-api/pom.xml b/shib-attribute-resolver-api/pom.xml
index a811bc170..dbe8c0444 100644
--- a/shib-attribute-resolver-api/pom.xml
+++ b/shib-attribute-resolver-api/pom.xml
@@ -71,8 +71,8 @@
</dependency>
<dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
+ <groupId>${httpclient.groupId}</groupId>
+ <artifactId>${httpclient.artifactId}</artifactId>
</dependency>
<!-- Provided Dependencies -->
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/HTTPResponseMappingStrategy.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/HTTPResponseMappingStrategy.java
index 382694c3d..380033bf9 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/HTTPResponseMappingStrategy.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/HTTPResponseMappingStrategy.java
@@ -19,16 +19,16 @@ package net.shibboleth.idp.attribute.resolver.dc.http;
import java.util.Map;
-import org.apache.http.client.ResponseHandler;
+import org.apache.hc.core5.http.io.HttpClientResponseHandler;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.resolver.dc.MappingStrategy;
/**
- * Strategy for processing an {@link org.apache.http.client.HttpClient} response into a map of
+ * Strategy for processing an {@link org.apache.hc.client5.http.classic.HttpClient} response into a map of
* {@link net.shibboleth.idp.attribute.IdPAttribute}s.
*/
public interface HTTPResponseMappingStrategy extends MappingStrategy<Map<String,IdPAttribute>>,
- ResponseHandler<Map<String,IdPAttribute>> {
+ HttpClientResponseHandler<Map<String,IdPAttribute>> {
}
\ No newline at end of file
diff --git a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/HTTPSearch.java b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/HTTPSearch.java
index ad4259842..df5b18ecd 100644
--- a/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/HTTPSearch.java
+++ b/shib-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/HTTPSearch.java
@@ -23,7 +23,7 @@ import java.util.Map;
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.security.httpclient.HttpClientSecurityParameters;
import net.shibboleth.idp.attribute.IdPAttribute;
diff --git a/shib-attribute-resolver-impl/pom.xml b/shib-attribute-resolver-impl/pom.xml
index cbc4f203f..fe9aeeb3d 100644
--- a/shib-attribute-resolver-impl/pom.xml
+++ b/shib-attribute-resolver-impl/pom.xml
@@ -74,13 +74,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>
+
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
index 1af7ba1a5..2fa9b2cc1 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/AbstractHTTPSearchBuilder.java
@@ -18,7 +18,6 @@
package net.shibboleth.idp.attribute.resolver.dc.http.impl;
import java.io.IOException;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -26,11 +25,10 @@ import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.http.HttpRequest;
-import org.apache.http.client.HttpClient;
-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.opensaml.security.httpclient.HttpClientSecurityParameters;
import org.opensaml.security.httpclient.HttpClientSecuritySupport;
@@ -140,7 +138,7 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
@Nonnull public HTTPSearch build(@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException {
- final HttpUriRequest request = getHttpRequest(resolutionContext, dependencyAttributes);
+ final ClassicHttpRequest request = getHttpRequest(resolutionContext, dependencyAttributes);
for (final Pair<String,String> entry : headerList) {
request.setHeader(entry.getFirst(), entry.getSecond());
@@ -158,7 +156,7 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
/** {@inheritDoc} */
public String toString() {
- return request.getRequestLine().getUri();
+ return request.getRequestUri();
}
/** {@inheritDoc} */
@@ -169,8 +167,8 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
@Nonnull HttpClientContext clientContext = HttpClientContext.create();
HttpClientSecuritySupport.marshalSecurityParameters(clientContext, securityParameters, true);
HttpClientSecuritySupport.addDefaultTLSTrustEngineCriteria(clientContext, request);
- @Nonnull final Map<String,IdPAttribute> results = client.execute(request, mappingStrategy, clientContext);
- HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, request.getURI().getScheme());
+ @Nonnull final Map<String,IdPAttribute> results = client.execute(request, clientContext, mappingStrategy);
+ HttpClientSecuritySupport.checkTLSCredentialEvaluated(clientContext, request.getScheme());
return results;
}
@@ -200,10 +198,10 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
* @param resolutionContext the context of the resolution
* @param dependencyAttributes made available to the request
*
- * @return the {@link HttpRequest} to use
+ * @return the {@link ClassicHttpRequest} to use
* @throws ResolutionException if an error occurs
*/
- @Nonnull protected HttpUriRequest getHttpRequest(@Nonnull final AttributeResolutionContext resolutionContext,
+ @Nonnull protected ClassicHttpRequest getHttpRequest(@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final Map<String,List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException {
// Default just wraps a computed URL into a GET.
@@ -223,11 +221,11 @@ public abstract class AbstractHTTPSearchBuilder extends AbstractInitializableCom
*
* @return the cache key
*/
- @Nullable protected String getResultCacheKey(@Nonnull final HttpUriRequest request,
+ @Nullable protected String getResultCacheKey(@Nonnull final ClassicHttpRequest request,
@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) {
if (request instanceof HttpGet) {
- return ((HttpGet) request).getURI().toString();
+ return request.getRequestUri();
}
return null;
}
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java
index 31d806f57..05ea4ea79 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnector.java
@@ -27,7 +27,7 @@ import java.util.Map;
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.security.httpclient.HttpClientSecurityParameters;
import net.shibboleth.idp.attribute.IdPAttribute;
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
index b35c1e9d0..f7e2af0a0 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/ScriptedResponseMappingStrategy.java
@@ -32,10 +32,10 @@ import javax.annotation.Nullable;
import javax.script.ScriptContext;
import javax.script.ScriptException;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.entity.ContentType;
+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.slf4j.Logger;
import net.shibboleth.idp.attribute.IdPAttribute;
@@ -127,7 +127,7 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
/** {@inheritDoc} */
@SuppressWarnings("unchecked")
- public Map<String,IdPAttribute> handleResponse(final HttpResponse response) throws IOException {
+ public Map<String,IdPAttribute> handleResponse(final ClassicHttpResponse response) throws IOException {
log.debug("{} Handling HTTP response", getLogPrefix());
@@ -205,12 +205,10 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
*
* @throws IOException if the status is unacceptable
*/
- private void checkStatus(@Nonnull final HttpResponse response) throws IOException {
+ private void checkStatus(@Nonnull final ClassicHttpResponse response) throws IOException {
if (!acceptStatuses.isEmpty()) {
- if (response.getStatusLine() == null
- || !acceptStatuses.contains(response.getStatusLine().getStatusCode())) {
- log.debug("{} Unacceptable HTTP status: {}", getLogPrefix(),
- response.getStatusLine() != null ? response.getStatusLine().getStatusCode() : "unknown");
+ if (!acceptStatuses.contains(response.getCode())) {
+ log.debug("{} Unacceptable HTTP status: {}", getLogPrefix(), response.getCode());
throw new IOException(getLogPrefix() + " HTTP status unknown or unacceptable");
}
}
@@ -226,10 +224,11 @@ public final class ScriptedResponseMappingStrategy extends AbstractScriptEvaluat
private void checkContentType(@Nonnull final HttpEntity entity) throws IOException {
if (!acceptTypes.isEmpty()) {
- final ContentType contentType = ContentType.get(entity);
- if (contentType == null || !acceptTypes.contains(contentType.getMimeType())) {
+ final String rawContentType = entity.getContentType();
+ final String mimeType = rawContentType != null ? ContentType.parse(rawContentType).getMimeType() : null;
+ if (mimeType == null || !acceptTypes.contains(mimeType)) {
log.debug("{} Unacceptable Content-Type: {}", getLogPrefix(),
- contentType != null ? contentType.getMimeType() : "unknown");
+ mimeType != null ? mimeType : "unknown");
throw new IOException(getLogPrefix() + " Content-Type unknown or unacceptable");
}
}
diff --git a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java
index b2922e8e3..4d1237f23 100644
--- a/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java
+++ b/shib-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/TemplatedBodyBuilder.java
@@ -24,12 +24,11 @@ import java.util.Map;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.entity.ContentType;
-import org.apache.http.entity.StringEntity;
+import org.apache.hc.client5.http.classic.methods.HttpPost;
+import org.apache.hc.client5.http.classic.methods.HttpPut;
+import org.apache.hc.core5.http.ClassicHttpRequest;
+import org.apache.hc.core5.http.ContentType;
+import org.apache.hc.core5.http.io.entity.StringEntity;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.exception.VelocityException;
@@ -320,7 +319,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
/** {@inheritDoc} */
@Override
- @Nonnull protected HttpUriRequest getHttpRequest(@Nonnull final AttributeResolutionContext resolutionContext,
+ @Nonnull protected ClassicHttpRequest getHttpRequest(@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException {
final VelocityContext context = new VelocityContext();
@@ -349,7 +348,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
final String url;
final String body;
- final HttpEntityEnclosingRequestBase request;
+ final ClassicHttpRequest request;
try {
url = merge(urlTemplate, context);
@@ -378,7 +377,7 @@ public class TemplatedBodyBuilder extends AbstractHTTPSearchBuilder {
/** {@inheritDoc} */
@Override
- @Nullable @NotEmpty protected String getResultCacheKey(@Nonnull final HttpUriRequest request,
+ @Nullable @NotEmpty protected String getResultCacheKey(@Nonnull final ClassicHttpRequest request,
@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) {
diff --git a/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnectorTest.java b/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnectorTest.java
index 453374eae..e4f53d18d 100644
--- a/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnectorTest.java
+++ b/shib-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/http/impl/HTTPDataConnectorTest.java
@@ -31,8 +31,8 @@ import java.util.Set;
import javax.script.ScriptException;
-import org.apache.http.HttpStatus;
-import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
+import org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory;
+import org.apache.hc.core5.http.HttpStatus;
import org.opensaml.saml.metadata.resolver.impl.FileBackedHTTPMetadataResolver;
import org.opensaml.security.credential.impl.StaticCredentialResolver;
import org.opensaml.security.httpclient.HttpClientSecurityParameters;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list