[MDOCCK-35] - Upgrade Http Client
diff --git a/pom.xml b/pom.xml
index e2065f7..26852f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,9 +99,9 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- <version>3.1</version>
+ <groupId>org.apache.httpcomponents.client5</groupId>
+ <artifactId>httpclient5</artifactId>
+ <version>5.0.3</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
diff --git a/src/main/java/org/apache/maven/plugin/docck/AbstractCheckDocumentationMojo.java b/src/main/java/org/apache/maven/plugin/docck/AbstractCheckDocumentationMojo.java
index 4f8c250..81d02f5 100644
--- a/src/main/java/org/apache/maven/plugin/docck/AbstractCheckDocumentationMojo.java
+++ b/src/main/java/org/apache/maven/plugin/docck/AbstractCheckDocumentationMojo.java
@@ -19,13 +19,20 @@
* under the License.
*/
-import org.apache.commons.httpclient.Credentials;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.auth.AuthScope;
-import org.apache.commons.httpclient.methods.HeadMethod;
-import org.apache.commons.httpclient.params.HttpMethodParams;
+import org.apache.hc.client5.http.auth.AuthScope;
+import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
+import org.apache.hc.client5.http.classic.methods.HttpHead;
+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.CloseableHttpResponse;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
+import org.apache.hc.client5.http.impl.classic.HttpClients;
+import org.apache.hc.core5.http.HttpHeaders;
+import org.apache.hc.core5.http.HttpHost;
+import org.apache.hc.core5.http.message.BasicHeader;
+import org.apache.hc.core5.util.Timeout;
import org.apache.maven.model.IssueManagement;
import org.apache.maven.model.License;
import org.apache.maven.model.Organization;
@@ -98,24 +105,12 @@
@Parameter( defaultValue = "${settings}", readonly = true, required = true )
private Settings settings;
- private HttpClient httpClient;
+ private CloseableHttpClient httpClient;
private FileSetManager fileSetManager = new FileSetManager();
private List<String> validUrls = new ArrayList<>();
- protected AbstractCheckDocumentationMojo()
- {
- String httpUserAgent = "maven-docck-plugin/1.x" + " (Java " + System.getProperty( "java.version" ) + "; "
- + System.getProperty( "os.name" ) + " " + System.getProperty( "os.version" ) + ")";
-
- httpClient = new HttpClient();
-
- final int connectionTimeout = 5000;
- httpClient.getHttpConnectionManager().getParams().setConnectionTimeout( connectionTimeout );
- httpClient.getParams().setParameter( HttpMethodParams.USER_AGENT, httpUserAgent );
- }
-
protected List<MavenProject> getReactorProjects()
{
return reactorProjects;
@@ -125,7 +120,20 @@
public void execute()
throws MojoExecutionException, MojoFailureException
{
- setupProxy();
+
+ String httpUserAgent = "maven-docck-plugin/1.x" + " (Java " + System.getProperty( "java.version" ) + "; "
+ + System.getProperty( "os.name" ) + " " + System.getProperty( "os.version" ) + ")";
+ HttpClientBuilder httpClientBuilder = HttpClients.custom()
+ .setDefaultRequestConfig( RequestConfig.custom()
+ .setConnectTimeout( Timeout.ofSeconds( 5 ) )
+ .setResponseTimeout( Timeout.ofSeconds( 5 ) )
+ .setCookieSpec( StandardCookieSpec.STRICT )
+ .build() )
+ .setDefaultHeaders( List.of( new BasicHeader( HttpHeaders.USER_AGENT, httpUserAgent ) ) );
+
+ setupProxy( httpClientBuilder );
+
+ httpClient = httpClientBuilder.build();
if ( output != null )
{
@@ -194,8 +202,9 @@
/**
* Setup proxy access if needed.
+ * @param httpClientBuilder
*/
- private void setupProxy()
+ private void setupProxy( HttpClientBuilder httpClientBuilder )
{
Proxy settingsProxy = settings.getActiveProxy();
@@ -211,7 +220,7 @@
if ( StringUtils.isNotEmpty( proxyHost ) )
{
- httpClient.getHostConfiguration().setProxy( proxyHost, proxyPort );
+ httpClientBuilder.setProxy( new HttpHost( proxyHost, proxyPort ) );
getLog().info( "Using proxy [" + proxyHost + "] at port [" + proxyPort + "]." );
@@ -219,10 +228,12 @@
{
getLog().info( "Using proxy user [" + proxyUsername + "]." );
- Credentials creds = new UsernamePasswordCredentials( proxyUsername, proxyPassword );
+ BasicCredentialsProvider credsProvider = new BasicCredentialsProvider();
+ credsProvider.setCredentials(
+ new AuthScope( proxyHost, proxyPort ),
+ new UsernamePasswordCredentials( proxyUsername, proxyPassword.toCharArray() ) );
- httpClient.getState().setProxyCredentials( new AuthScope( proxyHost, proxyPort ), creds );
- httpClient.getParams().setAuthenticationPreemptive( true );
+ httpClientBuilder.setDefaultCredentialsProvider( credsProvider );
}
}
}
@@ -465,14 +476,12 @@
}
else if ( !validUrls.contains( url ) )
{
- HeadMethod headMethod = new HeadMethod( url );
- headMethod.setFollowRedirects( true );
- headMethod.setDoAuthentication( false );
+ HttpHead headMethod = new HttpHead( url );
- try
+ try ( CloseableHttpResponse response = httpClient.execute( headMethod ) )
{
getLog().debug( "Verifying http url: " + url );
- if ( httpClient.executeMethod( headMethod ) != HTTP_STATUS_200 )
+ if ( response.getCode() != HTTP_STATUS_200 )
{
reporter.error( "Cannot reach " + description + " with URL: \'" + url + "\'." );
}
@@ -481,20 +490,11 @@
validUrls.add( url );
}
}
- catch ( HttpException e )
- {
- reporter.error( "Cannot reach " + description + " with URL: \'" + url + "\'.\nError: "
- + e.getMessage() );
- }
catch ( IOException e )
{
reporter.error( "Cannot reach " + description + " with URL: \'" + url + "\'.\nError: "
+ e.getMessage() );
}
- finally
- {
- headMethod.releaseConnection();
- }
}
}
else