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/13 12:22:09 UTC
[camel] branch main updated: CAMEL-18188: camel-jbang - Use apache maven to download JARs instead of groovy grape
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 b08461abea2 CAMEL-18188: camel-jbang - Use apache maven to download JARs instead of groovy grape
b08461abea2 is described below
commit b08461abea2b1e08bab33e959a976e7d7d13a740
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Jun 13 14:19:13 2022 +0200
CAMEL-18188: camel-jbang - Use apache maven to download JARs instead of groovy grape
---
dsl/camel-jbang/camel-jbang-core/pom.xml | 5 +
dsl/camel-kamelet-main/pom.xml | 14 +-
.../java/org/apache/camel/main/CamelGrapeIvy.java | 178 ---------------------
.../main/CommandLineDependencyDownloader.java | 6 +-
...y.java => DependencyDownloaderClassLoader.java} | 26 +--
.../main/DependencyDownloaderClassResolver.java | 8 +-
.../DependencyDownloaderComponentResolver.java | 7 +-
.../DependencyDownloaderDataFormatResolver.java | 7 +-
.../camel/main/DependencyDownloaderKamelet.java | 14 +-
.../main/DependencyDownloaderLanguageResolver.java | 7 +-
...ependencyDownloaderPropertyBindingListener.java | 7 +-
.../main/DependencyDownloaderResourceLoader.java | 8 +-
.../main/DependencyDownloaderRoutesLoader.java | 7 +-
.../camel/main/DependencyDownloaderStrategy.java | 6 +-
.../java/org/apache/camel/main/DependencyUtil.java | 94 +++++++++++
...nloaderStrategy.java => DownloadException.java} | 21 +--
.../org/apache/camel/main/DownloadThreadPool.java | 2 +-
.../org/apache/camel/main/DownloaderHelper.java | 80 +++------
.../java/org/apache/camel/main/KameletMain.java | 34 ++--
...yDownloaderStrategy.java => MavenArtifact.java} | 30 ++--
.../src/main/resources/camelGrapeConfig.xml | 41 -----
.../src/main/resources/localGrapeConfig.xml | 36 -----
.../org/apache/camel/main/DependencyUtilTest.java} | 26 ++-
23 files changed, 244 insertions(+), 420 deletions(-)
diff --git a/dsl/camel-jbang/camel-jbang-core/pom.xml b/dsl/camel-jbang/camel-jbang-core/pom.xml
index c3eb3147d06..4a304f38230 100644
--- a/dsl/camel-jbang/camel-jbang-core/pom.xml
+++ b/dsl/camel-jbang/camel-jbang-core/pom.xml
@@ -51,6 +51,11 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-kamelet-main</artifactId>
</dependency>
+ <!-- TODO: uber-jar uses grape for download -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-grape</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-resourceresolver-github</artifactId>
diff --git a/dsl/camel-kamelet-main/pom.xml b/dsl/camel-kamelet-main/pom.xml
index e97a54cbc2d..598408c0637 100644
--- a/dsl/camel-kamelet-main/pom.xml
+++ b/dsl/camel-kamelet-main/pom.xml
@@ -40,6 +40,7 @@
</properties>
<dependencies>
+
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-main</artifactId>
@@ -76,10 +77,6 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-jfr</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-grape</artifactId>
- </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-platform-http-vertx</artifactId>
@@ -108,7 +105,12 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-catalog-console</artifactId>
</dependency>
-
+ <!-- maven downloader -->
+ <dependency>
+ <groupId>org.jboss.shrinkwrap.resolver</groupId>
+ <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
+ <version>3.1.4</version>
+ </dependency>
<!-- optional spring annotation support -->
<dependency>
<groupId>org.springframework</groupId>
@@ -127,6 +129,7 @@
<version>${microprofile-config-version}</version>
</dependency>
+ <!-- test -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
@@ -142,7 +145,6 @@
<artifactId>log4j-slf4j-impl</artifactId>
<scope>test</scope>
</dependency>
-
</dependencies>
<build>
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/CamelGrapeIvy.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/CamelGrapeIvy.java
deleted file mode 100644
index 45c1813cb90..00000000000
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/CamelGrapeIvy.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.main;
-
-import java.io.IOException;
-import java.text.ParseException;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import groovy.grape.GrapeIvy;
-import org.apache.ivy.Ivy;
-import org.apache.ivy.core.IvyContext;
-import org.apache.ivy.core.cache.ResolutionCacheManager;
-import org.apache.ivy.core.event.IvyEvent;
-import org.apache.ivy.core.event.IvyListener;
-import org.apache.ivy.core.event.download.PrepareDownloadEvent;
-import org.apache.ivy.core.event.resolve.StartResolveEvent;
-import org.apache.ivy.core.module.descriptor.Artifact;
-import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
-import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
-import org.apache.ivy.core.report.ResolveReport;
-import org.apache.ivy.core.resolve.ResolveOptions;
-import org.apache.ivy.core.settings.IvySettings;
-import org.apache.ivy.util.filter.Filter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static groovy.grape.Grape.AUTO_DOWNLOAD_SETTING;
-import static groovy.grape.Grape.DISABLE_CHECKSUMS_SETTING;
-
-public class CamelGrapeIvy extends GrapeIvy {
-
- private static final Logger LOG = LoggerFactory.getLogger(CamelGrapeIvy.class);
-
- private static CamelGrapeIvy instance;
- private final Set<Artifact> extra = new HashSet<>();
-
- public CamelGrapeIvy(boolean reportDownloads) {
- super();
-
- // use wrapper as facade so we can hook into downloading
- Ivy wrapper = new IvyWrapper(super.getIvyInstance(), reportDownloads);
- setIvyInstance(wrapper);
- IvyContext.getContext().setIvy(wrapper);
- }
-
- private static synchronized CamelGrapeIvy getInstance(boolean reportDownload) {
- if (instance == null) {
- instance = new CamelGrapeIvy(reportDownload);
- }
- return instance;
- }
-
- public static Set<MavenGav> download(Map<String, Object> dependency, boolean reportDownload) {
- Set<MavenGav> extra = new HashSet<>();
-
- CamelGrapeIvy instance = getInstance(reportDownload);
- if (instance != null) {
- if (!dependency.containsKey(AUTO_DOWNLOAD_SETTING)) {
- dependency.put(AUTO_DOWNLOAD_SETTING, "true");
- }
- if (!dependency.containsKey(DISABLE_CHECKSUMS_SETTING)) {
- dependency.put(DISABLE_CHECKSUMS_SETTING, "false");
- }
-
- instance.extra.clear();
- instance.grab(dependency);
- if (instance.extra.size() > 0) {
- for (Artifact a : instance.extra) {
- String gid = a.getModuleRevisionId().getOrganisation();
- String aid = a.getModuleRevisionId().getName();
- String v = a.getModuleRevisionId().getRevision();
- MavenGav gav = new MavenGav();
- gav.setGroupId(gid);
- gav.setArtifactId(aid);
- gav.setVersion(v);
- extra.add(gav);
- }
- }
- instance.extra.clear();
- }
-
- return extra;
- }
-
- private class IvyWrapper extends Ivy implements Filter<Artifact> {
-
- private final Ivy delegate;
-
- public IvyWrapper(Ivy delegate, boolean reportDownloads) {
- this.delegate = delegate;
- if (reportDownloads) {
- addIvyListener();
- }
- }
-
- @Override
- public ResolutionCacheManager getResolutionCacheManager() {
- return delegate.getResolutionCacheManager();
- }
-
- @Override
- public IvySettings getSettings() {
- return delegate.getSettings();
- }
-
- @Override
- public ResolveReport resolve(ModuleDescriptor md, ResolveOptions options)
- throws ParseException, IOException {
- options.setArtifactFilter(this);
- return delegate.resolve(md, options);
- }
-
- @Override
- public boolean accept(Artifact a) {
- boolean ok = true;
- String type = a.getType();
- if (type != null) {
- // only jar,pom is supported
- ok = "jar".equals(type) || "pom".equals(type);
- if (!ok && "bundle".equals(type) && "jar".equals(a.getExt())) {
- // remember as extra download because it cannot be downloaded as bundle type
- extra.add(a);
- }
- }
- LOG.trace("Accept Artifact: {}={}", a, ok);
- return ok;
- }
-
- private void addIvyListener() {
- delegate.getEventManager().addIvyListener(new IvyListener() {
- private final Set<String> downloadedArtifacts = new HashSet<>();
- private final Set<String> resolvedDependencies = new HashSet<>();
-
- @Override
- public void progress(IvyEvent event) {
- if (event instanceof StartResolveEvent) {
- DependencyDescriptor[] deps = ((StartResolveEvent) event).getModuleDescriptor().getDependencies();
- if (deps != null) {
- for (DependencyDescriptor dd : deps) {
- var name = dd.toString();
- if (resolvedDependencies.add(name)) {
- LOG.info("Resolving: {}", name);
- }
- }
- }
- } else if (event instanceof PrepareDownloadEvent) {
- Artifact[] arts = ((PrepareDownloadEvent) event).getArtifacts();
- if (arts != null) {
- for (Artifact a : arts) {
- var name = a.toString();
- if (downloadedArtifacts.add(name)) {
- LOG.info("Downloading: {}", name);
- }
- }
- }
- }
- }
- });
- }
- }
-
-}
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/CommandLineDependencyDownloader.java
index bb598455bf6..8fbea1a351f 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/CommandLineDependencyDownloader.java
@@ -27,9 +27,11 @@ public class CommandLineDependencyDownloader extends ServiceSupport implements C
private CamelContext camelContext;
private final String dependencies;
+ private final String repos;
- public CommandLineDependencyDownloader(String dependencies) {
+ public CommandLineDependencyDownloader(String dependencies, String repos) {
this.dependencies = dependencies;
+ this.repos = repos;
}
@Override
@@ -63,7 +65,7 @@ public class CommandLineDependencyDownloader extends ServiceSupport implements C
if (!gavs.isEmpty()) {
for (String gav : gavs) {
MavenGav mg = MavenGav.parseGav(camelContext, gav);
- DownloaderHelper.downloadDependency(camelContext, mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
+ DownloaderHelper.downloadDependency(camelContext, repos, mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
}
}
}
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/DependencyDownloaderClassLoader.java
similarity index 55%
copy from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderStrategy.java
copy to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderClassLoader.java
index 6287fb78577..723a976222b 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/DependencyDownloaderClassLoader.java
@@ -16,24 +16,24 @@
*/
package org.apache.camel.main;
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.DependencyStrategy;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
-class DependencyDownloaderStrategy implements DependencyStrategy {
+public class DependencyDownloaderClassLoader extends URLClassLoader {
- private final CamelContext camelContext;
+ private static final URL[] EMPTY_URL_ARRAY = new URL[0];
- public DependencyDownloaderStrategy(CamelContext camelContext) {
- this.camelContext = camelContext;
+ public DependencyDownloaderClassLoader(ClassLoader parent) {
+ super(EMPTY_URL_ARRAY, parent);
}
- @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, gav.getGroupId(), gav.getArtifactId(),
- gav.getVersion());
+ public void addFile(File file) {
+ try {
+ super.addURL(file.toURI().toURL());
+ } catch (MalformedURLException e) {
+ throw new DownloadException("Error adding JAR to classloader: " + file, e);
}
}
-
}
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/DependencyDownloaderClassResolver.java
index d638fe88fb5..cdec350fb63 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/DependencyDownloaderClassResolver.java
@@ -23,10 +23,14 @@ import org.apache.camel.util.ObjectHelper;
final class DependencyDownloaderClassResolver extends DefaultClassResolver {
private final KnownDependenciesResolver knownDependenciesResolver;
+ private final String repos;
- public DependencyDownloaderClassResolver(CamelContext camelContext, KnownDependenciesResolver knownDependenciesResolver) {
+ public DependencyDownloaderClassResolver(CamelContext camelContext,
+ KnownDependenciesResolver knownDependenciesResolver,
+ String repos) {
super(camelContext);
this.knownDependenciesResolver = knownDependenciesResolver;
+ this.repos = repos;
}
@Override
@@ -44,7 +48,7 @@ final class DependencyDownloaderClassResolver extends DefaultClassResolver {
if (gav != null) {
if (!DownloaderHelper.alreadyOnClasspath(getCamelContext(), gav.getGroupId(), gav.getArtifactId(),
gav.getVersion())) {
- DownloaderHelper.downloadDependency(getCamelContext(), gav.getGroupId(), gav.getArtifactId(),
+ DownloaderHelper.downloadDependency(getCamelContext(), repos, gav.getGroupId(), gav.getArtifactId(),
gav.getVersion());
}
try {
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/DependencyDownloaderComponentResolver.java
index a4cff33c85b..c323d9057f5 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/DependencyDownloaderComponentResolver.java
@@ -34,10 +34,12 @@ final class DependencyDownloaderComponentResolver extends DefaultComponentResolv
private final CamelCatalog catalog = new DefaultCamelCatalog();
private CamelContext camelContext;
+ private final String repos;
private boolean stub;
- public DependencyDownloaderComponentResolver(CamelContext camelContext, boolean stub) {
+ public DependencyDownloaderComponentResolver(CamelContext camelContext, String repos, boolean stub) {
this.camelContext = camelContext;
+ this.repos = repos;
this.stub = stub;
}
@@ -56,7 +58,8 @@ final class DependencyDownloaderComponentResolver extends DefaultComponentResolv
ComponentModel model = catalog.componentModel(name);
if (model != null && !DownloaderHelper.alreadyOnClasspath(camelContext, model.getGroupId(), model.getArtifactId(),
model.getVersion())) {
- DownloaderHelper.downloadDependency(camelContext, model.getGroupId(), model.getArtifactId(), model.getVersion());
+ DownloaderHelper.downloadDependency(camelContext, repos, model.getGroupId(), model.getArtifactId(),
+ model.getVersion());
}
Component answer;
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/DependencyDownloaderDataFormatResolver.java
index af118d7579e..e3eccdfc5eb 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/DependencyDownloaderDataFormatResolver.java
@@ -31,9 +31,11 @@ final class DependencyDownloaderDataFormatResolver extends DefaultDataFormatReso
private final CamelCatalog catalog = new DefaultCamelCatalog();
private CamelContext camelContext;
+ private final String repos;
- public DependencyDownloaderDataFormatResolver(CamelContext camelContext) {
+ public DependencyDownloaderDataFormatResolver(CamelContext camelContext, String repos) {
this.camelContext = camelContext;
+ this.repos = repos;
}
@Override
@@ -51,7 +53,8 @@ final class DependencyDownloaderDataFormatResolver extends DefaultDataFormatReso
DataFormatModel model = catalog.dataFormatModel(name);
if (model != null && !DownloaderHelper.alreadyOnClasspath(camelContext, model.getGroupId(), model.getArtifactId(),
model.getVersion())) {
- DownloaderHelper.downloadDependency(camelContext, model.getGroupId(), model.getArtifactId(), model.getVersion());
+ DownloaderHelper.downloadDependency(camelContext, repos, 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/DependencyDownloaderKamelet.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderKamelet.java
index caae629d72a..9722e487160 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/DependencyDownloaderKamelet.java
@@ -46,9 +46,14 @@ import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.nodeAt;
*/
final class DependencyDownloaderKamelet extends ServiceSupport implements CamelContextAware, RouteTemplateLoaderListener {
- private final KameletDependencyDownloader downloader = new KameletDependencyDownloader("yaml");
+ private final KameletDependencyDownloader downloader;
private CamelContext camelContext;
+ public DependencyDownloaderKamelet(CamelContext camelContext, String repos) {
+ this.camelContext = camelContext;
+ this.downloader = new KameletDependencyDownloader("yaml", repos);
+ }
+
@Override
public CamelContext getCamelContext() {
return camelContext;
@@ -102,9 +107,11 @@ final class DependencyDownloaderKamelet extends ServiceSupport implements CamelC
private static final Logger LOG = LoggerFactory.getLogger(KameletDependencyDownloader.class);
private CamelContext camelContext;
private final Set<String> downloaded = new HashSet<>();
+ private final String repos;
- public KameletDependencyDownloader(String extension) {
+ public KameletDependencyDownloader(String extension, String repos) {
super(extension);
+ this.repos = repos;
}
@Override
@@ -163,7 +170,8 @@ final class DependencyDownloaderKamelet extends ServiceSupport implements CamelC
if (!gavs.isEmpty()) {
for (String gav : gavs) {
MavenGav mg = MavenGav.parseGav(camelContext, gav);
- DownloaderHelper.downloadDependency(camelContext, mg.getGroupId(), mg.getArtifactId(), mg.getVersion());
+ DownloaderHelper.downloadDependency(camelContext, repos, mg.getGroupId(), mg.getArtifactId(),
+ mg.getVersion());
downloaded.add(gav);
}
}
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/DependencyDownloaderLanguageResolver.java
index 40975edd412..a4a60faa170 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/DependencyDownloaderLanguageResolver.java
@@ -31,9 +31,11 @@ final class DependencyDownloaderLanguageResolver extends DefaultLanguageResolver
private final CamelCatalog catalog = new DefaultCamelCatalog();
private CamelContext camelContext;
+ private final String repos;
- public DependencyDownloaderLanguageResolver(CamelContext camelContext) {
+ public DependencyDownloaderLanguageResolver(CamelContext camelContext, String repos) {
this.camelContext = camelContext;
+ this.repos = repos;
}
@Override
@@ -51,7 +53,8 @@ final class DependencyDownloaderLanguageResolver extends DefaultLanguageResolver
LanguageModel model = catalog.languageModel(name);
if (model != null && !DownloaderHelper.alreadyOnClasspath(camelContext, model.getGroupId(), model.getArtifactId(),
model.getVersion())) {
- DownloaderHelper.downloadDependency(camelContext, model.getGroupId(), model.getArtifactId(), model.getVersion());
+ DownloaderHelper.downloadDependency(camelContext, repos, model.getGroupId(), model.getArtifactId(),
+ model.getVersion());
}
return super.resolveLanguage(name, context);
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/DependencyDownloaderPropertyBindingListener.java
index 4054071bd00..a3248356aff 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/DependencyDownloaderPropertyBindingListener.java
@@ -23,11 +23,14 @@ class DependencyDownloaderPropertyBindingListener implements PropertyBindingList
private final CamelContext camelContext;
private final KnownDependenciesResolver knownDependenciesResolver;
+ private final String repos;
public DependencyDownloaderPropertyBindingListener(CamelContext camelContext,
- KnownDependenciesResolver knownDependenciesResolver) {
+ KnownDependenciesResolver knownDependenciesResolver,
+ String repos) {
this.camelContext = camelContext;
this.knownDependenciesResolver = knownDependenciesResolver;
+ this.repos = repos;
}
@Override
@@ -38,7 +41,7 @@ class DependencyDownloaderPropertyBindingListener implements PropertyBindingList
if (gav != null) {
if (!DownloaderHelper.alreadyOnClasspath(camelContext, gav.getGroupId(), gav.getArtifactId(),
gav.getVersion())) {
- DownloaderHelper.downloadDependency(camelContext, gav.getGroupId(), gav.getArtifactId(),
+ DownloaderHelper.downloadDependency(camelContext, repos, gav.getGroupId(), gav.getArtifactId(),
gav.getVersion());
}
}
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/DependencyDownloaderResourceLoader.java
index c468a569145..74b7c9fc958 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/DependencyDownloaderResourceLoader.java
@@ -24,8 +24,11 @@ import org.apache.camel.util.StringHelper;
class DependencyDownloaderResourceLoader extends DefaultResourceLoader {
- public DependencyDownloaderResourceLoader(CamelContext camelContext) {
+ private final String repos;
+
+ public DependencyDownloaderResourceLoader(CamelContext camelContext, String repos) {
super(camelContext);
+ this.repos = repos;
}
@Override
@@ -37,7 +40,8 @@ class DependencyDownloaderResourceLoader extends DefaultResourceLoader {
if (!DownloaderHelper.alreadyOnClasspath(
getCamelContext(), "org.apache.camel", "camel-resourceresolver-github",
getCamelContext().getVersion())) {
- DownloaderHelper.downloadDependency(getCamelContext(), "org.apache.camel", "camel-resourceresolver-github",
+ DownloaderHelper.downloadDependency(getCamelContext(), repos, "org.apache.camel",
+ "camel-resourceresolver-github",
getCamelContext().getVersion());
}
}
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/DependencyDownloaderRoutesLoader.java
index dccfec89ba7..b86f3a7ddf0 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/DependencyDownloaderRoutesLoader.java
@@ -28,8 +28,11 @@ import org.apache.camel.support.service.ServiceHelper;
*/
public class DependencyDownloaderRoutesLoader extends MainRoutesLoader {
- public DependencyDownloaderRoutesLoader(MainConfigurationProperties configuration) {
+ private final String repos;
+
+ public DependencyDownloaderRoutesLoader(MainConfigurationProperties configuration, String repos) {
super(configuration);
+ this.repos = repos;
}
@Override
@@ -79,7 +82,7 @@ public class DependencyDownloaderRoutesLoader extends MainRoutesLoader {
private void downloadLoader(String artifactId) {
if (!DownloaderHelper.alreadyOnClasspath(getCamelContext(), "org.apache.camel", artifactId,
getCamelContext().getVersion())) {
- DownloaderHelper.downloadDependency(getCamelContext(), "org.apache.camel", artifactId,
+ DownloaderHelper.downloadDependency(getCamelContext(), repos, "org.apache.camel", artifactId,
getCamelContext().getVersion());
}
}
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/DependencyDownloaderStrategy.java
index 6287fb78577..8eeaa18d27d 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/DependencyDownloaderStrategy.java
@@ -22,16 +22,18 @@ import org.apache.camel.spi.DependencyStrategy;
class DependencyDownloaderStrategy implements DependencyStrategy {
private final CamelContext camelContext;
+ private final String repos;
- public DependencyDownloaderStrategy(CamelContext camelContext) {
+ public DependencyDownloaderStrategy(CamelContext camelContext, String repos) {
this.camelContext = camelContext;
+ this.repos = repos;
}
@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, gav.getGroupId(), gav.getArtifactId(),
+ DownloaderHelper.downloadDependency(camelContext, repos, gav.getGroupId(), gav.getArtifactId(),
gav.getVersion());
}
}
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/DependencyUtil.java
new file mode 100644
index 00000000000..46aa80fdd50
--- /dev/null
+++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyUtil.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.main;
+
+import java.io.File;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.jboss.shrinkwrap.resolver.api.ResolutionException;
+import org.jboss.shrinkwrap.resolver.api.maven.ConfigurableMavenResolverSystem;
+import org.jboss.shrinkwrap.resolver.api.maven.Maven;
+import org.jboss.shrinkwrap.resolver.api.maven.MavenFormatStage;
+import org.jboss.shrinkwrap.resolver.api.maven.MavenResolvedArtifact;
+import org.jboss.shrinkwrap.resolver.api.maven.MavenStrategyStage;
+import org.jboss.shrinkwrap.resolver.api.maven.repository.MavenRemoteRepositories;
+import org.jboss.shrinkwrap.resolver.api.maven.repository.MavenRemoteRepository;
+import org.jboss.shrinkwrap.resolver.api.maven.repository.MavenUpdatePolicy;
+
+final class DependencyUtil {
+
+ private DependencyUtil() {
+ }
+
+ public static List<MavenArtifact> resolveDependenciesViaAether(
+ List<String> depIds, List<String> customRepos,
+ boolean offline, boolean updateCache, boolean transitively) {
+
+ ConfigurableMavenResolverSystem resolver = Maven.configureResolver()
+ .withMavenCentralRepo(true)
+ .workOffline(offline);
+
+ if (customRepos != null) {
+ for (int i = 0; i < customRepos.size(); i++) {
+ String repo = customRepos.get(i);
+ MavenRemoteRepository repository
+ = MavenRemoteRepositories.createRemoteRepository("custom" + i + 1, repo, "default");
+ if (updateCache) {
+ repository.setUpdatePolicy(MavenUpdatePolicy.UPDATE_POLICY_ALWAYS);
+ }
+ resolver.withRemoteRepo(repository);
+ }
+ }
+
+ System.setProperty("maven.repo.local", getLocalMavenRepo().toAbsolutePath().toString());
+ try {
+ MavenStrategyStage resolve = resolver.resolve(depIds);
+
+ MavenFormatStage stage = transitively ? resolve.withTransitivity() : resolve.withoutTransitivity();
+ List<MavenResolvedArtifact> artifacts = stage.asList(MavenResolvedArtifact.class);
+
+ return artifacts.stream()
+ .map(mra -> {
+ String gav = mra.getCoordinate().getGroupId() + ":" + mra.getCoordinate().getArtifactId() + ":"
+ + mra.getCoordinate().getVersion();
+ return new MavenArtifact(MavenGav.parseGav(null, gav), mra.asFile());
+ })
+ .collect(Collectors.toList());
+ } catch (ResolutionException e) {
+ String msg = "Cannot resolve dependencies from maven central";
+ if (customRepos != null) {
+ msg = "Cannot resolve dependencies from " + String.join(", ", customRepos);
+ }
+ throw new DownloadException(msg, e);
+ } catch (RuntimeException e) {
+ throw new DownloadException("Unknown error occurred while trying to resolve dependencies", e);
+ }
+ }
+
+ 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();
+ }
+
+}
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/DownloadException.java
similarity index 54%
copy from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderStrategy.java
copy to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DownloadException.java
index 6287fb78577..588f445df11 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/DownloadException.java
@@ -16,24 +16,13 @@
*/
package org.apache.camel.main;
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.DependencyStrategy;
+public class DownloadException extends RuntimeException {
-class DependencyDownloaderStrategy implements DependencyStrategy {
-
- private final CamelContext camelContext;
-
- public DependencyDownloaderStrategy(CamelContext camelContext) {
- this.camelContext = camelContext;
+ public DownloadException(String message) {
+ super(message);
}
- @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, gav.getGroupId(), gav.getArtifactId(),
- gav.getVersion());
- }
+ public DownloadException(String message, Throwable cause) {
+ super(message, cause);
}
-
}
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/DownloadThreadPool.java
index 6c05046ef40..303a8eaf688 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/DownloadThreadPool.java
@@ -48,7 +48,7 @@ class DownloadThreadPool {
} catch (TimeoutException e) {
// not done
} catch (Exception e) {
- log.error("Error downloading: " + gav + " due: " + e.getMessage());
+ log.error("Error downloading: " + gav + " due: " + e.getMessage(), e);
return;
}
if (!done) {
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/DownloaderHelper.java
index ec58e90a6ff..1b45164789d 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/DownloaderHelper.java
@@ -17,16 +17,13 @@
package org.apache.camel.main;
import java.io.File;
-import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
import org.apache.camel.CamelContext;
-import org.apache.camel.util.IOHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,12 +36,13 @@ public final class DownloaderHelper {
private static final String CP = System.getProperty("java.class.path");
private static final DownloadThreadPool DOWNLOAD_THREAD_POOL = new DownloadThreadPool();
- private static final AtomicBoolean VERBOSE_DOWNLOAD = new AtomicBoolean();
private DownloaderHelper() {
}
- public static void downloadDependency(CamelContext camelContext, String groupId, String artifactId, String version) {
+ public static void downloadDependency(
+ CamelContext camelContext, String repos,
+ String groupId, String artifactId, String version) {
// trigger listener
DownloadListener listener = camelContext.getExtension(DownloadListener.class);
@@ -67,25 +65,23 @@ public final class DownloaderHelper {
}
}
- Map<String, Object> map = new HashMap<>();
- map.put("classLoader", camelContext.getApplicationContextClassLoader());
- map.put("group", groupId);
- map.put("module", artifactId);
- map.put("version", version);
- map.put("classifier", "");
-
String gav = groupId + ":" + artifactId + ":" + version;
DOWNLOAD_THREAD_POOL.download(LOG, () -> {
LOG.debug("Downloading: {}", gav);
- Set<MavenGav> extra = CamelGrapeIvy.download(map, VERBOSE_DOWNLOAD.get());
- for (MavenGav egav : extra) {
- Map<String, Object> emap = new HashMap<>();
- emap.put("classLoader", camelContext.getApplicationContextClassLoader());
- emap.put("group", egav.getGroupId());
- emap.put("module", egav.getArtifactId());
- emap.put("version", egav.getVersion());
- LOG.debug("Downloading Additional: {}", egav);
- CamelGrapeIvy.download(emap, VERBOSE_DOWNLOAD.get());
+ List<String> deps = List.of(gav);
+ List<String> customRepos = null;
+ if (repos != null) {
+ customRepos = Arrays.stream(repos.split(",")).collect(Collectors.toList());
+ }
+ List<MavenArtifact> artifacts = DependencyUtil.resolveDependenciesViaAether(deps, customRepos, false, true, true);
+ LOG.debug("Resolved {} -> [{}]", gav, artifacts);
+
+ DependencyDownloaderClassLoader classLoader
+ = (DependencyDownloaderClassLoader) camelContext.getApplicationContextClassLoader();
+ for (MavenArtifact a : artifacts) {
+ File file = a.getFile();
+ classLoader.addFile(file);
+ LOG.trace("Added classpath: {}", a.getGav());
}
}, gav);
}
@@ -122,40 +118,4 @@ public final class DownloaderHelper {
return false;
}
- public static void prepareDownloader(CamelContext camelContext, String repos, boolean download, boolean verbose)
- throws Exception {
- InputStream is = download
- ? DownloaderHelper.class.getResourceAsStream("/camelGrapeConfig.xml")
- : DownloaderHelper.class.getResourceAsStream("/localGrapeConfig.xml");
- if (is != null) {
- String xml = IOHelper.loadText(is);
- if (download && repos != null) {
- StringBuilder sb = new StringBuilder();
- sb.append(" <!-- custom repositories -->");
- int i = 0;
- for (String repo : repos.split(",")) {
- i++;
- sb.append(String.format("\n <url name=\"custom%s\" m2compatible=\"true\">", i));
- sb.append(String.format(
- "\n <artifact pattern=\"%s/[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]\"/>",
- repo));
- sb.append(String.format("\n </url>"));
- }
- xml = xml.replace(" <!-- @repos@ -->", sb.toString());
- }
-
- // save file to local disk and point grape to use this
- File out = new File(".camel-jbang/camelGrapeConfig.xml");
- IOHelper.writeText(xml, out);
-
- // Grape should use our custom configuration file
- System.setProperty("grape.config", out.getAbsolutePath());
- if (verbose) {
- VERBOSE_DOWNLOAD.set(true);
- }
-
- IOHelper.close(is);
- }
- }
-
}
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 039c9bc605c..506f55a3835 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
@@ -21,7 +21,6 @@ import java.util.LinkedList;
import java.util.Map;
import java.util.Objects;
-import groovy.lang.GroovyClassLoader;
import org.apache.camel.CamelContext;
import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.ProducerTemplate;
@@ -43,7 +42,7 @@ public class KameletMain extends MainCommandLineSupport {
private String repos;
private boolean stub;
private DownloadListener downloadListener;
- private GroovyClassLoader groovyClassLoader;
+ private DependencyDownloaderClassLoader classLoader;
public KameletMain() {
configureInitialProperties(DEFAULT_KAMELETS_LOCATION);
@@ -320,29 +319,25 @@ public class KameletMain extends MainCommandLineSupport {
}
try {
- // prepare grape config with custom repositories
- // use resolvers that can auto downloaded (either local or over the internet)
- DownloaderHelper.prepareDownloader(camelContext, repos, download, downloadVerbose);
-
// dependencies from CLI
Object dependencies = getInitialProperties().get("camel.jbang.dependencies");
if (dependencies != null) {
- answer.addService(new CommandLineDependencyDownloader(dependencies.toString()));
+ answer.addService(new CommandLineDependencyDownloader(dependencies.toString(), repos));
}
KnownDependenciesResolver known = new KnownDependenciesResolver(answer);
known.loadKnownDependencies();
DependencyDownloaderPropertyBindingListener listener
- = new DependencyDownloaderPropertyBindingListener(answer, known);
+ = new DependencyDownloaderPropertyBindingListener(answer, known, repos);
answer.getRegistry().bind(DependencyDownloaderPropertyBindingListener.class.getName(), listener);
answer.getRegistry().bind(DependencyDownloaderStrategy.class.getName(),
- 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());
+ new DependencyDownloaderStrategy(answer, repos));
+ answer.setClassResolver(new DependencyDownloaderClassResolver(answer, known, repos));
+ answer.setComponentResolver(new DependencyDownloaderComponentResolver(answer, repos, stub));
+ answer.setDataFormatResolver(new DependencyDownloaderDataFormatResolver(answer, repos));
+ answer.setLanguageResolver(new DependencyDownloaderLanguageResolver(answer, repos));
+ answer.setResourceLoader(new DependencyDownloaderResourceLoader(answer, repos));
+ answer.addService(new DependencyDownloaderKamelet(answer, repos));
} catch (Exception e) {
throw RuntimeCamelException.wrapRuntimeException(e);
}
@@ -359,7 +354,7 @@ public class KameletMain extends MainCommandLineSupport {
}
protected ClassLoader createApplicationContextClassLoader() {
- if (groovyClassLoader == null) {
+ if (classLoader == null) {
// create class loader (that are download capable) only once
// any additional files to add to classpath
ClassLoader parentCL = KameletMain.class.getClassLoader();
@@ -368,16 +363,17 @@ public class KameletMain extends MainCommandLineSupport {
parentCL = new ExtraFilesClassLoader(parentCL, cpFiles.split(","));
LOG.info("Additional files added to classpath: {}", cpFiles);
}
- groovyClassLoader = new GroovyClassLoader(parentCL);
+ classLoader = new DependencyDownloaderClassLoader(parentCL);
}
- return groovyClassLoader;
+ return classLoader;
}
@Override
protected void configureRoutesLoader(CamelContext camelContext) {
if (download) {
// use resolvers that can auto downloaded
- camelContext.adapt(ExtendedCamelContext.class).setRoutesLoader(new DependencyDownloaderRoutesLoader(configure()));
+ camelContext.adapt(ExtendedCamelContext.class)
+ .setRoutesLoader(new DependencyDownloaderRoutesLoader(configure(), repos));
} else {
super.configureRoutesLoader(camelContext);
}
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/MavenArtifact.java
similarity index 55%
copy from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderStrategy.java
copy to dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/MavenArtifact.java
index 6287fb78577..9962f561d16 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/MavenArtifact.java
@@ -16,24 +16,28 @@
*/
package org.apache.camel.main;
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.DependencyStrategy;
+import java.io.File;
-class DependencyDownloaderStrategy implements DependencyStrategy {
+public class MavenArtifact {
- private final CamelContext camelContext;
+ private final MavenGav gav;
+ private final File file;
- public DependencyDownloaderStrategy(CamelContext camelContext) {
- this.camelContext = camelContext;
+ public MavenArtifact(MavenGav gav, File file) {
+ this.gav = gav;
+ this.file = file;
}
- @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, gav.getGroupId(), gav.getArtifactId(),
- gav.getVersion());
- }
+ public MavenGav getGav() {
+ return gav;
+ }
+
+ public File getFile() {
+ return file;
}
+ @Override
+ public String toString() {
+ return gav.toString();
+ }
}
diff --git a/dsl/camel-kamelet-main/src/main/resources/camelGrapeConfig.xml b/dsl/camel-kamelet-main/src/main/resources/camelGrapeConfig.xml
deleted file mode 100644
index 50ea1457cf6..00000000000
--- a/dsl/camel-kamelet-main/src/main/resources/camelGrapeConfig.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<ivysettings>
- <!-- disable download of source and javadoc to be faster -->
- <property name="ivy.maven.lookup.sources" value="false"/>
- <property name="ivy.maven.lookup.javadoc" value="false"/>
- <settings defaultResolver="downloadGrapes"/>
- <resolvers>
- <chain name="downloadGrapes" returnFirst="true">
- <!-- grapes -->
- <filesystem name="cachedGrapes">
- <ivy pattern="${user.home}/.groovy/grapes/[organisation]/[module]/ivy-[revision].xml"/>
- <artifact pattern="${user.home}/.groovy/grapes/[organisation]/[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]"/>
- </filesystem>
- <!-- local m2 -->
- <ibiblio name="localm2" root="${user.home.url}/.m2/repository/" checkmodified="true" changingPattern=".*" changingMatcher="regexp" m2compatible="true"/>
- <!-- maven central -->
- <ibiblio name="maven2" m2compatible="true"/>
- <!-- apache snapshot -->
- <ibiblio name="apacheSnapshots" root="https://repository.apache.org/snapshots" m2compatible="true" changingMatcher="regexp" changingPattern=".*SNAPSHOT.*" checkmodified="true" />
- <!-- @repos@ -->
- </chain>
- </resolvers>
-</ivysettings>
diff --git a/dsl/camel-kamelet-main/src/main/resources/localGrapeConfig.xml b/dsl/camel-kamelet-main/src/main/resources/localGrapeConfig.xml
deleted file mode 100644
index cb4f490397d..00000000000
--- a/dsl/camel-kamelet-main/src/main/resources/localGrapeConfig.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<ivysettings>
- <!-- disable download of source and javadoc to be faster -->
- <property name="ivy.maven.lookup.sources" value="false"/>
- <property name="ivy.maven.lookup.javadoc" value="false"/>
- <settings defaultResolver="downloadGrapes"/>
- <resolvers>
- <chain name="downloadGrapes" returnFirst="true">
- <!-- grapes -->
- <filesystem name="cachedGrapes">
- <ivy pattern="${user.home}/.groovy/grapes/[organisation]/[module]/ivy-[revision].xml"/>
- <artifact pattern="${user.home}/.groovy/grapes/[organisation]/[module]/[type]s/[artifact]-[revision](-[classifier]).[ext]"/>
- </filesystem>
- <!-- local m2 -->
- <ibiblio name="localm2" root="${user.home.url}/.m2/repository/" checkmodified="true" changingPattern=".*" changingMatcher="regexp" m2compatible="true"/>
- </chain>
- </resolvers>
-</ivysettings>
diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderStrategy.java b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java
similarity index 53%
copy from dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderStrategy.java
copy to dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java
index 6287fb78577..374b17fc6ed 100644
--- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/DependencyDownloaderStrategy.java
+++ b/dsl/camel-kamelet-main/src/test/java/org/apache/camel/main/DependencyUtilTest.java
@@ -16,24 +16,18 @@
*/
package org.apache.camel.main;
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.DependencyStrategy;
+import java.util.List;
-class DependencyDownloaderStrategy implements DependencyStrategy {
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
- private final CamelContext camelContext;
+public class DependencyUtilTest {
- public DependencyDownloaderStrategy(CamelContext camelContext) {
- this.camelContext = camelContext;
+ @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);
+ Assertions.assertNotNull(answer);
+ Assertions.assertTrue(answer.size() > 15);
}
-
- @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, gav.getGroupId(), gav.getArtifactId(),
- gav.getVersion());
- }
- }
-
}