You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/07/30 08:56:19 UTC

[camel] 01/01: CAMEL-19588: camel-jbang - Starting via jbang --verbose should output more details on startup

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 <cl...@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);