You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2023/08/10 09:27:57 UTC

[camel-k-runtime] branch main updated: Add more capabilities and their dependencies

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

pcongiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git


The following commit(s) were added to refs/heads/main by this push:
     new a6085852 Add more capabilities and their dependencies
a6085852 is described below

commit a6085852295ff97bf3cd732b33e6454329d8a7c4
Author: Claudio Miranda <cl...@claudius.com.br>
AuthorDate: Mon Jun 5 15:15:11 2023 -0300

    Add more capabilities and their dependencies
---
 .../org/apache/camel/k/catalog/model/Artifact.java |   2 +-
 .../camel/k/tooling/maven/GenerateCatalogMojo.java | 168 +++++++++++----------
 2 files changed, 92 insertions(+), 78 deletions(-)

diff --git a/support/camel-k-catalog-model/src/main/java/org/apache/camel/k/catalog/model/Artifact.java b/support/camel-k-catalog-model/src/main/java/org/apache/camel/k/catalog/model/Artifact.java
index 8f3dc722..c27482db 100644
--- a/support/camel-k-catalog-model/src/main/java/org/apache/camel/k/catalog/model/Artifact.java
+++ b/support/camel-k-catalog-model/src/main/java/org/apache/camel/k/catalog/model/Artifact.java
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 
 @JsonPropertyOrder({"groupId", "artifactId", "version"})
 public interface Artifact extends Comparable<Artifact> {
-    String getGroupId();;
+    String getGroupId();
     String getArtifactId();
     Optional<String> getVersion();
 
diff --git a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
index 810d5cf0..126061bf 100644
--- a/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
+++ b/support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
@@ -22,6 +22,7 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
@@ -39,6 +40,7 @@ import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
 import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.catalog.quarkus.QuarkusRuntimeProvider;
 import org.apache.camel.impl.engine.AbstractCamelContext;
+import org.apache.camel.k.catalog.model.Artifact;
 import org.apache.camel.k.catalog.model.CamelArtifact;
 import org.apache.camel.k.catalog.model.CamelCapability;
 import org.apache.camel.k.catalog.model.CamelLoader;
@@ -187,83 +189,7 @@ public class GenerateCatalogMojo extends AbstractMojo {
             runtimeSpec.applicationClass("io.quarkus.bootstrap.runner.QuarkusEntryPoint");
             runtimeSpec.addDependency("org.apache.camel.k", "camel-k-runtime");
 
-            if (capabilitiesExclusionList != null && !capabilitiesExclusionList.contains("cron")) {
-                runtimeSpec.putCapability(
-                    "cron",
-                    CamelCapability.forArtifact(
-                        "org.apache.camel.k", "camel-k-cron"));
-
-                catalogSpec.putArtifact(
-                    new CamelArtifact.Builder()
-                        .groupId("org.apache.camel.k")
-                        .artifactId("camel-k-cron")
-                        .build()
-                );
-            }
-            if (capabilitiesExclusionList != null && !capabilitiesExclusionList.contains("health")) {
-                runtimeSpec.putCapability(
-                    "health",
-                    CamelCapability.forArtifact(
-                        "org.apache.camel.quarkus", "camel-quarkus-microprofile-health"));
-            }
-            if (capabilitiesExclusionList != null && !capabilitiesExclusionList.contains("platform-http")) {
-                runtimeSpec.putCapability(
-                    "platform-http",
-                    CamelCapability.forArtifact(
-                        "org.apache.camel.quarkus", "camel-quarkus-platform-http"));
-            }
-            if (capabilitiesExclusionList != null && !capabilitiesExclusionList.contains("rest")) {
-                runtimeSpec.putCapability(
-                    "rest",
-                    new CamelCapability.Builder()
-                        .addDependency("org.apache.camel.quarkus", "camel-quarkus-rest")
-                        .addDependency("org.apache.camel.quarkus", "camel-quarkus-platform-http")
-                        .build());
-            }
-            if (capabilitiesExclusionList != null && !capabilitiesExclusionList.contains("circuit-breaker")) {
-                runtimeSpec.putCapability(
-                    "circuit-breaker",
-                    CamelCapability.forArtifact(
-                        "org.apache.camel.quarkus", "camel-quarkus-microprofile-fault-tolerance"));
-            }
-            if (capabilitiesExclusionList != null && !capabilitiesExclusionList.contains("tracing")) {
-                runtimeSpec.putCapability(
-                    "tracing",
-                    CamelCapability.forArtifact(
-                        "org.apache.camel.quarkus", "camel-quarkus-opentracing"));
-            }
-            if (capabilitiesExclusionList != null && !capabilitiesExclusionList.contains("telemetry")) {
-                runtimeSpec.putCapability(
-                        "telemetry",
-                        CamelCapability.forArtifact(
-                                "org.apache.camel.quarkus", "camel-quarkus-opentelemetry"));
-            }
-            if (capabilitiesExclusionList != null && !capabilitiesExclusionList.contains("master")) {
-                runtimeSpec.putCapability(
-                    "master",
-                    CamelCapability.forArtifact(
-                        "org.apache.camel.k", "camel-k-master"));
-
-                catalogSpec.putArtifact(
-                    new CamelArtifact.Builder()
-                        .groupId("org.apache.camel.k")
-                        .artifactId("camel-k-master")
-                        .build()
-                );
-            }
-            if (capabilitiesExclusionList != null && !capabilitiesExclusionList.contains("resume-kafka")) {
-                runtimeSpec.putCapability(
-                        "resume-kafka",
-                        CamelCapability.forArtifact(
-                                "org.apache.camel.k", "camel-k-resume-kafka"));
-
-                catalogSpec.putArtifact(
-                        new CamelArtifact.Builder()
-                                .groupId("org.apache.camel.k")
-                                .artifactId("camel-k-resume-kafka")
-                                .build()
-                );
-            }
+            addCapabilities(runtimeSpec, catalogSpec);
 
             catalogSpec.runtime(runtimeSpec.build());
 
@@ -525,4 +451,92 @@ public class GenerateCatalogMojo extends AbstractMojo {
 
         return builder;
     }
+
+    private void addCapabilities(RuntimeSpec.Builder runtimeSpec, CamelCatalogSpec.Builder catalogSpec) {
+        List<Artifact> artifacts = new ArrayList<>();
+        artifacts.add(Artifact.from("org.apache.camel.k", "camel-k-cron"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "cron", artifacts, true);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-microprofile-health"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "health", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-platform-http"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "platform-http", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-rest"));
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-platform-http"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "rest", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-microprofile-fault-tolerance"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "circuit-breaker", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-opentracing"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "tracing", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-opentelemetry"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "telemetry", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.k", "camel-k-master"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "master", artifacts, true);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.k", "camel-k-resume-kafka"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "resume-kafka", artifacts, true);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-hashicorp-vault"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "hashicorp-vault", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-azure-key-vault"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "azure-key-vault", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-aws-secrets-manager"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "aws-secrets-manager", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-google-secret-manager"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "gcp-secret-manager", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.k", "camel-k-knative-impl"));
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-knative"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "knative", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("io.micrometer", "micrometer-registry-prometheus"));
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-micrometer"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "prometheus", artifacts, false);
+
+        artifacts.clear();
+        artifacts.add(Artifact.from("org.apache.camel.quarkus", "camel-quarkus-management"));
+        artifacts.add(Artifact.from("org.apache.camel", "camel-jaxb"));
+        artifacts.add(Artifact.from("org.jolokia", "jolokia-jvm"));
+        addCapabilityAndDependecies(runtimeSpec, catalogSpec, "jolokia", artifacts, false);
+    }
+
+    private void addCapabilityAndDependecies(RuntimeSpec.Builder runtimeSpec, CamelCatalogSpec.Builder catalogSpec, String name,
+        List<Artifact> artifacts, boolean addDependency) {
+        if (capabilitiesExclusionList != null && !capabilitiesExclusionList.contains(name)) {
+            CamelCapability.Builder capBuilder = new CamelCapability.Builder();
+            artifacts.forEach(artifact -> capBuilder.addDependency(artifact.getGroupId(), artifact.getArtifactId()));
+            CamelCapability dependency = capBuilder.build();
+            runtimeSpec.putCapability(name, dependency);
+            if (addDependency && !artifacts.isEmpty()) {
+                catalogSpec.putArtifact(new CamelArtifact.Builder()
+                    .groupId(artifacts.get(0).getGroupId())
+                    .artifactId(artifacts.get(0).getArtifactId())
+                    .build());
+            }
+        }
+
+    }
 }