in support/camel-k-maven-plugin/src/main/java/org/apache/camel/k/tooling/maven/GenerateCatalogMojo.java [148:258]
public void execute() throws MojoExecutionException, MojoFailureException {
final Path output = Paths.get(this.outputPath, this.outputFile);
try {
if (Files.notExists(output.getParent())) {
Files.createDirectories(output.getParent());
}
if (Files.exists(output)) {
Files.delete(output);
}
} catch (IOException e) {
throw new MojoExecutionException("Exception while generating camel catalog", e);
}
final org.apache.camel.catalog.CamelCatalog catalog = new DefaultCamelCatalog();
catalog.setRuntimeProvider(new QuarkusRuntimeProvider());
final String runtimeVersion = MavenSupport.getVersion(getClass(), "/META-INF/maven/org.apache.camel.k/camel-k-maven-plugin/pom.properties");
final String catalogName = String.format("camel-catalog-%s", runtimeVersion.toLowerCase(Locale.US));
try {
CamelCatalogSpec.Builder catalogSpec = new CamelCatalogSpec.Builder();
RuntimeSpec.Builder runtimeSpec = new RuntimeSpec.Builder()
.version(runtimeVersion)
.provider("quarkus");
MavenSupport.getVersion(
AbstractCamelContext.class,
"org.apache.camel", "camel-base",
version -> runtimeSpec.putMetadata("camel.version", version));
MavenSupport.getVersion(
FastCamelContext.class,
"io.quarkus", "quarkus-core",
version -> runtimeSpec.putMetadata("quarkus.version", version));
MavenSupport.getVersion(
QuarkusRuntimeProvider.class,
"org.apache.camel.quarkus", "camel-quarkus-catalog",
version -> runtimeSpec.putMetadata("camel-quarkus.version", version));
runtimeSpec.putMetadata("quarkus.native-builder-image", MavenSupport.getApplicationProperty(getClass(), "quarkus.native-builder-image"));
runtimeSpec.putMetadata("jib.maven-plugin.version",
MavenSupport.getApplicationProperty(getClass(), "jib.maven-plugin.version"));
runtimeSpec.putMetadata("jib.layer-filter-extension-maven.version",
MavenSupport.getApplicationProperty(getClass(), "jib.layer-filter-extension-maven.version"));
runtimeSpec.applicationClass("io.quarkus.bootstrap.runner.QuarkusEntryPoint");
runtimeSpec.addDependency("org.apache.camel.k", "camel-k-runtime");
addCapabilities(runtimeSpec, catalogSpec);
catalogSpec.runtime(runtimeSpec.build());
process(catalog, catalogSpec);
ObjectMeta.Builder metadata = 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", runtimeVersion);
CamelCatalog cr = new CamelCatalog.Builder()
.metadata(metadata.build())
.spec(catalogSpec.build())
.build();
//
// apiVersion: camel.apache.org/v1
// kind: CamelCatalog
// metadata:
// name: catalog-x.y.z-main
// labels:
// app: "camel-k"
// camel.apache.org/catalog.version: x.y.x
// camel.apache.org/catalog.loader.version: x.y.z
// camel.apache.org/runtime.version: x.y.x
// camel.apache.org/runtime.provider: main
// spec:
// version:
// runtimeVersion:
// status:
// artifacts:
//
try (Writer writer = Files.newBufferedWriter(output, StandardCharsets.UTF_8)) {
YAMLFactory factory = new YAMLFactory()
.configure(YAMLGenerator.Feature.MINIMIZE_QUOTES, true)
.configure(YAMLGenerator.Feature.ALWAYS_QUOTE_NUMBERS_AS_STRINGS, true)
.configure(YAMLGenerator.Feature.USE_NATIVE_TYPE_ID, false)
.configure(YAMLGenerator.Feature.WRITE_DOC_START_MARKER, false);
// write license header
writer.write(
GenerateSupport.getResourceAsString("/catalog-license.txt")
);
getLog().info("Writing catalog file to: " + output);
// 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);
}
} catch (IOException e) {
throw new MojoExecutionException("Exception while generating catalog", e);
}
}