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 2022/06/16 07:56:04 UTC

[camel] branch main updated: camel-jbang - Improved detect already on classpath

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 56858306040 camel-jbang - Improved detect already on classpath
56858306040 is described below

commit 568583060403da3ed49fb4758c08fe5f18c0baa1
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Jun 16 09:55:53 2022 +0200

    camel-jbang - Improved detect already on classpath
---
 .../main/console/DependencyDownloaderConsole.java  |  3 ++-
 .../main/download/MavenDependencyDownloader.java   | 26 ++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/console/DependencyDownloaderConsole.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/console/DependencyDownloaderConsole.java
index d2220ff2d8a..0ffc31a0d5d 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/console/DependencyDownloaderConsole.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/console/DependencyDownloaderConsole.java
@@ -27,7 +27,8 @@ import org.apache.camel.util.json.JsonObject;
 public class DependencyDownloaderConsole extends AbstractDevConsole {
 
     public DependencyDownloaderConsole() {
-        super("jvm", "dependency-downloader", "Maven Dependency Downloader", "Displays information about dependencies downloaded at runtime");
+        super("jvm", "dependency-downloader", "Maven Dependency Downloader",
+              "Displays information about dependencies downloaded at runtime");
     }
 
     @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 e409e735e2a..2606a5d45ff 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
@@ -17,6 +17,8 @@
 package org.apache.camel.main.download;
 
 import java.io.File;
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.ArrayList;
@@ -38,6 +40,7 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende
     private static final Logger LOG = LoggerFactory.getLogger(MavenDependencyDownloader.class);
     private static final String CP = System.getProperty("java.class.path");
 
+    private String[] bootClasspath;
     private DownloadThreadPool threadPool;
     private CamelContext camelContext;
     private DownloadListener downloadListener;
@@ -152,6 +155,20 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende
             target = target + "-" + version;
         }
 
+        if (bootClasspath != null) {
+            for (String s : bootClasspath) {
+                if (s.contains(target)) {
+                    // trigger listener
+                    DownloadListener listener = camelContext.getExtension(DownloadListener.class);
+                    if (listener != null) {
+                        listener.onAlreadyDownloadedDependency(groupId, artifactId, version);
+                    }
+                    // already on classpath
+                    return true;
+                }
+            }
+        }
+
         if (camelContext.getApplicationContextClassLoader() != null) {
             ClassLoader cl = camelContext.getApplicationContextClassLoader();
             if (cl instanceof URLClassLoader) {
@@ -180,6 +197,15 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende
         ServiceHelper.buildService(threadPool);
     }
 
+    @Override
+    protected void doInit() throws Exception {
+        RuntimeMXBean mb = ManagementFactory.getRuntimeMXBean();
+        if (mb != null) {
+            bootClasspath = mb.getClassPath().split("[:|;]");
+        }
+        ServiceHelper.initService(threadPool);
+    }
+
     @Override
     protected void doStop() throws Exception {
         ServiceHelper.stopAndShutdownService(threadPool);