diff --git a/rewrite-maven/src/main/java/org/openrewrite/maven/internal/MavenPomDownloader.java b/rewrite-maven/src/main/java/org/openrewrite/maven/internal/MavenPomDownloader.java index 4f0a26f50bd..52354760b78 100644 --- a/rewrite-maven/src/main/java/org/openrewrite/maven/internal/MavenPomDownloader.java +++ b/rewrite-maven/src/main/java/org/openrewrite/maven/internal/MavenPomDownloader.java @@ -55,7 +55,6 @@ import static java.util.Objects.requireNonNull; import static java.util.stream.Collectors.toList; -@SuppressWarnings("OptionalAssignedToNull") public class MavenPomDownloader { private static final RetryPolicy retryPolicy = RetryPolicy.builder() .handle(SocketTimeoutException.class, TimeoutException.class) @@ -333,7 +332,8 @@ public MavenMetadata downloadMetadata(GroupArtifactVersion gav, @Nullable Resolv .setRepositoryResponses(repositoryResponses); } - sample.stop(timer.tags("outcome", "success").register(Metrics.globalRegistry)); + long nanos = sample.stop(timer.tags("outcome", "success").register(Metrics.globalRegistry)); + ctx.getResolutionListener().downloadMetadataSuccess(mavenMetadata, containingPom, Duration.ofNanos(nanos)); return mavenMetadata; } @@ -580,7 +580,7 @@ public Pom download(GroupArtifactVersion gav, pom = pom.withGav(pom.getGav().withDatedSnapshotVersion(versionMaybeDatedSnapshot)); } mavenCache.putPom(resolvedGav, pom); - ctx.getResolutionListener().downloadSuccess(resolvedGav, containingPom); + ctx.getResolutionListener().downloadSuccess(resolvedGav, containingPom, Duration.ZERO); sample.stop(timer.tags("outcome", "from maven local").register(Metrics.globalRegistry)); return pom; } @@ -602,8 +602,9 @@ public Pom download(GroupArtifactVersion gav, pom = pom.withGav(pom.getGav().withDatedSnapshotVersion(versionMaybeDatedSnapshot)); } mavenCache.putPom(resolvedGav, pom); - ctx.getResolutionListener().downloadSuccess(resolvedGav, containingPom); - sample.stop(timer.tags("outcome", "downloaded").register(Metrics.globalRegistry)); + long nanos = sample.stop(timer.tags("outcome", "downloaded").register(Metrics.globalRegistry)); + ctx.getResolutionListener() + .downloadSuccess(resolvedGav, containingPom, Duration.ofNanos(nanos)); return pom; } catch (HttpSenderResponseException e) { repositoryResponses.put(repo, e.getMessage()); diff --git a/rewrite-maven/src/main/java/org/openrewrite/maven/tree/ResolutionEventListener.java b/rewrite-maven/src/main/java/org/openrewrite/maven/tree/ResolutionEventListener.java index baee1173528..c6559cc75ca 100644 --- a/rewrite-maven/src/main/java/org/openrewrite/maven/tree/ResolutionEventListener.java +++ b/rewrite-maven/src/main/java/org/openrewrite/maven/tree/ResolutionEventListener.java @@ -17,6 +17,7 @@ import org.jspecify.annotations.Nullable; +import java.time.Duration; import java.util.List; @SuppressWarnings("unused") @@ -33,9 +34,15 @@ default void downloadMetadata(GroupArtifactVersion gav) { default void download(GroupArtifactVersion gav) { } + default void downloadMetadataSuccess(MavenMetadata mavenMetadata, @Nullable ResolvedPom containing, Duration duration) { + } + default void downloadSuccess(ResolvedGroupArtifactVersion gav, @Nullable ResolvedPom containing) { } + default void downloadSuccess(ResolvedGroupArtifactVersion gav, @Nullable ResolvedPom containing, Duration duration) { + } + /** * @param gav - GAV coordinate of the dependency which failed to download * @param attemptedUris - The URIs which were attempted, in the order they were attempted, before resolution was determined to have failed