This is an automated email from the ASF dual-hosted git repository.

slachiewicz pushed a commit to branch http5
in repository https://gitbox.apache.org/repos/asf/maven-plugin-tools.git

commit a072190a99ae9d07a28163338fb693951efeccb9
Author: Sylwester Lachiewicz <[email protected]>
AuthorDate: Sat Nov 8 16:15:08 2025 +0100

    Migrate to ApacheHttpClient 5.x
    
    Co-authored-by: Moderne <[email protected]>
---
 maven-plugin-tools-api/pom.xml                     | 11 +---
 .../maven/tools/plugin/javadoc/JavadocSite.java    | 69 +++++++++++-----------
 2 files changed, 38 insertions(+), 42 deletions(-)

diff --git a/maven-plugin-tools-api/pom.xml b/maven-plugin-tools-api/pom.xml
index b32f83da..2171a3b8 100644
--- a/maven-plugin-tools-api/pom.xml
+++ b/maven-plugin-tools-api/pom.xml
@@ -88,14 +88,9 @@
     </dependency>
     <!-- for retrieving package-list or element-list of existing javadoc sites 
-->
     <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpclient</artifactId>
-      <version>4.5.14</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpcore</artifactId>
-      <version>4.4.16</version>
+      <groupId>org.apache.httpcomponents.client5</groupId>
+      <artifactId>httpclient5</artifactId>
+      <version>5.6</version>
     </dependency>
     <!-- wagon for proxy related classes -->
     <dependency>
diff --git 
a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/javadoc/JavadocSite.java
 
b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/javadoc/JavadocSite.java
index 36670126..a01c8840 100644
--- 
a/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/javadoc/JavadocSite.java
+++ 
b/maven-plugin-tools-api/src/main/java/org/apache/maven/tools/plugin/javadoc/JavadocSite.java
@@ -39,32 +39,33 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.concurrent.TimeUnit;
 import java.util.function.BiFunction;
 import java.util.regex.Pattern;
 
-import org.apache.http.HttpHeaders;
-import org.apache.http.HttpHost;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
-import org.apache.http.auth.AuthScope;
-import org.apache.http.auth.Credentials;
-import org.apache.http.auth.UsernamePasswordCredentials;
-import org.apache.http.client.CredentialsProvider;
-import org.apache.http.client.config.CookieSpecs;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.protocol.HttpClientContext;
-import org.apache.http.config.Registry;
-import org.apache.http.config.RegistryBuilder;
-import org.apache.http.conn.socket.ConnectionSocketFactory;
-import org.apache.http.conn.socket.PlainConnectionSocketFactory;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.BasicCredentialsProvider;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClientBuilder;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-import org.apache.http.message.BasicHeader;
+import org.apache.hc.client5.http.auth.AuthScope;
+import org.apache.hc.client5.http.auth.Credentials;
+import org.apache.hc.client5.http.auth.CredentialsStore;
+import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
+import org.apache.hc.client5.http.classic.methods.HttpGet;
+import org.apache.hc.client5.http.config.RequestConfig;
+import org.apache.hc.client5.http.cookie.StandardCookieSpec;
+import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
+import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
+import org.apache.hc.client5.http.protocol.HttpClientContext;
+import org.apache.hc.client5.http.socket.ConnectionSocketFactory;
+import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory;
+import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
+import org.apache.hc.core5.http.ClassicHttpResponse;
+import org.apache.hc.core5.http.HttpHeaders;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.HttpStatus;
+import org.apache.hc.core5.http.config.Registry;
+import org.apache.hc.core5.http.config.RegistryBuilder;
+import org.apache.hc.core5.http.message.BasicHeader;
 import org.apache.maven.settings.Proxy;
 import org.apache.maven.settings.Settings;
 import 
org.apache.maven.tools.plugin.javadoc.FullyQualifiedJavadocReference.MemberType;
@@ -472,10 +473,10 @@ class JavadocSite {
 
         builder.setConnectionManager(new 
PoolingHttpClientConnectionManager(csfRegistry));
         builder.setDefaultRequestConfig(RequestConfig.custom()
-                .setSocketTimeout(DEFAULT_TIMEOUT)
-                .setConnectTimeout(DEFAULT_TIMEOUT)
+                .setResponseTimeout(DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS)
+                .setConnectTimeout(DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS)
                 .setCircularRedirectsAllowed(true)
-                .setCookieSpec(CookieSpecs.IGNORE_COOKIES)
+                .setCookieSpec(StandardCookieSpec.IGNORE)
                 .build());
 
         // Some web servers don't allow the default user-agent sent by 
httpClient
@@ -496,11 +497,11 @@ class JavadocSite {
                 builder.setProxy(proxy);
 
                 if (StringUtils.isNotEmpty(activeProxy.getUsername()) && 
activeProxy.getPassword() != null) {
-                    Credentials credentials =
-                            new 
UsernamePasswordCredentials(activeProxy.getUsername(), 
activeProxy.getPassword());
+                    Credentials credentials = new UsernamePasswordCredentials(
+                            activeProxy.getUsername(), 
activeProxy.getPassword().toCharArray());
 
-                    CredentialsProvider credentialsProvider = new 
BasicCredentialsProvider();
-                    credentialsProvider.setCredentials(AuthScope.ANY, 
credentials);
+                    CredentialsStore credentialsProvider = new 
BasicCredentialsProvider();
+                    credentialsProvider.setCredentials(new AuthScope(null, 
-1), credentials);
                     builder.setDefaultCredentialsProvider(credentialsProvider);
                 }
             }
@@ -520,7 +521,7 @@ class JavadocSite {
 
             final HttpGet httpMethod = new HttpGet(url.toString());
 
-            HttpResponse response;
+            ClassicHttpResponse response;
             HttpClientContext httpContext = HttpClientContext.create();
             try {
                 response = httpClient.execute(httpMethod, httpContext);
@@ -529,13 +530,13 @@ class JavadocSite {
                 response = httpClient.execute(httpMethod, httpContext);
             }
 
-            int status = response.getStatusLine().getStatusCode();
+            int status = response.getCode();
             if (status != HttpStatus.SC_OK) {
                 throw new FileNotFoundException(
                         "Unexpected HTTP status code " + status + " getting 
resource " + url.toExternalForm() + ".");
             } else {
                 int pos = url.getPath().lastIndexOf('/');
-                List<URI> redirects = httpContext.getRedirectLocations();
+                List<URI> redirects = 
httpContext.getRedirectLocations().getAll();
                 if (pos >= 0 && isNotEmpty(redirects)) {
                     URI location = redirects.get(redirects.size() - 1);
                     String suffix = url.getPath().substring(pos);
@@ -555,7 +556,7 @@ class JavadocSite {
                     super.close();
 
                     if (httpMethod != null) {
-                        httpMethod.releaseConnection();
+                        httpMethod.reset();
                     }
                     if (httpClient != null) {
                         httpClient.close();

Reply via email to