You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2019/10/30 12:14:52 UTC

[camel-k-runtime] 06/09: feat(quarkus): Add runtime provider information to generated catalog

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

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

commit a4989945bb7d0cc411f542b979b38a46a88c2c1b
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Tue Oct 29 16:50:23 2019 +0100

    feat(quarkus): Add runtime provider information to generated catalog
---
 .../camel/k/tooling/maven/GenerateCatalogMojo.java | 55 +++++++++++++++-------
 .../tooling/maven/model/crd/CamelCatalogSpec.java  |  5 +-
 ...atalogSpec.java => QuarkusRuntimeProvider.java} | 21 +++------
 ...{CamelCatalogSpec.java => RuntimeProvider.java} | 20 +++-----
 4 files changed, 53 insertions(+), 48 deletions(-)

diff --git a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
index ddf68bd..a103120 100644
--- a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
+++ b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java
@@ -37,6 +37,8 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
 import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator;
+import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
+
 import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.k.tooling.maven.model.CamelArtifact;
 import org.apache.camel.k.tooling.maven.model.CatalogComponentDefinition;
@@ -46,6 +48,8 @@ import org.apache.camel.k.tooling.maven.model.CatalogProcessor;
 import org.apache.camel.k.tooling.maven.model.CatalogSupport;
 import org.apache.camel.k.tooling.maven.model.crd.CamelCatalog;
 import org.apache.camel.k.tooling.maven.model.crd.CamelCatalogSpec;
+import org.apache.camel.k.tooling.maven.model.crd.QuarkusRuntimeProvider;
+import org.apache.camel.k.tooling.maven.model.crd.RuntimeProvider;
 import org.apache.camel.k.tooling.maven.model.k8s.ObjectMeta;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.maven.plugin.AbstractMojo;
