This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch download in repository https://gitbox.apache.org/repos/asf/camel.git
commit 0989cbb4db358fee59d522f9b994dcdfe9a685d8 Author: Claus Ibsen <[email protected]> AuthorDate: Thu Nov 30 14:27:26 2023 +0100 CAMEL-20170: camel-jbang - Report more accurately maven downloads --- .../main/download/MavenDependencyDownloader.java | 54 +++++++++++++--------- .../camel/tooling/maven/MavenDownloaderImpl.java | 11 +++++ .../maven/RemoteArtifactDownloadListener.java | 8 +++- 3 files changed, 49 insertions(+), 24 deletions(-) diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java index 595c903953e..56cf704901b 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java @@ -49,6 +49,7 @@ import org.apache.camel.tooling.maven.MavenDownloader; import org.apache.camel.tooling.maven.MavenDownloaderImpl; import org.apache.camel.tooling.maven.MavenGav; import org.apache.camel.tooling.maven.MavenResolutionException; +import org.apache.camel.tooling.maven.RemoteArtifactDownloadListener; import org.apache.camel.util.FileUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -220,11 +221,6 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende String gav = groupId + ":" + artifactId + ":" + version; threadPool.download(LOG, () -> { - if (verbose) { - LOG.info("Downloading: {}", gav); - } else { - LOG.debug("Downloading: {}", gav); - } List<String> deps = List.of(gav); // include Apache snapshot to make it easy to use upcoming releases @@ -244,9 +240,9 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende transitively, useApacheSnaphots); List<File> files = new ArrayList<>(); if (verbose) { - LOG.info("Resolved {} -> [{}]", gav, artifacts); + LOG.info("Resolved: {} -> [{}]", gav, artifacts); } else { - LOG.debug("Resolved {} -> [{}]", gav, artifacts); + LOG.debug("Resolved: {} -> [{}]", gav, artifacts); } for (MavenArtifact a : artifacts) { @@ -292,21 +288,16 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende @Override public MavenArtifact downloadArtifact(String groupId, String artifactId, String version) { String gav = groupId + ":" + artifactId + ":" + version; - if (verbose) { - LOG.info("DownloadingArtifact: {}", gav); - } else { - LOG.debug("DownloadingArtifact: {}", gav); - } List<String> deps = List.of(gav); // include Apache snapshot to make it easy to use upcoming releases - boolean useApacheSnaphots = "org.apache.camel".equals(groupId) && version.contains("SNAPSHOT"); + boolean useApacheSnapshots = "org.apache.camel".equals(groupId) && version.contains("SNAPSHOT"); - List<MavenArtifact> artifacts = resolveDependenciesViaAether(deps, null, false, useApacheSnaphots); + List<MavenArtifact> artifacts = resolveDependenciesViaAether(deps, null, false, useApacheSnapshots); if (verbose) { - LOG.info("Resolved {} -> [{}]", gav, artifacts); + LOG.info("Resolved: {} -> [{}]", gav, artifacts); } else { - LOG.debug("Resolved {} -> [{}]", gav, artifacts); + LOG.debug("Resolved: {} -> [{}]", gav, artifacts); } if (artifacts.size() == 1) { @@ -322,13 +313,12 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende String minimumVersion, String repo) { String gav = groupId + ":" + artifactId; if (verbose) { - LOG.info("DownloadAvailableVersions: {}", gav); + LOG.info("Downloading available versions: {}", gav); } else { - LOG.debug("DownloadAvailableVersions: {}", gav); + LOG.debug("Downloading available versions: {}", gav); } List<String[]> answer = new ArrayList<>(); - try { List<MavenGav> gavs = mavenDownloader.resolveAvailableVersions(groupId, artifactId, repo); @@ -354,7 +344,6 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende } } } catch (Exception e) { - LOG.error(e.getMessage(), e); throw new DownloadException(e.getMessage(), e); } @@ -475,9 +464,28 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende mavenDownloaderImpl.setRepos(repos); mavenDownloaderImpl.setFresh(fresh); // use listener to keep track of which JARs was downloaded from a remote Maven repo (and how long time it took) - mavenDownloaderImpl.setRemoteArtifactDownloadListener((groupId, artifactId, version, repoId, repoUrl, elapsed) -> { - String gav = groupId + ":" + artifactId + ":" + version; - downloadRecords.put(gav, new DownloadRecord(groupId, artifactId, version, repoId, repoUrl, elapsed)); + mavenDownloaderImpl.setRemoteArtifactDownloadListener(new RemoteArtifactDownloadListener() { + @Override + public void artifactDownloading(String groupId, String artifactId, String version, String repoId, String repoUrl) { + String gav = groupId + ":" + artifactId + ":" + version; + if (verbose) { + LOG.info("Downloading: {} from: {}@{}", gav, repoId, repoUrl); + } else { + LOG.debug("Downloading: {} from: {}@{}", gav, repoId, repoUrl); + } + } + + @Override + public void artifactDownloaded( + String groupId, String artifactId, String version, String repoId, String repoUrl, long elapsed) { + String gav = groupId + ":" + artifactId + ":" + version; + downloadRecords.put(gav, new DownloadRecord(groupId, artifactId, version, repoId, repoUrl, elapsed)); + if (verbose) { + LOG.info("Downloaded: {} (took: {}ms) from: {}@{}", gav, elapsed, repoId, repoUrl); + } else { + LOG.debug("Downloaded: {} (took: {}ms) from: {}@{}", gav, elapsed, repoId, repoUrl); + } + } }); ServiceHelper.buildService(mavenDownloaderImpl); diff --git a/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/MavenDownloaderImpl.java b/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/MavenDownloaderImpl.java index e2151908de6..6020b4ce665 100644 --- a/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/MavenDownloaderImpl.java +++ b/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/MavenDownloaderImpl.java @@ -398,6 +398,17 @@ public class MavenDownloaderImpl extends ServiceSupport implements MavenDownload @Override public void artifactDownloading(RepositoryEvent event) { watch.restart(); + + if (event.getArtifact() != null) { + Artifact a = event.getArtifact(); + + ArtifactRepository ar = event.getRepository(); + String url = ar instanceof RemoteRepository ? ((RemoteRepository) ar).getUrl() : null; + String id = ar != null ? ar.getId() : null; + String version = a.isSnapshot() ? a.getBaseVersion() : a.getVersion(); + remoteArtifactDownloadListener.artifactDownloading(a.getGroupId(), a.getArtifactId(), version, + id, url); + } } @Override diff --git a/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/RemoteArtifactDownloadListener.java b/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/RemoteArtifactDownloadListener.java index 2e86270c9ec..903a7436529 100644 --- a/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/RemoteArtifactDownloadListener.java +++ b/tooling/camel-tooling-maven/src/main/java/org/apache/camel/tooling/maven/RemoteArtifactDownloadListener.java @@ -16,9 +16,15 @@ */ package org.apache.camel.tooling.maven; -@FunctionalInterface public interface RemoteArtifactDownloadListener { + /** + * Event when an artifact downloading is started from a remote maven repository (not local). + */ + void artifactDownloading( + String groupId, String artifactId, String version, + String repoId, String repoUrl); + /** * Event when an artifact was downloaded from a remote maven repository (not local). */
