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/14 15:16:40 UTC

[camel] branch main updated (d3905e21da4 -> 5b6978338e1)

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 d3905e21da4 (chores) ci: fixed typo
     new ff99e3c62bd Polished
     new 5b6978338e1 CAMEL-18818: camel-jbang - Downloading from maven repos should setup for release vs snapshot repo.

The 2 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:
 .../main/CommandLineDependencyDownloader.java      |  3 +-
 .../java/org/apache/camel/main/DependencyUtil.java | 54 ++++++++++++++++------
 .../org/apache/camel/main/DownloaderHelper.java    | 19 +++++---
 3 files changed, 54 insertions(+), 22 deletions(-)


[camel] 02/02: CAMEL-18818: camel-jbang - Downloading from maven repos should setup for release vs snapshot repo.

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 5b6978338e1cc3ab0b3c70545f1e074a5157809a
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Jun 14 17:16:14 2022 +0200

    CAMEL-18818: camel-jbang - Downloading from maven repos should setup for release vs snapshot repo.
---
 .../main/CommandLineDependencyDownloader.java      |  3 +-
 .../java/org/apache/camel/main/DependencyUtil.java | 54 ++++++++++++++++------
 .../org/apache/camel/main/DownloaderHelper.java    | 19 +++++---
 3 files changed, 54 insertions(+), 22 deletions(-)

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 54370b30ee1..b712d46af34 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
@@ -67,7 +67,8 @@ 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(), mg.getVersion());
+                DownloaderHelper.downloadDependency(camelContext, repos, fresh, mg.getGroupId(), mg.getArtifactId(),
+                        mg.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
index cdc962b5cfb..1608859de11 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/DependencyUtil.java
@@ -17,20 +17,22 @@
 package org.apache.camel.main;
 
 import java.io.File;
+import java.lang.reflect.Field;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.List;
 import java.util.stream.Collectors;
 
+import org.apache.camel.util.ReflectionHelper;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.repository.RepositoryPolicy;
 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;
+import org.jboss.shrinkwrap.resolver.api.maven.MavenWorkingSession;
+import org.jboss.shrinkwrap.resolver.impl.maven.ConfigurableMavenResolverSystemImpl;
 
 final class DependencyUtil {
 
@@ -41,21 +43,45 @@ final class DependencyUtil {
             List<String> depIds, List<String> customRepos,
             boolean offline, boolean fresh, boolean transitively) {
 
-        ConfigurableMavenResolverSystem resolver = Maven.configureResolver()
-                .withMavenCentralRepo(true)
+        ConfigurableMavenResolverSystemImpl resolver = (ConfigurableMavenResolverSystemImpl) Maven.configureResolver()
+                .withMavenCentralRepo(false) // do not use central
                 .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 (fresh) {
-                    repository.setUpdatePolicy(MavenUpdatePolicy.UPDATE_POLICY_ALWAYS);
+            int custom = 1;
+            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);
+                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);
+
+                String id;
+                if (snapshot) {
+                    id = "apache-snapshot";
+                } else if (central) {
+                    id = "central";
                 } else {
-                    repository.setUpdatePolicy(MavenUpdatePolicy.UPDATE_POLICY_NEVER);
+                    id = "custom" + custom++;
+                }
+                RemoteRepository rr = new RemoteRepository.Builder(id, "default", repo)
+                        .setReleasePolicy(releasePolicy)
+                        .setSnapshotPolicy(snapshotPolicy)
+                        .build();
+
+                MavenWorkingSession mws = resolver.getMavenWorkingSession();
+                try {
+                    Field f = mws.getClass().getDeclaredField("additionalRemoteRepositories");
+                    Object obj = ReflectionHelper.getField(f, mws);
+                    if (obj instanceof List) {
+                        List list = (List) obj;
+                        list.add(rr);
+                    }
+                } catch (Exception e) {
+                    // ignore
                 }
-                resolver.withRemoteRepo(repository);
             }
         }
 
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 c928ccbc917..68de137e09c 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
@@ -33,6 +33,7 @@ import org.slf4j.LoggerFactory;
  */
 public final class DownloaderHelper {
 
+    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);
@@ -72,16 +73,20 @@ public final class DownloaderHelper {
         DOWNLOAD_THREAD_POOL.download(LOG, () -> {
             LOG.debug("Downloading: {}", gav);
             List<String> deps = List.of(gav);
-            List<String> customRepos = new ArrayList<>();
+            List<String> mavenRepos = new ArrayList<>();
 
-            // include Apache snapshot to make it easy to use upcoming release
-            if ("org.apache.camel".equals(groupId) && version != null && version.contains("SNAPSHOT")) {
-                customRepos.add(APACHE_SNAPSHOT_REPO);
-            }
+            // add maven central first
+            mavenRepos.add(MAVEN_CENTRAL_REPO);
+            // and custom repos
             if (repos != null) {
-                customRepos.addAll(Arrays.stream(repos.split(",")).collect(Collectors.toList()));
+                mavenRepos.addAll(Arrays.stream(repos.split(",")).collect(Collectors.toList()));
             }
-            List<MavenArtifact> artifacts = DependencyUtil.resolveDependenciesViaAether(deps, customRepos, false, fresh, true);
+            // include Apache snapshot to make it easy to use upcoming releases
+            if ("org.apache.camel".equals(groupId) && version != null && version.contains("SNAPSHOT")) {
+                mavenRepos.add(APACHE_SNAPSHOT_REPO);
+            }
+
+            List<MavenArtifact> artifacts = DependencyUtil.resolveDependenciesViaAether(deps, mavenRepos, false, fresh, true);
             LOG.debug("Resolved {} -> [{}]", gav, artifacts);
 
             DependencyDownloaderClassLoader classLoader


[camel] 01/02: Polished

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 ff99e3c62bd298f7232a7772e0f56a6eee75b4eb
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Jun 14 14:49:34 2022 +0200

    Polished
---
 .../src/main/java/org/apache/camel/main/DependencyUtil.java             | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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
index 68bb27d5c42..cdc962b5cfb 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/DependencyUtil.java
@@ -49,7 +49,7 @@ final class DependencyUtil {
             for (int i = 0; i < customRepos.size(); i++) {
                 String repo = customRepos.get(i);
                 MavenRemoteRepository repository
-                        = MavenRemoteRepositories.createRemoteRepository("custom" + i + 1, repo, "default");
+                        = MavenRemoteRepositories.createRemoteRepository("custom" + (i + 1), repo, "default");
                 if (fresh) {
                     repository.setUpdatePolicy(MavenUpdatePolicy.UPDATE_POLICY_ALWAYS);
                 } else {