You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2022/01/06 14:54:09 UTC

[karaf] branch karaf-4.3.x updated: [KARAF-7316] Support for standard maven coordinates.

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

jbonofre pushed a commit to branch karaf-4.3.x
in repository https://gitbox.apache.org/repos/asf/karaf.git


The following commit(s) were added to refs/heads/karaf-4.3.x by this push:
     new de2b4ed  [KARAF-7316] Support for standard maven coordinates.
de2b4ed is described below

commit de2b4ed4780019928b0381713da0785590f358d9
Author: Łukasz Dywicki <lu...@code-house.org>
AuthorDate: Mon Jan 3 18:48:15 2022 +0100

    [KARAF-7316] Support for standard maven coordinates.
    
    This commit introduces very basic support for semi standard group:artifact:type[:classifier]:version syntax.
    In case if all parts are given they take over computed values.
    If version is missing - computed one is used.
    If type is missing - zip is assumed.
    If classifier is missing (which is common) empty string will be used.
    
    This should simplify handling of basic feature verification projects.
    
    Signed-off-by: Łukasz Dywicki <lu...@code-house.org>
    
    (cherry picked from commit 1642860925a82105642583bfa03b7ac4bf05c100)
---
 .../java/org/apache/karaf/tooling/VerifyMojo.java  | 23 +++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/VerifyMojo.java b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/VerifyMojo.java
index c6ac4cf..6830bc2 100644
--- a/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/VerifyMojo.java
+++ b/tooling/karaf-maven-plugin/src/main/java/org/apache/karaf/tooling/VerifyMojo.java
@@ -47,6 +47,9 @@ import java.util.TreeSet;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+import java.util.function.Supplier;
 import java.util.jar.Attributes;
 import java.util.jar.Manifest;
 import java.util.regex.Pattern;
@@ -541,7 +544,7 @@ public class VerifyMojo extends MojoSupport {
             } else {
                 String version = getVersion(distribution, "RELEASE");
                 String[] dist = distribution.split(":");
-                File distFile = resolver.resolve(dist[0], dist[1], null, "zip", version);
+                File distFile = resolveDistributionArtifact(version, dist);
                 String resolvedVersion = distFile.getName().substring(dist[1].length() + 1, distFile.getName().length() - 4);
                 String dir = distDir;
                 if (dir == null) {
@@ -586,6 +589,24 @@ public class VerifyMojo extends MojoSupport {
         return resource.getBundle();
     }
 
+    private File resolveDistributionArtifact(String version, String[] dist) throws IOException {
+        // groupId:artifactId:type[:classifier]:version
+        BiFunction<String, String, String> fallback = (input, fbk) -> input == null || input.trim().isEmpty() ? fbk : input;
+        if (dist.length < 3) {
+            return resolver.resolve(dist[0], dist[1], "", "zip", version);
+        }
+        if (dist.length < 4) {
+            return resolver.resolve(dist[0], dist[1], "", fallback.apply(dist[2], "zip"), version);
+        }
+        if (dist.length < 5) {
+            return resolver.resolve(dist[0], dist[1], "", fallback.apply(dist[2], "zip"), fallback.apply(dist[3], version));
+        }
+        if (dist.length == 5) {
+            return resolver.resolve(dist[0], dist[1], fallback.apply(dist[3], ""), fallback.apply(dist[2], "zip"), fallback.apply(dist[4], version));
+        }
+        throw new IllegalArgumentException("Invalid distribution uri");
+    }
+
 
     public Map<String, Features> loadRepositories(DownloadManager manager, Set<String> uris) throws Exception {
         final Map<String, Features> loaded = new HashMap<>();