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/15 09:00:45 UTC

[camel] branch main updated (adb0d1a1296 -> 3328af350cc)

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

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


    from adb0d1a1296 (chores) ci: force the branch name to avoid overwriting analysis in the main branch
     new 563fc191e29 CAMEL-18194: camel-kamelet-main - Restructure
     new 8b8e7b45969 CAMEL-18194: camel-jbang - Refactor to make download code as single service.
     new 3328af350cc CAMEL-18194: camel-jbang - Refactor to make download code as single service.

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../camel/dsl/jbang/core/commands/BaseExport.java  |  4 +-
 .../dsl/jbang/core/commands/ExportCamelMain.java   |  4 +-
 .../dsl/jbang/core/commands/ExportQuarkus.java     |  4 +-
 .../dsl/jbang/core/commands/ExportSpringBoot.java  |  4 +-
 .../apache/camel/dsl/jbang/core/commands/Run.java  |  2 +-
 .../java/org/apache/camel/main/KameletMain.java    | 55 ++++++++++----
 .../CommandLineDependencyDownloader.java           | 34 +++------
 .../camel/main/download/DependencyDownloader.java  | 67 +++++++++++++++++
 .../DependencyDownloaderClassLoader.java           |  2 +-
 .../DependencyDownloaderClassResolver.java         | 17 ++---
 .../DependencyDownloaderComponentResolver.java     | 34 +++------
 .../DependencyDownloaderDataFormatResolver.java    | 29 ++------
 .../DependencyDownloaderKamelet.java               | 40 ++++------
 .../DependencyDownloaderLanguageResolver.java      | 27 ++-----
 ...ependencyDownloaderPropertyBindingListener.java | 17 ++---
 .../DependencyDownloaderResourceLoader.java        | 19 ++---
 .../DependencyDownloaderRoutesLoader.java          | 18 +++--
 .../DependencyDownloaderStrategy.java              | 18 ++---
 .../main/{ => download}/DownloadException.java     |  2 +-
 .../main/{ => download}/DownloadListener.java      |  2 +-
 .../main/{ => download}/DownloadThreadPool.java    | 32 +++++++-
 .../{ => download}/KnownDependenciesResolver.java  |  4 +-
 .../camel/main/{ => download}/MavenArtifact.java   |  2 +-
 .../MavenDependencyDownloader.java}                | 85 +++++++++++++++++-----
 .../MavenDependencyResolver.java}                  | 21 +++---
 .../apache/camel/main/{ => download}/MavenGav.java | 20 +++--
 .../camel/main/{ => http}/VertxHttpServer.java     |  7 +-
 .../AnnotationDependencyInjection.java             |  2 +-
 .../main/{ => util}/CamelJBangSettingsHelper.java  |  2 +-
 .../main/{ => util}/ExtraFilesClassLoader.java     |  4 +-
 ...lTest.java => MavenDependencyResolverTest.java} |  6 +-
 .../java/org/apache/camel/main/MavenGavTest.java   | 10 ++-
 32 files changed, 350 insertions(+), 244 deletions(-)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/CommandLineDependencyDownloader.java (69%)
 create mode 100644 dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DependencyDownloaderClassLoader.java (97%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DependencyDownloaderClassResolver.java (78%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DependencyDownloaderComponentResolver.java (72%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DependencyDownloaderDataFormatResolver.java (65%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DependencyDownloaderKamelet.java (82%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DependencyDownloaderLanguageResolver.java (67%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DependencyDownloaderPropertyBindingListener.java (73%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DependencyDownloaderResourceLoader.java (75%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DependencyDownloaderRoutesLoader.java (84%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DependencyDownloaderStrategy.java (67%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DownloadException.java (96%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DownloadListener.java (96%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/DownloadThreadPool.java (72%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/KnownDependenciesResolver.java (95%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/MavenArtifact.java (96%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{DownloaderHelper.java => download/MavenDependencyDownloader.java} (66%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{DependencyUtil.java => download/MavenDependencyResolver.java} (88%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => download}/MavenGav.java (87%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => http}/VertxHttpServer.java (98%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => injection}/AnnotationDependencyInjection.java (99%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => util}/CamelJBangSettingsHelper.java (98%)
 rename dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/{ => util}/ExtraFilesClassLoader.java (94%)
 rename dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/{DependencyUtilTest.java => MavenDependencyResolverTest.java} (80%)


[camel] 01/03: CAMEL-18194: camel-kamelet-main - Restructure

Posted by da...@apache.org.
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

commit 563fc191e29d02d6087f5fbc29fe644332594332
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jun 15 08:57:26 2022 +0200

    CAMEL-18194: camel-kamelet-main - Restructure
---
 .../java/org/apache/camel/main/KameletMain.java    | 16 ++++++++++++
 .../CommandLineDependencyDownloader.java           |  2 +-
 .../DependencyDownloader.java}                     | 30 +++++++++++++++++-----
 .../DependencyDownloaderClassLoader.java           |  2 +-
 .../DependencyDownloaderClassResolver.java         |  4 +--
 .../DependencyDownloaderComponentResolver.java     |  7 ++---
 .../DependencyDownloaderDataFormatResolver.java    |  4 +--
 .../DependencyDownloaderKamelet.java               |  5 ++--
 .../DependencyDownloaderLanguageResolver.java      |  4 +--
 ...ependencyDownloaderPropertyBindingListener.java |  4 +--
 .../DependencyDownloaderResourceLoader.java        |  4 +--
 .../DependencyDownloaderRoutesLoader.java          |  4 ++-
 .../DependencyDownloaderStrategy.java              |  4 +--
 .../camel/main/{ => download}/DependencyUtil.java  |  4 +--
 .../main/{ => download}/DownloadException.java     |  2 +-
 .../main/{ => download}/DownloadListener.java      |  2 +-
 .../main/{ => download}/DownloadThreadPool.java    |  2 +-
 .../main/{ => download}/DownloaderHelper.java      |  2 +-
 .../{ => download}/KnownDependenciesResolver.java  |  2 +-
 .../camel/main/{ => download}/MavenArtifact.java   |  2 +-
 .../apache/camel/main/{ => download}/MavenGav.java |  2 +-
 .../camel/main/{ => http}/VertxHttpServer.java     |  7 ++++-
 .../AnnotationDependencyInjection.java             |  2 +-
 .../main/{ => util}/CamelJBangSettingsHelper.java  |  2 +-
 .../main/{ => util}/ExtraFilesClassLoader.java     |  4 +--
 .../org/apache/camel/main/DependencyUtilTest.java  |  2 ++
 .../java/org/apache/camel/main/MavenGavTest.java   |  1 +
 27 files changed, 85 insertions(+), 41 deletions(-)

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 0c4f53f7400..88fd419a717 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
@@ -26,6 +26,22 @@ import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.ProducerTemplate;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.main.download.CommandLineDependencyDownloader;
+import org.apache.camel.main.download.DependencyDownloaderClassLoader;
+import org.apache.camel.main.download.DependencyDownloaderClassResolver;
+import org.apache.camel.main.download.DependencyDownloaderComponentResolver;
+import org.apache.camel.main.download.DependencyDownloaderDataFormatResolver;
+import org.apache.camel.main.download.DependencyDownloaderKamelet;
+import org.apache.camel.main.download.DependencyDownloaderLanguageResolver;
+import org.apache.camel.main.download.DependencyDownloaderPropertyBindingListener;
+import org.apache.camel.main.download.DependencyDownloaderResourceLoader;
+import org.apache.camel.main.download.DependencyDownloaderRoutesLoader;
+import org.apache.camel.main.download.DependencyDownloaderStrategy;
+import org.apache.camel.main.download.DownloadListener;
+import org.apache.camel.main.download.KnownDependenciesResolver;
+import org.apache.camel.main.http.VertxHttpServer;
+import org.apache.camel.main.injection.AnnotationDependencyInjection;
+import org.apache.camel.main.util.ExtraFilesClassLoader;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.startup.jfr.FlightRecorderStartupStepRecorder;
 
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/CommandLineDependencyDownloader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java
similarity index 98%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/CommandLineDependencyDownloader.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java
index b712d46af34..e6d256d7244 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/CommandLineDependencyDownloader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadListener.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java
similarity index 51%
copy from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadListener.java
copy to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java
index 78c60967738..e5ea11fc3a2 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadListener.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java
@@ -14,21 +14,37 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
+
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.StaticService;
 
 /**
- * Listener for downloading a dependency (can be downloaded from a local cache)
+ * To download dependencies at runtime.
  */
-public interface DownloadListener {
+public interface DependencyDownloader extends CamelContextAware, StaticService {
+
+    String getRepos();
+
+    /**
+     * Additional maven repositories for download on-demand (Use commas to separate multiple repositories).
+     */
+    void setRepos(String repos);
+
+    boolean isFresh();
 
     /**
-     * Downloads a new dependency
+     * Make sure we use fresh (i.e. non-cached) resources.
      */
-    void onDownloadDependency(String groupId, String artifactId, String version);
+    void setFresh(boolean fresh);
 
     /**
-     * Uses an existing already downloaded dependency
+     * Downloads the dependency
+     *
+     * @param groupId    maven group id
+     * @param artifactId maven artifact id
+     * @param version    maven version
      */
-    void onAlreadyDownloadedDependency(String groupId, String artifactId, String version);
+    void downloadDependency(String groupId, String artifactId, String version);
 
 }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderClassLoader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderClassLoader.java
similarity index 97%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderClassLoader.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderClassLoader.java
index 723a976222b..932bf8de9f9 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderClassLoader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderClassLoader.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import java.io.File;
 import java.net.MalformedURLException;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderClassResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderClassResolver.java
similarity index 95%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderClassResolver.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderClassResolver.java
index cd3b2f22e0a..5d675ebd973 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderClassResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderClassResolver.java
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.engine.DefaultClassResolver;
 import org.apache.camel.util.ObjectHelper;
 
-final class DependencyDownloaderClassResolver extends DefaultClassResolver {
+public final class DependencyDownloaderClassResolver extends DefaultClassResolver {
 
     private final KnownDependenciesResolver knownDependenciesResolver;
     private final String repos;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderComponentResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderComponentResolver.java
similarity index 91%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderComponentResolver.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderComponentResolver.java
index 122cea705fb..4c490cb972e 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderComponentResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderComponentResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
@@ -23,12 +23,13 @@ import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.component.platform.http.PlatformHttpComponent;
 import org.apache.camel.impl.engine.DefaultComponentResolver;
+import org.apache.camel.main.http.VertxHttpServer;
 import org.apache.camel.tooling.model.ComponentModel;
 
 /**
  * Auto downloaded needed JARs when resolving components.
  */
-final class DependencyDownloaderComponentResolver extends DefaultComponentResolver implements CamelContextAware {
+public final class DependencyDownloaderComponentResolver extends DefaultComponentResolver implements CamelContextAware {
 
     private static final String ACCEPTED_STUB_NAMES = "stub,bean,class,kamelet,rest,rest-api,platform-http,vertx-http";
 
@@ -74,7 +75,7 @@ final class DependencyDownloaderComponentResolver extends DefaultComponentResolv
 
         if (answer instanceof PlatformHttpComponent) {
             // setup a default http server on port 8080 if not already done
-            VertxHttpServer.phc = (PlatformHttpComponent) answer;
+            VertxHttpServer.setPlatformHttpComponent((PlatformHttpComponent) answer);
             VertxHttpServer.registerServer(camelContext, stub);
         }
 
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderDataFormatResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderDataFormatResolver.java
similarity index 93%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderDataFormatResolver.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderDataFormatResolver.java
index e21ba3284d8..6443f36a9aa 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderDataFormatResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderDataFormatResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
@@ -27,7 +27,7 @@ import org.apache.camel.tooling.model.DataFormatModel;
 /**
  * Auto downloaded needed JARs when resolving data formats.
  */
-final class DependencyDownloaderDataFormatResolver extends DefaultDataFormatResolver implements CamelContextAware {
+public final class DependencyDownloaderDataFormatResolver extends DefaultDataFormatResolver implements CamelContextAware {
 
     private final CamelCatalog catalog = new DefaultCamelCatalog();
     private CamelContext camelContext;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderKamelet.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
similarity index 97%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderKamelet.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
index 6e545c75734..7513a69f3d7 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderKamelet.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -44,7 +44,8 @@ import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.nodeAt;
 /**
  * To automatic downloaded dependencies that Kamelets requires.
  */
-final class DependencyDownloaderKamelet extends ServiceSupport implements CamelContextAware, RouteTemplateLoaderListener {
+public final class DependencyDownloaderKamelet extends ServiceSupport
+        implements CamelContextAware, RouteTemplateLoaderListener {
 
     private final KameletDependencyDownloader downloader;
     private CamelContext camelContext;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderLanguageResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java
similarity index 93%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderLanguageResolver.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java
index 5cae567394f..4dc43519a65 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderLanguageResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
@@ -27,7 +27,7 @@ import org.apache.camel.tooling.model.LanguageModel;
 /**
  * Auto downloaded needed JARs when resolving languages.
  */
-final class DependencyDownloaderLanguageResolver extends DefaultLanguageResolver implements CamelContextAware {
+public final class DependencyDownloaderLanguageResolver extends DefaultLanguageResolver implements CamelContextAware {
 
     private final CamelCatalog catalog = new DefaultCamelCatalog();
     private CamelContext camelContext;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderPropertyBindingListener.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderPropertyBindingListener.java
similarity index 94%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderPropertyBindingListener.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderPropertyBindingListener.java
index 1dd1d0f0387..cb5ad91e6fb 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderPropertyBindingListener.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderPropertyBindingListener.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.support.PropertyBindingListener;
 
-class DependencyDownloaderPropertyBindingListener implements PropertyBindingListener {
+public class DependencyDownloaderPropertyBindingListener implements PropertyBindingListener {
 
     private final CamelContext camelContext;
     private final KnownDependenciesResolver knownDependenciesResolver;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderResourceLoader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderResourceLoader.java
similarity index 94%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderResourceLoader.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderResourceLoader.java
index 837d6c4234f..53660c7a75a 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderResourceLoader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderResourceLoader.java
@@ -15,14 +15,14 @@
  * limitations under the License.
  */
 
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.impl.engine.DefaultResourceLoader;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.util.StringHelper;
 
-class DependencyDownloaderResourceLoader extends DefaultResourceLoader {
+public class DependencyDownloaderResourceLoader extends DefaultResourceLoader {
 
     private final String repos;
     private final boolean fresh;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderRoutesLoader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java
similarity index 96%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderRoutesLoader.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java
index 2c1578569fd..832b1d75028 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderRoutesLoader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java
@@ -14,10 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.main.MainConfigurationProperties;
+import org.apache.camel.main.MainRoutesLoader;
 import org.apache.camel.spi.FactoryFinder;
 import org.apache.camel.spi.RoutesBuilderLoader;
 import org.apache.camel.support.ResolverHelper;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderStrategy.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java
similarity index 93%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderStrategy.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java
index e9c24358c46..17e22c9f22e 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderStrategy.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java
@@ -14,12 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.spi.DependencyStrategy;
 
-class DependencyDownloaderStrategy implements DependencyStrategy {
+public class DependencyDownloaderStrategy implements DependencyStrategy {
 
     private final CamelContext camelContext;
     private final String repos;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyUtil.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyUtil.java
similarity index 98%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyUtil.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyUtil.java
index 1608859de11..227f5ef51ba 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyUtil.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyUtil.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import java.io.File;
 import java.lang.reflect.Field;
@@ -34,7 +34,7 @@ import org.jboss.shrinkwrap.resolver.api.maven.MavenStrategyStage;
 import org.jboss.shrinkwrap.resolver.api.maven.MavenWorkingSession;
 import org.jboss.shrinkwrap.resolver.impl.maven.ConfigurableMavenResolverSystemImpl;
 
-final class DependencyUtil {
+public final class DependencyUtil {
 
     private DependencyUtil() {
     }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadException.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadException.java
similarity index 96%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadException.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadException.java
index 588f445df11..4cad7ae31a6 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadException.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadException.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 public class DownloadException extends RuntimeException {
 
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadListener.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java
similarity index 96%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadListener.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java
index 78c60967738..3461965329d 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadListener.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 /**
  * Listener for downloading a dependency (can be downloaded from a local cache)
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadThreadPool.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java
similarity index 98%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadThreadPool.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java
index 303a8eaf688..fd763179a39 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadThreadPool.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadThreadPool.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloaderHelper.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloaderHelper.java
similarity index 99%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloaderHelper.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloaderHelper.java
index 68de137e09c..c88c3f673b7 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloaderHelper.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloaderHelper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import java.io.File;
 import java.net.URL;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KnownDependenciesResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownDependenciesResolver.java
similarity index 98%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KnownDependenciesResolver.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownDependenciesResolver.java
index 29997d93814..dd1cca2f96c 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KnownDependenciesResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownDependenciesResolver.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import java.io.InputStream;
 import java.util.HashMap;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/MavenArtifact.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenArtifact.java
similarity index 96%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/MavenArtifact.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenArtifact.java
index 9962f561d16..d9ca9c07ecd 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/MavenArtifact.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenArtifact.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import java.io.File;
 
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/MavenGav.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenGav.java
similarity index 98%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/MavenGav.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenGav.java
index e9404452749..f31cd96553d 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/MavenGav.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenGav.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
 
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/http/VertxHttpServer.java
similarity index 98%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/http/VertxHttpServer.java
index 348083cd66e..0d31b7b6af4 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/VertxHttpServer.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/http/VertxHttpServer.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.http;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
@@ -48,6 +48,7 @@ import org.apache.camel.console.DevConsoleRegistry;
 import org.apache.camel.health.HealthCheck;
 import org.apache.camel.health.HealthCheckHelper;
 import org.apache.camel.health.HealthCheckRegistry;
+import org.apache.camel.main.util.CamelJBangSettingsHelper;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.support.SimpleEventNotifierSupport;
 import org.apache.camel.util.ObjectHelper;
@@ -73,6 +74,10 @@ public final class VertxHttpServer {
     private VertxHttpServer() {
     }
 
+    public static void setPlatformHttpComponent(PlatformHttpComponent phc) {
+        VertxHttpServer.phc = phc;
+    }
+
     public static void registerServer(CamelContext camelContext, boolean stub) {
         if (REGISTERED.compareAndSet(false, true)) {
             doRegisterServer(camelContext, 8080, stub);
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/AnnotationDependencyInjection.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/injection/AnnotationDependencyInjection.java
similarity index 99%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/AnnotationDependencyInjection.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/injection/AnnotationDependencyInjection.java
index 449fae07577..17d670229d7 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/AnnotationDependencyInjection.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/injection/AnnotationDependencyInjection.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.injection;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/CamelJBangSettingsHelper.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/CamelJBangSettingsHelper.java
similarity index 98%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/CamelJBangSettingsHelper.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/CamelJBangSettingsHelper.java
index 9975d64504a..66efe2d65e6 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/CamelJBangSettingsHelper.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/CamelJBangSettingsHelper.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.util;
 
 import java.io.File;
 import java.io.FileInputStream;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/ExtraFilesClassLoader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/ExtraFilesClassLoader.java
similarity index 94%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/ExtraFilesClassLoader.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/ExtraFilesClassLoader.java
index 4005a09f48a..884ae63b6c2 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/ExtraFilesClassLoader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/util/ExtraFilesClassLoader.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.main;
+package org.apache.camel.main.util;
 
 import java.io.File;
 import java.net.MalformedURLException;
@@ -23,7 +23,7 @@ import java.net.URL;
 /**
  * Classloader used to load the extra files that were present in the CLI arguments
  */
-final class ExtraFilesClassLoader extends ClassLoader {
+public final class ExtraFilesClassLoader extends ClassLoader {
 
     final String[] files;
 
diff --git a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java
index 374b17fc6ed..fbae20cafbe 100644
--- a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java
+++ b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java
@@ -18,6 +18,8 @@ package org.apache.camel.main;
 
 import java.util.List;
 
+import org.apache.camel.main.download.DependencyUtil;
+import org.apache.camel.main.download.MavenArtifact;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
diff --git a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenGavTest.java b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenGavTest.java
index 3776b07e484..6bc7d79edaa 100644
--- a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenGavTest.java
+++ b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenGavTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.main;
 
+import org.apache.camel.main.download.MavenGav;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;


[camel] 02/03: CAMEL-18194: camel-jbang - Refactor to make download code as single service.

Posted by da...@apache.org.
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

commit 8b8e7b459691269bbc8a35b744424a2911cfb45e
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jun 15 09:52:49 2022 +0200

    CAMEL-18194: camel-jbang - Refactor to make download code as single service.
---
 .../camel/dsl/jbang/core/commands/BaseExport.java  |  2 +-
 .../dsl/jbang/core/commands/ExportCamelMain.java   |  2 +-
 .../dsl/jbang/core/commands/ExportQuarkus.java     |  2 +-
 .../dsl/jbang/core/commands/ExportSpringBoot.java  |  2 +-
 .../apache/camel/dsl/jbang/core/commands/Run.java  |  2 +-
 .../java/org/apache/camel/main/KameletMain.java    | 39 ++++++----
 .../download/CommandLineDependencyDownloader.java  | 28 +++-----
 .../camel/main/download/DependencyDownloader.java  | 17 +++++
 .../DependencyDownloaderClassResolver.java         | 13 ++--
 .../DependencyDownloaderComponentResolver.java     | 29 +++-----
 .../DependencyDownloaderDataFormatResolver.java    | 27 ++-----
 .../main/download/DependencyDownloaderKamelet.java | 31 +++-----
 .../DependencyDownloaderLanguageResolver.java      | 25 ++-----
 ...ependencyDownloaderPropertyBindingListener.java | 13 ++--
 .../DependencyDownloaderResourceLoader.java        | 15 ++--
 .../download/DependencyDownloaderRoutesLoader.java | 14 ++--
 .../download/DependencyDownloaderStrategy.java     | 12 ++--
 .../camel/main/download/DownloadThreadPool.java    | 30 +++++++-
 ...rHelper.java => MavenDependencyDownloader.java} | 83 +++++++++++++++++-----
 ...dencyUtil.java => MavenDependencyResolver.java} | 17 ++---
 ...lTest.java => MavenDependencyResolverTest.java} |  6 +-
 21 files changed, 215 insertions(+), 194 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java
index 7a8f6bae46b..36e8753c251 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java
@@ -36,7 +36,7 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
-import org.apache.camel.main.MavenGav;
+import org.apache.camel.main.download.MavenGav;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.OrderedProperties;
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
index f1ee6bb11ab..781d7496b0c 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
@@ -24,7 +24,7 @@ import java.util.Set;
 
 import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
-import org.apache.camel.main.MavenGav;
+import org.apache.camel.main.download.MavenGav;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.OrderedProperties;
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
index 99aeb442064..77a0655792d 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
@@ -22,7 +22,7 @@ import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.util.Set;
 
-import org.apache.camel.main.MavenGav;
+import org.apache.camel.main.download.MavenGav;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.OrderedProperties;
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
index a07371c3e74..5009ef15e7e 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
@@ -25,7 +25,7 @@ import java.util.Set;
 
 import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
-import org.apache.camel.main.MavenGav;
+import org.apache.camel.main.download.MavenGav;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.OrderedProperties;
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 317eabc84c6..7357e8ef598 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
@@ -51,8 +51,8 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
 import org.apache.camel.generator.openapi.RestDslGenerator;
 import org.apache.camel.impl.lw.LightweightCamelContext;
-import org.apache.camel.main.DownloadListener;
 import org.apache.camel.main.KameletMain;
+import org.apache.camel.main.download.DownloadListener;
 import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
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 88fd419a717..b46193c93d2 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
@@ -39,6 +39,7 @@ import org.apache.camel.main.download.DependencyDownloaderRoutesLoader;
 import org.apache.camel.main.download.DependencyDownloaderStrategy;
 import org.apache.camel.main.download.DownloadListener;
 import org.apache.camel.main.download.KnownDependenciesResolver;
+import org.apache.camel.main.download.MavenDependencyDownloader;
 import org.apache.camel.main.http.VertxHttpServer;
 import org.apache.camel.main.injection.AnnotationDependencyInjection;
 import org.apache.camel.main.util.ExtraFilesClassLoader;
@@ -263,17 +264,25 @@ public class KameletMain extends MainCommandLineSupport {
         answer.setLogJvmUptime(true);
         if (download) {
             answer.setApplicationContextClassLoader(createApplicationContextClassLoader());
+
+            MavenDependencyDownloader downloader = new MavenDependencyDownloader();
+            downloader.setCamelContext(answer);
+            downloader.setRepos(repos);
+            downloader.setFresh(fresh);
+            downloader.setDownloadListener(downloadListener);
+
+            // register as extension
+            try {
+                answer.adapt(ExtendedCamelContext.class).addService(downloader);
+            } catch (Exception e) {
+                throw RuntimeCamelException.wrapRuntimeException(e);
+            }
         }
         if (stub) {
             // turn off auto-wiring when running in stub mode
             mainConfigurationProperties.setAutowiredEnabled(false);
         }
 
-        // register download listener
-        if (downloadListener != null) {
-            answer.adapt(ExtendedCamelContext.class).setExtension(DownloadListener.class, downloadListener);
-        }
-
         String info = startupInfo();
         if (info != null) {
             LOG.info(info);
@@ -328,22 +337,22 @@ public class KameletMain extends MainCommandLineSupport {
             // dependencies from CLI
             Object dependencies = getInitialProperties().get("camel.jbang.dependencies");
             if (dependencies != null) {
-                answer.addService(new CommandLineDependencyDownloader(dependencies.toString(), repos, fresh));
+                answer.addService(new CommandLineDependencyDownloader(answer, dependencies.toString()));
             }
 
             KnownDependenciesResolver known = new KnownDependenciesResolver(answer);
             known.loadKnownDependencies();
             DependencyDownloaderPropertyBindingListener listener
-                    = new DependencyDownloaderPropertyBindingListener(answer, known, repos, fresh);
+                    = new DependencyDownloaderPropertyBindingListener(answer, known);
             answer.getRegistry().bind(DependencyDownloaderPropertyBindingListener.class.getName(), listener);
             answer.getRegistry().bind(DependencyDownloaderStrategy.class.getName(),
-                    new DependencyDownloaderStrategy(answer, repos, fresh));
-            answer.setClassResolver(new DependencyDownloaderClassResolver(answer, known, repos, fresh));
-            answer.setComponentResolver(new DependencyDownloaderComponentResolver(answer, repos, fresh, stub));
-            answer.setDataFormatResolver(new DependencyDownloaderDataFormatResolver(answer, repos, fresh));
-            answer.setLanguageResolver(new DependencyDownloaderLanguageResolver(answer, repos, fresh));
-            answer.setResourceLoader(new DependencyDownloaderResourceLoader(answer, repos, fresh));
-            answer.addService(new DependencyDownloaderKamelet(answer, repos, fresh));
+                    new DependencyDownloaderStrategy(answer));
+            answer.setClassResolver(new DependencyDownloaderClassResolver(answer, known));
+            answer.setComponentResolver(new DependencyDownloaderComponentResolver(answer, stub));
+            answer.setDataFormatResolver(new DependencyDownloaderDataFormatResolver(answer));
+            answer.setLanguageResolver(new DependencyDownloaderLanguageResolver(answer));
+            answer.setResourceLoader(new DependencyDownloaderResourceLoader(answer));
+            answer.addService(new DependencyDownloaderKamelet(answer));
         } catch (Exception e) {
             throw RuntimeCamelException.wrapRuntimeException(e);
         }
@@ -379,7 +388,7 @@ public class KameletMain extends MainCommandLineSupport {
         if (download) {
             // use resolvers that can auto downloaded
             camelContext.adapt(ExtendedCamelContext.class)
-                    .setRoutesLoader(new DependencyDownloaderRoutesLoader(configure(), repos, fresh));
+                    .setRoutesLoader(new DependencyDownloaderRoutesLoader(camelContext, configure()));
         } else {
             super.configureRoutesLoader(camelContext);
         }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java
index e6d256d7244..b2209da6eec 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java
@@ -20,30 +20,18 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.support.service.ServiceSupport;
 
-public class CommandLineDependencyDownloader extends ServiceSupport implements CamelContextAware {
+public class CommandLineDependencyDownloader extends ServiceSupport {
 
-    private CamelContext camelContext;
+    private final CamelContext camelContext;
+    private final DependencyDownloader downloader;
     private final String dependencies;
-    private final String repos;
-    private final boolean fresh;
 
-    public CommandLineDependencyDownloader(String dependencies, String repos, boolean fresh) {
-        this.dependencies = dependencies;
-        this.repos = repos;
-        this.fresh = fresh;
-    }
-
-    @Override
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public void setCamelContext(CamelContext camelContext) {
+    public CommandLineDependencyDownloader(CamelContext camelContext, String dependencies) {
         this.camelContext = camelContext;
+        this.dependencies = dependencies;
+        this.downloader = camelContext.hasService(DependencyDownloader.class);
     }
 
     @Override
@@ -67,7 +55,7 @@ public class CommandLineDependencyDownloader extends ServiceSupport implements C
         if (!gavs.isEmpty()) {
             for (String gav : gavs) {
                 MavenGav mg = MavenGav.parseGav(camelContext, gav);
-                DownloaderHelper.downloadDependency(camelContext, repos, fresh, mg.getGroupId(), mg.getArtifactId(),
+                downloader.downloadDependency(mg.getGroupId(), mg.getArtifactId(),
                         mg.getVersion());
             }
         }
@@ -76,7 +64,7 @@ public class CommandLineDependencyDownloader extends ServiceSupport implements C
     private boolean isValidGav(String gav) {
         MavenGav mg = MavenGav.parseGav(camelContext, gav);
         boolean exists
-                = DownloaderHelper.alreadyOnClasspath(camelContext, mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
+                = downloader.alreadyOnClasspath(mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
         // valid if not already on classpath
         return !exists;
     }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java
index e5ea11fc3a2..5823a85dbf0 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java
@@ -24,6 +24,13 @@ import org.apache.camel.StaticService;
  */
 public interface DependencyDownloader extends CamelContextAware, StaticService {
 
+    DownloadListener getDownloadListener();
+
+    /**
+     * Sets a listener to capture download activity
+     */
+    void setDownloadListener(DownloadListener downloadListener);
+
     String getRepos();
 
     /**
@@ -47,4 +54,14 @@ public interface DependencyDownloader extends CamelContextAware, StaticService {
      */
     void downloadDependency(String groupId, String artifactId, String version);
 
+    /**
+     * Checks whether the dependency is already on the classpath
+     *
+     * @param  groupId    maven group id
+     * @param  artifactId maven artifact id
+     * @param  version    maven version
+     * @return            true if already on classpath, false if not.
+     */
+    boolean alreadyOnClasspath(String groupId, String artifactId, String version);
+
 }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderClassResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderClassResolver.java
index 5d675ebd973..fb5a9473802 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderClassResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderClassResolver.java
@@ -23,16 +23,13 @@ import org.apache.camel.util.ObjectHelper;
 public final class DependencyDownloaderClassResolver extends DefaultClassResolver {
 
     private final KnownDependenciesResolver knownDependenciesResolver;
-    private final String repos;
-    private final boolean fresh;
+    private final DependencyDownloader downloader;
 
     public DependencyDownloaderClassResolver(CamelContext camelContext,
-                                             KnownDependenciesResolver knownDependenciesResolver,
-                                             String repos, boolean fresh) {
+                                             KnownDependenciesResolver knownDependenciesResolver) {
         super(camelContext);
+        this.downloader = camelContext.hasService(DependencyDownloader.class);
         this.knownDependenciesResolver = knownDependenciesResolver;
-        this.repos = repos;
-        this.fresh = fresh;
     }
 
     @Override
@@ -48,9 +45,9 @@ public final class DependencyDownloaderClassResolver extends DefaultClassResolve
             // okay maybe the class is from a known GAV that we can download first and then load the class
             MavenGav gav = knownDependenciesResolver.mavenGavForClass(name);
             if (gav != null) {
-                if (!DownloaderHelper.alreadyOnClasspath(getCamelContext(), gav.getGroupId(), gav.getArtifactId(),
+                if (!downloader.alreadyOnClasspath(gav.getGroupId(), gav.getArtifactId(),
                         gav.getVersion())) {
-                    DownloaderHelper.downloadDependency(getCamelContext(), repos, fresh, gav.getGroupId(), gav.getArtifactId(),
+                    downloader.downloadDependency(gav.getGroupId(), gav.getArtifactId(),
                             gav.getVersion());
                 }
                 try {
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderComponentResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderComponentResolver.java
index 4c490cb972e..b28b1791d61 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderComponentResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderComponentResolver.java
@@ -17,7 +17,6 @@
 package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.Component;
 import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
@@ -29,39 +28,27 @@ import org.apache.camel.tooling.model.ComponentModel;
 /**
  * Auto downloaded needed JARs when resolving components.
  */
-public final class DependencyDownloaderComponentResolver extends DefaultComponentResolver implements CamelContextAware {
+public final class DependencyDownloaderComponentResolver extends DefaultComponentResolver {
 
     private static final String ACCEPTED_STUB_NAMES = "stub,bean,class,kamelet,rest,rest-api,platform-http,vertx-http";
 
     private final CamelCatalog catalog = new DefaultCamelCatalog();
-    private CamelContext camelContext;
-    private final String repos;
-    private final boolean fresh;
-    private boolean stub;
+    private final CamelContext camelContext;
+    private final DependencyDownloader downloader;
+    private final boolean stub;
 
-    public DependencyDownloaderComponentResolver(CamelContext camelContext, String repos, boolean fresh, boolean stub) {
+    public DependencyDownloaderComponentResolver(CamelContext camelContext, boolean stub) {
         this.camelContext = camelContext;
-        this.repos = repos;
-        this.fresh = fresh;
+        this.downloader = camelContext.hasService(DependencyDownloader.class);
         this.stub = stub;
     }
 
-    @Override
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public void setCamelContext(CamelContext camelContext) {
-        this.camelContext = camelContext;
-    }
-
     @Override
     public Component resolveComponent(String name, CamelContext context) {
         ComponentModel model = catalog.componentModel(name);
-        if (model != null && !DownloaderHelper.alreadyOnClasspath(camelContext, model.getGroupId(), model.getArtifactId(),
+        if (model != null && !downloader.alreadyOnClasspath(model.getGroupId(), model.getArtifactId(),
                 model.getVersion())) {
-            DownloaderHelper.downloadDependency(camelContext, repos, fresh, model.getGroupId(), model.getArtifactId(),
+            downloader.downloadDependency(model.getGroupId(), model.getArtifactId(),
                     model.getVersion());
         }
 
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderDataFormatResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderDataFormatResolver.java
index 6443f36a9aa..0a84d34fb85 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderDataFormatResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderDataFormatResolver.java
@@ -17,7 +17,6 @@
 package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.impl.engine.DefaultDataFormatResolver;
@@ -27,35 +26,23 @@ import org.apache.camel.tooling.model.DataFormatModel;
 /**
  * Auto downloaded needed JARs when resolving data formats.
  */
-public final class DependencyDownloaderDataFormatResolver extends DefaultDataFormatResolver implements CamelContextAware {
+public final class DependencyDownloaderDataFormatResolver extends DefaultDataFormatResolver {
 
     private final CamelCatalog catalog = new DefaultCamelCatalog();
-    private CamelContext camelContext;
-    private final String repos;
-    private final boolean fresh;
+    private final CamelContext camelContext;
+    private final DependencyDownloader downloader;
 
-    public DependencyDownloaderDataFormatResolver(CamelContext camelContext, String repos, boolean fresh) {
-        this.camelContext = camelContext;
-        this.repos = repos;
-        this.fresh = fresh;
-    }
-
-    @Override
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public void setCamelContext(CamelContext camelContext) {
+    public DependencyDownloaderDataFormatResolver(CamelContext camelContext) {
         this.camelContext = camelContext;
+        this.downloader = camelContext.hasService(DependencyDownloader.class);
     }
 
     @Override
     public DataFormat createDataFormat(String name, CamelContext context) {
         DataFormatModel model = catalog.dataFormatModel(name);
-        if (model != null && !DownloaderHelper.alreadyOnClasspath(camelContext, model.getGroupId(), model.getArtifactId(),
+        if (model != null && !downloader.alreadyOnClasspath(model.getGroupId(), model.getArtifactId(),
                 model.getVersion())) {
-            DownloaderHelper.downloadDependency(camelContext, repos, fresh, model.getGroupId(), model.getArtifactId(),
+            downloader.downloadDependency(model.getGroupId(), model.getArtifactId(),
                     model.getVersion());
         }
         return super.createDataFormat(name, context);
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
index 7513a69f3d7..b97ef3b1a67 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
@@ -50,9 +50,9 @@ public final class DependencyDownloaderKamelet extends ServiceSupport
     private final KameletDependencyDownloader downloader;
     private CamelContext camelContext;
 
-    public DependencyDownloaderKamelet(CamelContext camelContext, String repos, boolean fresh) {
+    public DependencyDownloaderKamelet(CamelContext camelContext) {
         this.camelContext = camelContext;
-        this.downloader = new KameletDependencyDownloader("yaml", repos, fresh);
+        this.downloader = new KameletDependencyDownloader(camelContext, "yaml");
     }
 
     @Override
@@ -103,28 +103,17 @@ public final class DependencyDownloaderKamelet extends ServiceSupport
     /**
      * To automatic downloaded dependencies that Kamelets requires.
      */
-    private static class KameletDependencyDownloader extends YamlRoutesBuilderLoaderSupport implements CamelContextAware {
+    private static class KameletDependencyDownloader extends YamlRoutesBuilderLoaderSupport {
 
         private static final Logger LOG = LoggerFactory.getLogger(KameletDependencyDownloader.class);
-        private CamelContext camelContext;
+        private final CamelContext camelContext;
+        private final DependencyDownloader downloader;
         private final Set<String> downloaded = new HashSet<>();
-        private final String repos;
-        private final boolean fresh;
 
-        public KameletDependencyDownloader(String extension, String repos, boolean fresh) {
+        public KameletDependencyDownloader(CamelContext camelContext, String extension) {
             super(extension);
-            this.repos = repos;
-            this.fresh = fresh;
-        }
-
-        @Override
-        public CamelContext getCamelContext() {
-            return camelContext;
-        }
-
-        @Override
-        public void setCamelContext(CamelContext camelContext) {
             this.camelContext = camelContext;
+            this.downloader = camelContext.hasService(DependencyDownloader.class);
         }
 
         @Override
@@ -173,8 +162,7 @@ public final class DependencyDownloaderKamelet extends ServiceSupport
             if (!gavs.isEmpty()) {
                 for (String gav : gavs) {
                     MavenGav mg = MavenGav.parseGav(camelContext, gav);
-                    DownloaderHelper.downloadDependency(camelContext, repos, fresh, mg.getGroupId(), mg.getArtifactId(),
-                            mg.getVersion());
+                    downloader.downloadDependency(mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
                     downloaded.add(gav);
                 }
             }
@@ -192,8 +180,7 @@ public final class DependencyDownloaderKamelet extends ServiceSupport
             }
 
             MavenGav mg = MavenGav.parseGav(camelContext, gav);
-            boolean exists
-                    = DownloaderHelper.alreadyOnClasspath(camelContext, mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
+            boolean exists = downloader.alreadyOnClasspath(mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
             // valid if not already on classpath
             return !exists;
         }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java
index 4dc43519a65..ba39831912f 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderLanguageResolver.java
@@ -17,7 +17,6 @@
 package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
 import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.impl.engine.DefaultLanguageResolver;
@@ -27,35 +26,23 @@ import org.apache.camel.tooling.model.LanguageModel;
 /**
  * Auto downloaded needed JARs when resolving languages.
  */
-public final class DependencyDownloaderLanguageResolver extends DefaultLanguageResolver implements CamelContextAware {
+public final class DependencyDownloaderLanguageResolver extends DefaultLanguageResolver {
 
     private final CamelCatalog catalog = new DefaultCamelCatalog();
     private CamelContext camelContext;
-    private final String repos;
-    private final boolean fresh;
+    private final DependencyDownloader downloader;
 
-    public DependencyDownloaderLanguageResolver(CamelContext camelContext, String repos, boolean fresh) {
-        this.camelContext = camelContext;
-        this.repos = repos;
-        this.fresh = fresh;
-    }
-
-    @Override
-    public CamelContext getCamelContext() {
-        return camelContext;
-    }
-
-    @Override
-    public void setCamelContext(CamelContext camelContext) {
+    public DependencyDownloaderLanguageResolver(CamelContext camelContext) {
         this.camelContext = camelContext;
+        this.downloader = camelContext.hasService(DependencyDownloader.class);
     }
 
     @Override
     public Language resolveLanguage(String name, CamelContext context) {
         LanguageModel model = catalog.languageModel(name);
-        if (model != null && !DownloaderHelper.alreadyOnClasspath(camelContext, model.getGroupId(), model.getArtifactId(),
+        if (model != null && !downloader.alreadyOnClasspath(model.getGroupId(), model.getArtifactId(),
                 model.getVersion())) {
-            DownloaderHelper.downloadDependency(camelContext, repos, fresh, model.getGroupId(), model.getArtifactId(),
+            downloader.downloadDependency(model.getGroupId(), model.getArtifactId(),
                     model.getVersion());
         }
 
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderPropertyBindingListener.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderPropertyBindingListener.java
index cb5ad91e6fb..86949910f17 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderPropertyBindingListener.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderPropertyBindingListener.java
@@ -23,16 +23,13 @@ public class DependencyDownloaderPropertyBindingListener implements PropertyBind
 
     private final CamelContext camelContext;
     private final KnownDependenciesResolver knownDependenciesResolver;
-    private final String repos;
-    private final boolean fresh;
+    private final DependencyDownloader downloader;
 
     public DependencyDownloaderPropertyBindingListener(CamelContext camelContext,
-                                                       KnownDependenciesResolver knownDependenciesResolver,
-                                                       String repos, boolean fresh) {
+                                                       KnownDependenciesResolver knownDependenciesResolver) {
         this.camelContext = camelContext;
         this.knownDependenciesResolver = knownDependenciesResolver;
-        this.repos = repos;
-        this.fresh = fresh;
+        this.downloader = camelContext.hasService(DependencyDownloader.class);
     }
 
     @Override
@@ -41,9 +38,9 @@ public class DependencyDownloaderPropertyBindingListener implements PropertyBind
             String s = (String) value;
             MavenGav gav = knownDependenciesResolver.mavenGavForClass(s);
             if (gav != null) {
-                if (!DownloaderHelper.alreadyOnClasspath(camelContext, gav.getGroupId(), gav.getArtifactId(),
+                if (!downloader.alreadyOnClasspath(gav.getGroupId(), gav.getArtifactId(),
                         gav.getVersion())) {
-                    DownloaderHelper.downloadDependency(camelContext, repos, fresh, gav.getGroupId(), gav.getArtifactId(),
+                    downloader.downloadDependency(gav.getGroupId(), gav.getArtifactId(),
                             gav.getVersion());
                 }
             }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderResourceLoader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderResourceLoader.java
index 53660c7a75a..ca9a133c0be 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderResourceLoader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderResourceLoader.java
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.main.download;
 
 import org.apache.camel.CamelContext;
@@ -24,13 +23,11 @@ import org.apache.camel.util.StringHelper;
 
 public class DependencyDownloaderResourceLoader extends DefaultResourceLoader {
 
-    private final String repos;
-    private final boolean fresh;
+    private final DependencyDownloader downloader;
 
-    public DependencyDownloaderResourceLoader(CamelContext camelContext, String repos, boolean fresh) {
+    public DependencyDownloaderResourceLoader(CamelContext camelContext) {
         super(camelContext);
-        this.repos = repos;
-        this.fresh = fresh;
+        this.downloader = camelContext.hasService(DependencyDownloader.class);
     }
 
     @Override
@@ -39,10 +36,10 @@ public class DependencyDownloaderResourceLoader extends DefaultResourceLoader {
         if ("github".equals(scheme) || "gist".equals(scheme)) {
             if (!hasResourceResolver(scheme)) {
                 // need to download github resolver
-                if (!DownloaderHelper.alreadyOnClasspath(
-                        getCamelContext(), "org.apache.camel", "camel-resourceresolver-github",
+                if (!downloader.alreadyOnClasspath(
+                        "org.apache.camel", "camel-resourceresolver-github",
                         getCamelContext().getVersion())) {
-                    DownloaderHelper.downloadDependency(getCamelContext(), repos, fresh, "org.apache.camel",
+                    downloader.downloadDependency("org.apache.camel",
                             "camel-resourceresolver-github",
                             getCamelContext().getVersion());
                 }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java
index 832b1d75028..062688df12c 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderRoutesLoader.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.main.download;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.main.MainConfigurationProperties;
@@ -30,13 +31,12 @@ import org.apache.camel.support.service.ServiceHelper;
  */
 public class DependencyDownloaderRoutesLoader extends MainRoutesLoader {
 
-    private final String repos;
-    private final boolean fresh;
+    private final DependencyDownloader downloader;
 
-    public DependencyDownloaderRoutesLoader(MainConfigurationProperties configuration, String repos, boolean fresh) {
+    public DependencyDownloaderRoutesLoader(CamelContext camelContext, MainConfigurationProperties configuration) {
         super(configuration);
-        this.repos = repos;
-        this.fresh = fresh;
+        setCamelContext(camelContext);
+        this.downloader = camelContext.hasService(DependencyDownloader.class);
     }
 
     @Override
@@ -84,9 +84,9 @@ public class DependencyDownloaderRoutesLoader extends MainRoutesLoader {
     }
 
     private void downloadLoader(String artifactId) {
-        if (!DownloaderHelper.alreadyOnClasspath(getCamelContext(), "org.apache.camel", artifactId,
+        if (!downloader.alreadyOnClasspath("org.apache.camel", artifactId,
                 getCamelContext().getVersion())) {
-            DownloaderHelper.downloadDependency(getCamelContext(), repos, fresh, "org.apache.camel", artifactId,
+            downloader.downloadDependency("org.apache.camel", artifactId,
                     getCamelContext().getVersion());
         }
     }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java
index 17e22c9f22e..aec7bf63c67 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java
@@ -22,20 +22,18 @@ import org.apache.camel.spi.DependencyStrategy;
 public class DependencyDownloaderStrategy implements DependencyStrategy {
 
     private final CamelContext camelContext;
-    private final String repos;
-    private final boolean fresh;
+    private final DependencyDownloader downloader;
 
-    public DependencyDownloaderStrategy(CamelContext camelContext, String repos, boolean fresh) {
+    public DependencyDownloaderStrategy(CamelContext camelContext) {
         this.camelContext = camelContext;
-        this.repos = repos;
-        this.fresh = fresh;
+        this.downloader = camelContext.hasService(DependencyDownloader.class);
     }
 
     @Override
     public void onDependency(String dependency) {
         MavenGav gav = MavenGav.parseGav(camelContext, dependency);
-        if (!DownloaderHelper.alreadyOnClasspath(camelContext, gav.getGroupId(), gav.getArtifactId(), gav.getVersion())) {
-            DownloaderHelper.downloadDependency(camelContext, repos, fresh, gav.getGroupId(), gav.getArtifactId(),
+        if (!downloader.alreadyOnClasspath(gav.getGroupId(), gav.getArtifactId(), gav.getVersion())) {
+            downloader.downloadDependency(gav.getGroupId(), gav.getArtifactId(),
                     gav.getVersion());
         }
     }
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 fd763179a39..99fc6f4c165 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
@@ -17,11 +17,13 @@
 package org.apache.camel.main.download;
 
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
+import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
+import org.apache.camel.support.service.ServiceSupport;
 import org.apache.camel.util.StopWatch;
 import org.apache.camel.util.TimeUtils;
 import org.slf4j.Logger;
@@ -29,9 +31,20 @@ import org.slf4j.Logger;
 /**
  * A basic thread pool that run each download task in their own thread, and LOG download activity during download.
  */
-class DownloadThreadPool {
+class DownloadThreadPool extends ServiceSupport implements CamelContextAware {
 
-    private final ExecutorService executorService = Executors.newCachedThreadPool();
+    private CamelContext camelContext;
+    private volatile ExecutorService executorService;
+
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
 
     public void download(Logger log, Runnable task, String gav) {
         Future<?> future = executorService.submit(task);
@@ -68,4 +81,15 @@ class DownloadThreadPool {
         }
     }
 
+    @Override
+    protected void doBuild() throws Exception {
+        executorService = camelContext.getExecutorServiceManager().newCachedThreadPool(this, "MavenDownload");
+    }
+
+    @Override
+    protected void doShutdown() throws Exception {
+        if (executorService != null) {
+            camelContext.getExecutorServiceManager().shutdown(executorService);
+        }
+    }
 }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloaderHelper.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java
similarity index 66%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloaderHelper.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java
index c88c3f673b7..e409e735e2a 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloaderHelper.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java
@@ -25,33 +25,70 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.support.service.ServiceHelper;
+import org.apache.camel.support.service.ServiceSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- * For downloading dependencies.
- */
-public final class DownloaderHelper {
+public class MavenDependencyDownloader extends ServiceSupport implements DependencyDownloader {
 
     public static final String MAVEN_CENTRAL_REPO = "https://repo1.maven.org/maven2/";
     public static final String APACHE_SNAPSHOT_REPO = "https://repository.apache.org/snapshots";
 
-    private static final Logger LOG = LoggerFactory.getLogger(DownloaderHelper.class);
+    private static final Logger LOG = LoggerFactory.getLogger(MavenDependencyDownloader.class);
     private static final String CP = System.getProperty("java.class.path");
 
-    private static final DownloadThreadPool DOWNLOAD_THREAD_POOL = new DownloadThreadPool();
+    private DownloadThreadPool threadPool;
+    private CamelContext camelContext;
+    private DownloadListener downloadListener;
+    private String repos;
+    private boolean fresh;
 
-    private DownloaderHelper() {
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
     }
 
-    public static void downloadDependency(
-            CamelContext camelContext, String repos, boolean fresh,
-            String groupId, String artifactId, String version) {
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
 
+    @Override
+    public DownloadListener getDownloadListener() {
+        return downloadListener;
+    }
+
+    @Override
+    public void setDownloadListener(DownloadListener downloadListener) {
+        this.downloadListener = downloadListener;
+    }
+
+    @Override
+    public String getRepos() {
+        return repos;
+    }
+
+    @Override
+    public void setRepos(String repos) {
+        this.repos = repos;
+    }
+
+    @Override
+    public boolean isFresh() {
+        return fresh;
+    }
+
+    @Override
+    public void setFresh(boolean fresh) {
+        this.fresh = fresh;
+    }
+
+    @Override
+    public void downloadDependency(String groupId, String artifactId, String version) {
         // trigger listener
-        DownloadListener listener = camelContext.getExtension(DownloadListener.class);
-        if (listener != null) {
-            listener.onDownloadDependency(groupId, artifactId, version);
+        if (downloadListener != null) {
+            downloadListener.onDownloadDependency(groupId, artifactId, version);
         }
 
         // when running jbang directly then the CP has some existing camel components
@@ -70,7 +107,7 @@ public final class DownloaderHelper {
         }
 
         String gav = groupId + ":" + artifactId + ":" + version;
-        DOWNLOAD_THREAD_POOL.download(LOG, () -> {
+        threadPool.download(LOG, () -> {
             LOG.debug("Downloading: {}", gav);
             List<String> deps = List.of(gav);
             List<String> mavenRepos = new ArrayList<>();
@@ -86,7 +123,8 @@ public final class DownloaderHelper {
                 mavenRepos.add(APACHE_SNAPSHOT_REPO);
             }
 
-            List<MavenArtifact> artifacts = DependencyUtil.resolveDependenciesViaAether(deps, mavenRepos, false, fresh, true);
+            List<MavenArtifact> artifacts
+                    = MavenDependencyResolver.resolveDependenciesViaAether(deps, mavenRepos, false, fresh, true);
             LOG.debug("Resolved {} -> [{}]", gav, artifacts);
 
             DependencyDownloaderClassLoader classLoader
@@ -94,7 +132,7 @@ public final class DownloaderHelper {
             for (MavenArtifact a : artifacts) {
                 File file = a.getFile();
                 // only add to classpath if not already present
-                if (!alreadyOnClasspath(camelContext, a.getGav().getGroupId(), a.getGav().getArtifactId(),
+                if (!alreadyOnClasspath(a.getGav().getGroupId(), a.getGav().getArtifactId(),
                         a.getGav().getVersion())) {
                     classLoader.addFile(file);
                     LOG.trace("Added classpath: {}", a.getGav());
@@ -103,7 +141,7 @@ public final class DownloaderHelper {
         }, gav);
     }
 
-    public static boolean alreadyOnClasspath(CamelContext camelContext, String groupId, String artifactId, String version) {
+    public boolean alreadyOnClasspath(String groupId, String artifactId, String version) {
         // if no artifact then regard this as okay
         if (artifactId == null) {
             return true;
@@ -135,4 +173,15 @@ public final class DownloaderHelper {
         return false;
     }
 
+    @Override
+    protected void doBuild() throws Exception {
+        threadPool = new DownloadThreadPool();
+        threadPool.setCamelContext(camelContext);
+        ServiceHelper.buildService(threadPool);
+    }
+
+    @Override
+    protected void doStop() throws Exception {
+        ServiceHelper.stopAndShutdownService(threadPool);
+    }
 }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyUtil.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyResolver.java
similarity index 89%
rename from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyUtil.java
rename to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyResolver.java
index 227f5ef51ba..f3a371054ab 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyUtil.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyResolver.java
@@ -34,9 +34,9 @@ import org.jboss.shrinkwrap.resolver.api.maven.MavenStrategyStage;
 import org.jboss.shrinkwrap.resolver.api.maven.MavenWorkingSession;
 import org.jboss.shrinkwrap.resolver.impl.maven.ConfigurableMavenResolverSystemImpl;
 
-public final class DependencyUtil {
+public final class MavenDependencyResolver {
 
-    private DependencyUtil() {
+    private MavenDependencyResolver() {
     }
 
     public static List<MavenArtifact> resolveDependenciesViaAether(
@@ -52,8 +52,8 @@ public final class DependencyUtil {
             for (String repo : customRepos) {
                 // shrikwrap does not have public API for adding release vs snapshot repos
                 // we need workaround using lower-level APIs and reflection
-                boolean snapshot = repo.equals(DownloaderHelper.APACHE_SNAPSHOT_REPO);
-                boolean central = repo.equals(DownloaderHelper.MAVEN_CENTRAL_REPO);
+                boolean snapshot = repo.equals(MavenDependencyDownloader.APACHE_SNAPSHOT_REPO);
+                boolean central = repo.equals(MavenDependencyDownloader.MAVEN_CENTRAL_REPO);
                 String update = fresh ? RepositoryPolicy.UPDATE_POLICY_ALWAYS : RepositoryPolicy.UPDATE_POLICY_NEVER;
                 RepositoryPolicy releasePolicy = new RepositoryPolicy(!snapshot, update, null);
                 RepositoryPolicy snapshotPolicy = new RepositoryPolicy(snapshot, update, null);
@@ -111,12 +111,9 @@ public final class DependencyUtil {
     }
 
     public static Path getLocalMavenRepo() {
-        return Paths.get((String) System.getProperties()
-                .getOrDefault("maven.repo.local",
-                        System.getProperty("user.home")
-                                                  + File.separator + ".m2" + File.separator
-                                                  + "repository"))
-                .toAbsolutePath();
+        String m2 = System.getProperty("user.home") + File.separator + ".m2" + File.separator + "repository";
+        String dir = System.getProperty("maven.repo.local", m2);
+        return Paths.get(dir).toAbsolutePath();
     }
 
 }
diff --git a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenDependencyResolverTest.java
similarity index 84%
rename from dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java
rename to dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenDependencyResolverTest.java
index fbae20cafbe..865eea6eb0e 100644
--- a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java
+++ b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenDependencyResolverTest.java
@@ -18,17 +18,17 @@ package org.apache.camel.main;
 
 import java.util.List;
 
-import org.apache.camel.main.download.DependencyUtil;
 import org.apache.camel.main.download.MavenArtifact;
+import org.apache.camel.main.download.MavenDependencyResolver;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
-public class DependencyUtilTest {
+public class MavenDependencyResolverTest {
 
     @Test
     public void testDownload() throws Exception {
         List<String> deps = List.of("org.apache.camel:camel-core:3.17.0");
-        List<MavenArtifact> answer = DependencyUtil.resolveDependenciesViaAether(deps, null, false, false, true);
+        List<MavenArtifact> answer = MavenDependencyResolver.resolveDependenciesViaAether(deps, null, false, false, true);
         Assertions.assertNotNull(answer);
         Assertions.assertTrue(answer.size() > 15);
     }


[camel] 03/03: CAMEL-18194: camel-jbang - Refactor to make download code as single service.

Posted by da...@apache.org.
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

commit 3328af350ccd6206bb781876324ecf1db13faf49
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jun 15 10:58:12 2022 +0200

    CAMEL-18194: camel-jbang - Refactor to make download code as single service.
---
 .../camel/dsl/jbang/core/commands/BaseExport.java      |  2 +-
 .../camel/dsl/jbang/core/commands/ExportCamelMain.java |  2 +-
 .../camel/dsl/jbang/core/commands/ExportQuarkus.java   |  2 +-
 .../dsl/jbang/core/commands/ExportSpringBoot.java      |  2 +-
 .../main/download/CommandLineDependencyDownloader.java |  4 ++--
 .../main/download/DependencyDownloaderKamelet.java     |  4 ++--
 .../main/download/DependencyDownloaderStrategy.java    |  2 +-
 .../camel/main/download/KnownDependenciesResolver.java |  2 +-
 .../camel/main/download/MavenDependencyResolver.java   |  2 +-
 .../java/org/apache/camel/main/download/MavenGav.java  | 18 +++++++++++-------
 .../test/java/org/apache/camel/main/MavenGavTest.java  |  9 ++++++---
 11 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java
index 36e8753c251..152970d3e2d 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java
@@ -145,7 +145,7 @@ abstract class BaseExport extends CamelCommand {
         Map<String, String> versions = new HashMap<>();
         Set<String> toBeRemoved = new HashSet<>();
         for (String line : answer) {
-            MavenGav gav = MavenGav.parseGav(null, line);
+            MavenGav gav = MavenGav.parseGav(line);
             String ga = gav.getGroupId() + ":" + gav.getArtifactId();
             if (!versions.containsKey(ga)) {
                 versions.put(ga, gav.getVersion());
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
index 781d7496b0c..42097d1c3a1 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
@@ -152,7 +152,7 @@ class ExportCamelMain extends BaseExport {
 
         StringBuilder sb = new StringBuilder();
         for (String dep : deps) {
-            MavenGav gav = MavenGav.parseGav(null, dep);
+            MavenGav gav = MavenGav.parseGav(dep);
             String gid = gav.getGroupId();
             String aid = gav.getArtifactId();
             String v = gav.getVersion();
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
index 77a0655792d..5f501fc9da0 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
@@ -158,7 +158,7 @@ class ExportQuarkus extends BaseExport {
 
         StringBuilder sb = new StringBuilder();
         for (String dep : deps) {
-            MavenGav gav = MavenGav.parseGav(null, dep);
+            MavenGav gav = MavenGav.parseGav(dep);
             String gid = gav.getGroupId();
             String aid = gav.getArtifactId();
             String v = gav.getVersion();
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
index 5009ef15e7e..b2ce308d964 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
@@ -152,7 +152,7 @@ class ExportSpringBoot extends BaseExport {
 
         StringBuilder sb = new StringBuilder();
         for (String dep : deps) {
-            MavenGav gav = MavenGav.parseGav(null, dep);
+            MavenGav gav = MavenGav.parseGav(dep);
             String gid = gav.getGroupId();
             String aid = gav.getArtifactId();
             String v = gav.getVersion();
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java
index b2209da6eec..451be0233b2 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/CommandLineDependencyDownloader.java
@@ -54,7 +54,7 @@ public class CommandLineDependencyDownloader extends ServiceSupport {
 
         if (!gavs.isEmpty()) {
             for (String gav : gavs) {
-                MavenGav mg = MavenGav.parseGav(camelContext, gav);
+                MavenGav mg = MavenGav.parseGav(gav, camelContext.getVersion());
                 downloader.downloadDependency(mg.getGroupId(), mg.getArtifactId(),
                         mg.getVersion());
             }
@@ -62,7 +62,7 @@ public class CommandLineDependencyDownloader extends ServiceSupport {
     }
 
     private boolean isValidGav(String gav) {
-        MavenGav mg = MavenGav.parseGav(camelContext, gav);
+        MavenGav mg = MavenGav.parseGav(gav, camelContext.getVersion());
         boolean exists
                 = downloader.alreadyOnClasspath(mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
         // valid if not already on classpath
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
index b97ef3b1a67..5c8f0c37a56 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderKamelet.java
@@ -161,7 +161,7 @@ public final class DependencyDownloaderKamelet extends ServiceSupport
 
             if (!gavs.isEmpty()) {
                 for (String gav : gavs) {
-                    MavenGav mg = MavenGav.parseGav(camelContext, gav);
+                    MavenGav mg = MavenGav.parseGav(gav, camelContext.getVersion());
                     downloader.downloadDependency(mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
                     downloaded.add(gav);
                 }
@@ -179,7 +179,7 @@ public final class DependencyDownloaderKamelet extends ServiceSupport
                 return false;
             }
 
-            MavenGav mg = MavenGav.parseGav(camelContext, gav);
+            MavenGav mg = MavenGav.parseGav(gav, camelContext.getVersion());
             boolean exists = downloader.alreadyOnClasspath(mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
             // valid if not already on classpath
             return !exists;
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java
index aec7bf63c67..133930ec831 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloaderStrategy.java
@@ -31,7 +31,7 @@ public class DependencyDownloaderStrategy implements DependencyStrategy {
 
     @Override
     public void onDependency(String dependency) {
-        MavenGav gav = MavenGav.parseGav(camelContext, dependency);
+        MavenGav gav = MavenGav.parseGav(dependency, camelContext.getVersion());
         if (!downloader.alreadyOnClasspath(gav.getGroupId(), gav.getArtifactId(), gav.getVersion())) {
             downloader.downloadDependency(gav.getGroupId(), gav.getArtifactId(),
                     gav.getVersion());
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownDependenciesResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownDependenciesResolver.java
index dd1cca2f96c..9adb8826a18 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownDependenciesResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/KnownDependenciesResolver.java
@@ -57,7 +57,7 @@ public final class KnownDependenciesResolver {
     public MavenGav mavenGavForClass(String className) {
         String gav = mappings.get(className);
         if (gav != null) {
-            return MavenGav.parseGav(camelContext, gav);
+            return MavenGav.parseGav(gav, camelContext.getVersion());
         }
         return null;
     }
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyResolver.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyResolver.java
index f3a371054ab..0ab589d7552 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyResolver.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyResolver.java
@@ -96,7 +96,7 @@ public final class MavenDependencyResolver {
                     .map(mra -> {
                         String gav = mra.getCoordinate().getGroupId() + ":" + mra.getCoordinate().getArtifactId() + ":"
                                      + mra.getCoordinate().getVersion();
-                        return new MavenArtifact(MavenGav.parseGav(null, gav), mra.asFile());
+                        return new MavenArtifact(MavenGav.parseGav(gav), mra.asFile());
                     })
                     .collect(Collectors.toList());
         } catch (ResolutionException e) {
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenGav.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenGav.java
index f31cd96553d..445b829538d 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenGav.java
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenGav.java
@@ -30,7 +30,11 @@ public final class MavenGav {
     public MavenGav() {
     }
 
-    public static MavenGav parseGav(CamelContext context, String gav) {
+    public static MavenGav parseGav(String gav) {
+        return parseGav(gav, null);
+    }
+
+    public static MavenGav parseGav(String gav, String defaultVersion) {
         MavenGav answer = new MavenGav();
         // camel-k style GAV
         if (gav.startsWith("camel:")) {
@@ -44,8 +48,8 @@ public final class MavenGav {
                 a = "camel-" + a;
             }
             answer.setArtifactId(a);
-            if (context != null) {
-                answer.setVersion(context.getVersion());
+            if (defaultVersion != null) {
+                answer.setVersion(defaultVersion);
             }
         } else if (gav.startsWith("camel-") && !(gav.contains(":") || gav.contains("/"))) {
             // not really camel-k style but users may mistakenly use camel-file instead of camel:file
@@ -56,8 +60,8 @@ public final class MavenGav {
                 a = "camel-" + a.substring(14);
             }
             answer.setArtifactId(a);
-            if (context != null) {
-                answer.setVersion(context.getVersion());
+            if (defaultVersion != null) {
+                answer.setVersion(defaultVersion);
             }
         } else if (gav.startsWith("org.apache.camel:")) {
             String[] parts = gav.split(":");
@@ -69,8 +73,8 @@ public final class MavenGav {
             }
             if (parts.length > 2) {
                 answer.setVersion(parts[2]);
-            } else if (context != null) {
-                answer.setVersion(context.getVersion());
+            } else if (defaultVersion != null) {
+                answer.setVersion(defaultVersion);
             }
         } else {
             String[] parts = gav.startsWith("mvn:") ? gav.substring(4).split(":") : gav.split(":");
diff --git a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenGavTest.java b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenGavTest.java
index 6bc7d79edaa..e642dc26202 100644
--- a/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenGavTest.java
+++ b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/MavenGavTest.java
@@ -20,28 +20,31 @@ import org.apache.camel.main.download.MavenGav;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 class MavenGavTest {
 
     @Test
     void parseCoreGav() {
-        MavenGav gav = MavenGav.parseGav(null, "camel:core");
+        MavenGav gav = MavenGav.parseGav("camel:core", "3.16.0");
 
         assertEquals("org.apache.camel", gav.getGroupId());
         assertEquals("camel-core", gav.getArtifactId());
+        assertEquals("3.16.0", gav.getVersion());
     }
 
     @Test
     void parseCamelCoreGav() {
-        MavenGav gav = MavenGav.parseGav(null, "camel:camel-core");
+        MavenGav gav = MavenGav.parseGav("camel:camel-core");
 
         assertEquals("org.apache.camel", gav.getGroupId());
         assertEquals("camel-core", gav.getArtifactId());
+        assertNull(gav.getVersion());
     }
 
     @Test
     void parseOtherGav() {
-        MavenGav gav = MavenGav.parseGav(null, "mvn:org.junit:junit-api:99.99");
+        MavenGav gav = MavenGav.parseGav("mvn:org.junit:junit-api:99.99");
 
         assertEquals("org.junit", gav.getGroupId());
         assertEquals("junit-api", gav.getArtifactId());