This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch verbose in repository https://gitbox.apache.org/repos/asf/camel.git
commit 7ae4136e535548727c7a1864e3b16c2c014d1aa6 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sun Jul 30 10:56:05 2023 +0200 CAMEL-19588: camel-jbang - Starting via jbang --verbose should output more details on startup --- .../apache/camel/dsl/jbang/core/commands/Run.java | 4 ++ .../java/org/apache/camel/main/KameletMain.java | 4 ++ .../camel/main/download/DownloadThreadPool.java | 12 +++++- .../main/download/MavenDependencyDownloader.java | 48 ++++++++++++++++++---- 4 files changed, 60 insertions(+), 8 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java index f5c806d4765..309fc9efe3d 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java @@ -228,6 +228,9 @@ public class Run extends CamelCommand { @Option(names = { "--code" }, description = "Run the given string as Java DSL route") String code; + @Option(names = { "--verbose" }, description = "Verbose output of startup activity (dependency resolution and downloading") + boolean verbose; + public Run(CamelJBangMain main) { super(main); } @@ -377,6 +380,7 @@ public class Run extends CamelCommand { writeSetting(main, profileProperties, "camel.jbang.repos", repos); writeSetting(main, profileProperties, "camel.jbang.health", health ? "true" : "false"); writeSetting(main, profileProperties, "camel.jbang.console", console ? "true" : "false"); + writeSetting(main, profileProperties, "camel.jbang.verbose", verbose ? "true" : "false"); writeSetting(main, profileProperties, "camel.jbang.backlogTracing", "true"); // the runtime version of Camel is what is loaded via the catalog writeSetting(main, profileProperties, "camel.jbang.camel-version", new DefaultCamelCatalog().getCatalogVersion()); diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java index 40d69c36e58..14d2f4cc50b 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java @@ -101,6 +101,7 @@ public class KameletMain extends MainCommandLineSupport { private boolean download = true; private String repos; private boolean fresh; + private boolean verbose; private String mavenSettings; private String mavenSettingsSecurity; private boolean stub; @@ -334,6 +335,8 @@ public class KameletMain extends MainCommandLineSupport { @Override protected CamelContext createCamelContext() { + this.verbose = "true".equals(getInitialProperties().get("camel.jbang.verbose")); + // do not build/init camel context yet DefaultCamelContext answer = new DefaultCamelContext(false); if (download) { @@ -348,6 +351,7 @@ public class KameletMain extends MainCommandLineSupport { downloader.setKnownReposResolver(known); downloader.setClassLoader(dynamicCL); downloader.setCamelContext(answer); + downloader.setVerbose(verbose); downloader.setRepos(repos); downloader.setFresh(fresh); downloader.setMavenSettings(mavenSettings); diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java index 0a29bf8b101..b29cee4831c 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java @@ -38,6 +38,7 @@ class DownloadThreadPool extends ServiceSupport implements CamelContextAware { private final MavenDependencyDownloader downloader; private CamelContext camelContext; private volatile ExecutorService executorService; + private boolean verbose; public DownloadThreadPool(MavenDependencyDownloader downloader) { this.downloader = downloader; @@ -53,6 +54,14 @@ class DownloadThreadPool extends ServiceSupport implements CamelContextAware { this.camelContext = camelContext; } + public boolean isVerbose() { + return verbose; + } + + public void setVerbose(boolean verbose) { + this.verbose = verbose; + } + public void download(Logger log, Runnable task, String gav) { Future<?> future = executorService.submit(task); awaitCompletion(log, future, gav); @@ -89,7 +98,7 @@ class DownloadThreadPool extends ServiceSupport implements CamelContextAware { long taken = watch.taken(); String msg = "Resolved: " + gav + " (took: " + TimeUtils.printDuration(taken, true) + ")"; - if (taken > 2000) { + if (verbose || taken > 2000) { // slow resolving then log log.info(msg); } else { @@ -105,6 +114,7 @@ class DownloadThreadPool extends ServiceSupport implements CamelContextAware { } else { executorService = Executors.newCachedThreadPool(); } + downloader.setVerbose(verbose); } @Override 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 164701bdb20..595c903953e 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 @@ -62,6 +62,7 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende private String[] bootClasspath; private DownloadThreadPool threadPool; + private boolean verbose; private ClassLoader classLoader; private CamelContext camelContext; private final Set<DownloadListener> downloadListeners = new LinkedHashSet<>(); @@ -98,6 +99,14 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende this.classLoader = classLoader; } + public boolean isVerbose() { + return verbose; + } + + public void setVerbose(boolean verbose) { + this.verbose = verbose; + } + public KnownReposResolver getKnownReposResolver() { return knownReposResolver; } @@ -211,7 +220,11 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende String gav = groupId + ":" + artifactId + ":" + version; threadPool.download(LOG, () -> { - LOG.debug("Downloading: {}", gav); + 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 @@ -230,7 +243,11 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende List<MavenArtifact> artifacts = resolveDependenciesViaAether(deps, extraRepositories, transitively, useApacheSnaphots); List<File> files = new ArrayList<>(); - LOG.debug("Resolved {} -> [{}]", gav, artifacts); + if (verbose) { + LOG.info("Resolved {} -> [{}]", gav, artifacts); + } else { + LOG.debug("Resolved {} -> [{}]", gav, artifacts); + } for (MavenArtifact a : artifacts) { File file = a.getFile(); @@ -242,7 +259,11 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende ddc.addFile(file); } files.add(file); - LOG.trace("Added classpath: {}", a.getGav()); + if (verbose) { + LOG.info("Added classpath: {}", a.getGav()); + } else { + LOG.debug("Added classpath: {}", a.getGav()); + } } } @@ -271,14 +292,22 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende @Override public MavenArtifact downloadArtifact(String groupId, String artifactId, String version) { String gav = groupId + ":" + artifactId + ":" + version; - LOG.debug("DownloadingArtifact: {}", gav); + 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"); List<MavenArtifact> artifacts = resolveDependenciesViaAether(deps, null, false, useApacheSnaphots); - LOG.debug("Resolved {} -> [{}]", gav, artifacts); + if (verbose) { + LOG.info("Resolved {} -> [{}]", gav, artifacts); + } else { + LOG.debug("Resolved {} -> [{}]", gav, artifacts); + } if (artifacts.size() == 1) { return artifacts.get(0); @@ -292,7 +321,11 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende String groupId, String artifactId, String minimumVersion, String repo) { String gav = groupId + ":" + artifactId; - LOG.debug("DownloadAvailableVersions: {}", gav); + if (verbose) { + LOG.info("DownloadAvailableVersions: {}", gav); + } else { + LOG.debug("DownloadAvailableVersions: {}", gav); + } List<String[]> answer = new ArrayList<>(); @@ -419,7 +452,7 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende } repositories.add(url.toExternalForm()); } catch (MalformedURLException e) { - LOG.warn("Can't use {} URL: {}. Skipping.", repo, e.getMessage(), e); + LOG.warn("Cannot use {} URL: {}. Skipping.", repo, e.getMessage(), e); } } } @@ -432,6 +465,7 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende classLoader = camelContext.getApplicationContextClassLoader(); } threadPool = new DownloadThreadPool(this); + threadPool.setVerbose(verbose); threadPool.setCamelContext(camelContext); ServiceHelper.buildService(threadPool);