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 <[email protected]>
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;
+ }
}
}
}