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

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


The following commit(s) were added to refs/heads/main by this push:
     new f1f9edf2901 CAMEL-21542: camel-jbang - Detect known beans from Java 
imports
f1f9edf2901 is described below

commit f1f9edf29012e7bbd8050638b3c66ae6b8b75516
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Dec 12 20:07:11 2024 +0100

    CAMEL-21542: camel-jbang - Detect known beans from Java imports
---
 .../java/org/apache/camel/main/KameletMain.java    |  5 ++---
 .../main/download/JavaKnownImportsDownloader.java  | 23 +++++++++++++++-------
 2 files changed, 18 insertions(+), 10 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 326fe34a9b2..8a88fc1e725 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
@@ -496,9 +496,6 @@ public class KameletMain extends MainCommandLineSupport {
         boolean lazyBean = 
"true".equals(getInitialProperties().get(getInstanceType() + ".lazyBean"));
         new AnnotationDependencyInjection(answer, lazyBean);
 
-        // add support for automatic downloaded needed JARs from java imports
-        new JavaKnownImportsDownloader(answer);
-
         if (!silent) {
             // silent should not include cli-connector
             // setup cli-connector if not already done
@@ -610,6 +607,8 @@ public class KameletMain extends MainCommandLineSupport {
                     
.bind(DependencyDownloaderPropertyBindingListener.class.getSimpleName(), 
listener);
             
answer.getCamelContextExtension().getRegistry().bind(DependencyDownloaderStrategy.class.getSimpleName(),
                     new DependencyDownloaderStrategy(answer));
+            // add support for automatic downloaded needed JARs from java 
imports
+            new JavaKnownImportsDownloader(answer, knownDeps);
 
             // download class-resolver
             ClassResolver classResolver = new 
DependencyDownloaderClassResolver(answer, knownDeps, silent);
diff --git 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/JavaKnownImportsDownloader.java
 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/JavaKnownImportsDownloader.java
index 914f0472eae..d2a949333f2 100644
--- 
a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/JavaKnownImportsDownloader.java
+++ 
b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/JavaKnownImportsDownloader.java
@@ -25,6 +25,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.spi.CompilePreProcessor;
+import org.apache.camel.tooling.maven.MavenGav;
 import org.apache.camel.tooling.model.PojoBeanModel;
 
 /**
@@ -37,9 +38,11 @@ public class JavaKnownImportsDownloader implements 
CompilePreProcessor {
 
     private final CamelCatalog catalog = new DefaultCamelCatalog();
     private final DependencyDownloader downloader;
+    private final KnownDependenciesResolver knownDependenciesResolver;
 
-    public JavaKnownImportsDownloader(CamelContext camelContext) {
+    public JavaKnownImportsDownloader(CamelContext camelContext, 
KnownDependenciesResolver knownDependenciesResolver) {
         this.downloader = camelContext.hasService(DependencyDownloader.class);
+        this.knownDependenciesResolver = knownDependenciesResolver;
         camelContext.getRegistry().bind("JavaJoorKnownImportsDownloader", 
this);
     }
 
@@ -47,12 +50,18 @@ public class JavaKnownImportsDownloader implements 
CompilePreProcessor {
     public void preCompile(CamelContext camelContext, String name, String 
code) throws Exception {
         List<String> imports = determineImports(code);
         for (String imp : imports) {
-            // is this a known bean then we can determine the dependency
-            for (String n : catalog.findBeansNames()) {
-                PojoBeanModel m = catalog.pojoBeanModel(n);
-                if (m != null && imp.equals(m.getJavaType())) {
-                    downloadLoader(m.getGroupId(), m.getArtifactId(), 
m.getVersion());
-                    break;
+            // attempt known dependency resolver first
+            MavenGav gav = knownDependenciesResolver.mavenGavForClass(imp);
+            if (gav != null) {
+                downloadLoader(gav.getGroupId(), gav.getArtifactId(), 
gav.getVersion());
+            } else {
+                // is this a known bean then we can determine the dependency
+                for (String n : catalog.findBeansNames()) {
+                    PojoBeanModel m = catalog.pojoBeanModel(n);
+                    if (m != null && imp.equals(m.getJavaType())) {
+                        downloadLoader(m.getGroupId(), m.getArtifactId(), 
m.getVersion());
+                        break;
+                    }
                 }
             }
         }

Reply via email to