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 <anto...@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 { } }