@@ -74,7 +78,7 @@ public class GenerateCatalogMojo extends AbstractMojo {
     @Parameter(property = "catalog.file", defaultValue = "camel-catalog-${camel.version}-${runtime.version}.yaml")
     private String outputFile;
 
-    @Parameter(property = "catalog.runtime", defaultValue = "default")
+    @Parameter(property = "catalog.runtime", defaultValue = "")
     private String runtime;
 
     // ********************
@@ -99,14 +103,13 @@ public class GenerateCatalogMojo extends AbstractMojo {
 
         final SortedMap<String, CamelArtifact> artifacts = new TreeMap<>();
         final org.apache.camel.catalog.CamelCatalog catalog = new DefaultCamelCatalog();
-        String version = "";
+        if (runtime == null) {
+            runtime = "";
+        }
         switch (runtime) {
             case "quarkus":
                 catalog.setRuntimeProvider(new org.apache.camel.catalog.quarkus.QuarkusRuntimeProvider());
-                version = getVersionFor("/META-INF/maven/org.apache.camel.quarkus/camel-catalog-quarkus/pom.properties");
                 break;
-            case "default":
-                version = catalog.getCatalogVersion();
             case "":
                 break;
             default:
@@ -152,20 +155,35 @@ public class GenerateCatalogMojo extends AbstractMojo {
                     getRuntimeVersion().toLowerCase()
                 );
 
-                CamelCatalog cr = new CamelCatalog.Builder()
-                    .metadata(new ObjectMeta.Builder()
-                        .name(catalogName)
-                        .putLabels("app", "camel-k")
-                        .putLabels("camel.apache.org/catalog.version", version)
-                        .putLabels("camel.apache.org/catalog.loader.version", catalog.getLoadedVersion())
-                        .putLabels("camel.apache.org/runtime.provider", runtime.length() == 0 ? "default" : runtime)
-                        .putLabels("camel.apache.org/runtime.version", getRuntimeVersion())
-                        .build())
-                    .spec(new CamelCatalogSpec.Builder()
-                        .version(catalog.getCatalogVersion())
-                        .runtimeVersion(getRuntimeVersion())
-                        .artifacts(artifacts)
+                ObjectMeta.Builder labels = new ObjectMeta.Builder()
+                    .name(catalogName)
+                    .putLabels("app", "camel-k")
+                    .putLabels("camel.apache.org/catalog.version", catalog.getCatalogVersion())
+                    .putLabels("camel.apache.org/catalog.loader.version", catalog.getLoadedVersion())
+                    .putLabels("camel.apache.org/runtime.version", getRuntimeVersion());
+                if (runtime != "") {
+                    labels.putLabels("camel.apache.org/runtime.provider", runtime);
+                }
+
+                CamelCatalogSpec.Builder catalogSpec = new CamelCatalogSpec.Builder()
+                .version(catalog.getCatalogVersion())
+                .runtimeVersion(getRuntimeVersion())
+                .artifacts(artifacts);
+
+                if ("quarkus".equals(runtime)) {
+                    String camelQuarkusVersion = getVersionFor("/META-INF/maven/org.apache.camel.quarkus/camel-catalog-quarkus/pom.properties");
+                    String quarkusVersion = getVersionFor("/META-INF/maven/io.quarkus/quarkus-core/pom.properties");
+                    catalogSpec.runtimeProvider(new RuntimeProvider.Builder()
+                    .quarkus(new QuarkusRuntimeProvider.Builder()
+                        .camelQuarkusVersion(camelQuarkusVersion)
+                        .quarkusVersion(quarkusVersion)
                         .build())
+                    .build());
+                }
+
+                CamelCatalog cr = new CamelCatalog.Builder()
+                    .metadata(labels.build())
+                    .spec(catalogSpec.build())
                     .build();
 
                 YAMLFactory factory = new YAMLFactory()
@@ -184,6 +202,7 @@ public class GenerateCatalogMojo extends AbstractMojo {
 
                 // write catalog data
                 ObjectMapper mapper = new ObjectMapper(factory);
+                mapper.registerModule(new Jdk8Module());
                 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
                 mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
                 mapper.writeValue(writer, cr);
diff --git a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/CamelCatalogSpec.java b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/CamelCatalogSpec.java
index 0e88447..f41d2e7 100644
--- a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/CamelCatalogSpec.java
+++ b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/CamelCatalogSpec.java
@@ -17,6 +17,7 @@
 package org.apache.camel.k.tooling.maven.model.crd;
 
 import java.util.Collections;
+import java.util.Optional;
 import java.util.SortedMap;
 
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@@ -26,11 +27,13 @@ import org.immutables.value.Value;
 
 @Value.Immutable
 @JsonDeserialize(builder = CamelCatalogSpec.Builder.class)
-@JsonPropertyOrder({ "version", "runtimeVersion", "artifacts" })
+@JsonPropertyOrder({ "version", "runtimeVersion", "runtimeProvider", "artifacts" })
 public interface CamelCatalogSpec {
     String getVersion();
     String getRuntimeVersion();
 
+    Optional<RuntimeProvider> getRuntimeProvider();
+
     @Value.Default
     default SortedMap<String, CamelArtifact> getArtifacts() {
         return Collections.emptySortedMap();
diff --git a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/CamelCatalogSpec.java b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/QuarkusRuntimeProvider.java
similarity index 66%
copy from tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/CamelCatalogSpec.java
copy to tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/QuarkusRuntimeProvider.java
index 0e88447..6858f3c 100644
--- a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/CamelCatalogSpec.java
+++ b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/QuarkusRuntimeProvider.java
@@ -16,26 +16,17 @@
  */
 package org.apache.camel.k.tooling.maven.model.crd;
 
-import java.util.Collections;
-import java.util.SortedMap;
-
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.camel.k.tooling.maven.model.CamelArtifact;
 import org.immutables.value.Value;
 
 @Value.Immutable
-@JsonDeserialize(builder = CamelCatalogSpec.Builder.class)
-@JsonPropertyOrder({ "version", "runtimeVersion", "artifacts" })
-public interface CamelCatalogSpec {
-    String getVersion();
-    String getRuntimeVersion();
-
-    @Value.Default
-    default SortedMap<String, CamelArtifact> getArtifacts() {
-        return Collections.emptySortedMap();
-    }
+@JsonDeserialize(builder = QuarkusRuntimeProvider.Builder.class)
+@JsonPropertyOrder({ "camelQuarkusVersion", "quarkusVersion" })
+public interface QuarkusRuntimeProvider {
+    String getCamelQuarkusVersion();
+    String getQuarkusVersion();
 
-    class Builder extends ImmutableCamelCatalogSpec.Builder {
+    class Builder extends ImmutableQuarkusRuntimeProvider.Builder {
     }
 }
diff --git a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/CamelCatalogSpec.java b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/RuntimeProvider.java
similarity index 66%
copy from tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/CamelCatalogSpec.java
copy to tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/RuntimeProvider.java
index 0e88447..1920229 100644
--- a/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/CamelCatalogSpec.java
+++ b/tooling/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/model/crd/RuntimeProvider.java
@@ -16,26 +16,18 @@
  */
 package org.apache.camel.k.tooling.maven.model.crd;
 
-import java.util.Collections;
-import java.util.SortedMap;
+import java.util.Optional;
 
 import com.fasterxml.jackson.annotation.JsonPropertyOrder;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import org.apache.camel.k.tooling.maven.model.CamelArtifact;
 import org.immutables.value.Value;
 
 @Value.Immutable
-@JsonDeserialize(builder = CamelCatalogSpec.Builder.class)
-@JsonPropertyOrder({ "version", "runtimeVersion", "artifacts" })
-public interface CamelCatalogSpec {
-    String getVersion();
-    String getRuntimeVersion();
+@JsonDeserialize(builder = RuntimeProvider.Builder.class)
+@JsonPropertyOrder({ "quarkus" })
+public interface RuntimeProvider {
+    Optional<QuarkusRuntimeProvider> getQuarkus();
 
-    @Value.Default
-    default SortedMap<String, CamelArtifact> getArtifacts() {
-        return Collections.emptySortedMap();
-    }
-
-    class Builder extends ImmutableCamelCatalogSpec.Builder {
+    class Builder extends ImmutableRuntimeProvider.Builder {
     }
 }