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);