From 87753505c7e0604cce04fe8f3cff0eba32cdcdec Mon Sep 17 00:00:00 2001 From: Peter Palaga Date: Thu, 21 Feb 2019 14:17:34 +0100 Subject: [PATCH] Fix #278 Add timeout parameters to AbstractDownloadLicensesMojo --- .../license/AbstractDownloadLicensesMojo.java | 27 ++++++++++++++++++- .../license/download/LicenseDownloader.java | 14 +++------- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/codehaus/mojo/license/AbstractDownloadLicensesMojo.java b/src/main/java/org/codehaus/mojo/license/AbstractDownloadLicensesMojo.java index 3407fdd1f..c049527fe 100644 --- a/src/main/java/org/codehaus/mojo/license/AbstractDownloadLicensesMojo.java +++ b/src/main/java/org/codehaus/mojo/license/AbstractDownloadLicensesMojo.java @@ -546,6 +546,30 @@ public abstract class AbstractDownloadLicensesMojo @Parameter( property = "license.writeVersions", defaultValue = "true" ) private boolean writeVersions; + /** + * Connect timeout in milliseconds passed to the HTTP client when downloading licenses from remote URLs. + * + * @since 1.18 + */ + @Parameter( property = "license.connectTimeout", defaultValue = "5000" ) + private int connectTimeout; + + /** + * Socket timeout in milliseconds passed to the HTTP client when downloading licenses from remote URLs. + * + * @since 1.18 + */ + @Parameter( property = "license.socketTimeout", defaultValue = "5000" ) + private int socketTimeout; + + /** + * Connect request timeout in milliseconds passed to the HTTP client when downloading licenses from remote URLs. + * + * @since 1.18 + */ + @Parameter( property = "license.connectionRequestTimeout", defaultValue = "5000" ) + private int connectionRequestTimeout; + // ---------------------------------------------------------------------- // Plexus Components // ---------------------------------------------------------------------- @@ -619,7 +643,8 @@ public void execute() // The resulting list of licenses after dependency resolution final List depProjectLicenses = new ArrayList<>(); - try ( LicenseDownloader licenseDownloader = new LicenseDownloader( findActiveProxy() ) ) + try ( LicenseDownloader licenseDownloader = + new LicenseDownloader( findActiveProxy(), connectTimeout, socketTimeout, connectionRequestTimeout ) ) { for ( MavenProject project : dependencies ) { diff --git a/src/main/java/org/codehaus/mojo/license/download/LicenseDownloader.java b/src/main/java/org/codehaus/mojo/license/download/LicenseDownloader.java index 4326f612d..052cc660a 100644 --- a/src/main/java/org/codehaus/mojo/license/download/LicenseDownloader.java +++ b/src/main/java/org/codehaus/mojo/license/download/LicenseDownloader.java @@ -74,22 +74,16 @@ public class LicenseDownloader implements AutoCloseable { - /** - * Defines the connection timeout in milliseconds when attempting to download license files. - */ - public static final int DEFAULT_CONNECTION_TIMEOUT = 5000; - private static final Pattern EXTENSION_PATTERN = Pattern.compile( "\\.[a-z]{1,4}$", Pattern.CASE_INSENSITIVE ); private final CloseableHttpClient client; - public LicenseDownloader( Proxy proxy ) + public LicenseDownloader( Proxy proxy, int connectTimeout, int socketTimeout, int connectionRequestTimeout ) { - final Builder configBuilder = RequestConfig.copy( RequestConfig.DEFAULT ) // - .setConnectTimeout( DEFAULT_CONNECTION_TIMEOUT ) // - .setSocketTimeout( DEFAULT_CONNECTION_TIMEOUT ) // - .setConnectionRequestTimeout( DEFAULT_CONNECTION_TIMEOUT ); + .setConnectTimeout( connectTimeout ) // + .setSocketTimeout( socketTimeout ) // + .setConnectionRequestTimeout( connectionRequestTimeout ); HttpClientBuilder clientBuilder = HttpClients.custom().setDefaultRequestConfig( configBuilder.build() ); if ( proxy != null )