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 {
}
}