diff --git a/pom.xml b/pom.xml index fe267cb..f3e0bf6 100644 --- a/pom.xml +++ b/pom.xml @@ -91,7 +91,7 @@ org.apache.httpcomponents.client5 httpclient5 - 5.5.1 + 5.6 org.apache.httpcomponents.core5 diff --git a/src/main/java/io/github/mfoo/libyear/LibYearMojo.java b/src/main/java/io/github/mfoo/libyear/LibYearMojo.java index 0fb41fa..ac6154d 100644 --- a/src/main/java/io/github/mfoo/libyear/LibYearMojo.java +++ b/src/main/java/io/github/mfoo/libyear/LibYearMojo.java @@ -48,10 +48,10 @@ import javax.inject.Inject; import org.apache.commons.lang3.tuple.Pair; import org.apache.hc.client5.http.classic.methods.HttpGet; +import org.apache.hc.client5.http.config.ConnectionConfig; import org.apache.hc.client5.http.config.RequestConfig; import org.apache.hc.client5.http.impl.DefaultHttpRequestRetryStrategy; 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.io.PoolingHttpClientConnectionManager; import org.apache.hc.core5.http.HttpResponseInterceptor; @@ -360,14 +360,18 @@ public LibYearMojo(RepositorySystem repositorySystem, ArtifactFactory artifactFa private CloseableHttpClient setupHTTPClient() { RequestConfig config = RequestConfig.custom() - .setConnectTimeout(Timeout.ofSeconds(MAVEN_API_HTTP_TIMEOUT_SECONDS)) .setConnectionRequestTimeout(Timeout.ofSeconds(MAVEN_API_HTTP_TIMEOUT_SECONDS)) .setResponseTimeout(Timeout.ofSeconds(MAVEN_API_HTTP_TIMEOUT_SECONDS)) .build(); + ConnectionConfig connectionConfig = ConnectionConfig.custom() + .setConnectTimeout(Timeout.ofSeconds(MAVEN_API_HTTP_TIMEOUT_SECONDS)) + .build(); + PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); connectionManager.setMaxTotal(20); connectionManager.setDefaultMaxPerRoute(20); + connectionManager.setDefaultConnectionConfig(connectionConfig); return HttpClientBuilder.create() .setConnectionManager(connectionManager) @@ -825,33 +829,33 @@ private Optional getReleaseDate(String groupId, String artifactId, St } /** Make the API call to fetch the release date */ - private Optional fetchReleaseDate(String groupId, String artifactId, String version) { - if (version.equals("${project.version}")) { - version = project.getVersion(); - } + private Optional fetchReleaseDate(String groupId, String artifactId, final String version) { + final String versionToFetch = version.equals("${project.version}") ? project.getVersion() : version; URI artifactUri = URI.create(String.format( - "%s/solrsearch/select?q=g:%s+AND+a:%s+AND+v:%s&wt=json", searchUri, groupId, artifactId, version)); + "%s/solrsearch/select?q=g:%s+AND+a:%s+AND+v:%s&wt=json", + searchUri, groupId, artifactId, versionToFetch)); getLog().debug("Fetching " + artifactUri); final HttpGet httpGet = new HttpGet(artifactUri); try { - try (CloseableHttpResponse response = httpClient.execute(httpGet)) { + return httpClient.execute(httpGet, response -> { if (response.getCode() != 200) { getLog().error(String.format( "Failed to fetch release date for %s:%s %s (%s)", - groupId, artifactId, version, response.getReasonPhrase())); + groupId, artifactId, versionToFetch, response.getReasonPhrase())); return Optional.empty(); } String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8); return Optional.of(responseBody); - } + }); } catch (Exception e) { getLog().error(String.format( - "Failed to fetch release date for %s:%s %s (%s)", groupId, artifactId, version, e.getMessage())); + "Failed to fetch release date for %s:%s %s (%s)", + groupId, artifactId, versionToFetch, e.getMessage())); return Optional.empty(); } } diff --git a/src/main/java/io/github/mfoo/libyear/utils/MavenArtifactInfo.java b/src/main/java/io/github/mfoo/libyear/utils/MavenArtifactInfo.java index 0738a4e..c3033c6 100644 --- a/src/main/java/io/github/mfoo/libyear/utils/MavenArtifactInfo.java +++ b/src/main/java/io/github/mfoo/libyear/utils/MavenArtifactInfo.java @@ -2,7 +2,7 @@ import java.io.IOException; import java.net.HttpURLConnection; -import java.net.URL; +import java.net.URI; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Locale; @@ -49,7 +49,8 @@ public static long parseHttpDate(String httpDate) { public static long getLastModifiedTimestamp(String groupId, String artifactId, String version) throws IOException { final String path = groupId.replace('.', '/') + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version + ".pom"; - final HttpURLConnection connection = (HttpURLConnection) new URL(MAVEN_CENTRAL + path).openConnection(); + final HttpURLConnection connection = + (HttpURLConnection) URI.create(MAVEN_CENTRAL + path).toURL().openConnection(); connection.setRequestMethod("HEAD"); connection.connect();