diff --git a/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/main/java/io/kaoto/camelcatalog/CamelCatalogProcessor.java b/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/main/java/io/kaoto/camelcatalog/CamelCatalogProcessor.java index 47112923a..18143623d 100644 --- a/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/main/java/io/kaoto/camelcatalog/CamelCatalogProcessor.java +++ b/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/main/java/io/kaoto/camelcatalog/CamelCatalogProcessor.java @@ -16,6 +16,7 @@ package io.kaoto.camelcatalog; import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import org.apache.camel.catalog.DefaultCamelCatalog; @@ -24,13 +25,16 @@ import org.apache.camel.tooling.model.EipModel; import org.apache.camel.tooling.model.JsonMapper; +import java.io.File; import java.io.InputStream; import java.io.StringWriter; +import java.nio.file.Path; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; + /** * Customize Camel Catalog for Kaoto. */ @@ -51,14 +55,14 @@ public CamelCatalogProcessor(ObjectMapper jsonMapper, CamelYamlDslSchemaProcesso * Create Camel catalogs customized for Kaoto usage. * @return */ - public Map processCatalog() throws Exception { + public Map processCatalog(Path inputDir) throws Exception { var answer = new LinkedHashMap(); var componentCatalog = getComponentCatalog(); var dataFormatCatalog = getDataFormatCatalog(); var languageCatalog = getLanguageCatalog(); var modelCatalog = getModelCatalog(); var patternCatalog = getPatternCatalog(); - var entityCatalog = getEntityCatalog(); + var entityCatalog = getEntityCatalog(inputDir); var loadBalancerCatalog = getLoadBalancerCatalog(); answer.put("components", componentCatalog); answer.put("dataformats", dataFormatCatalog); @@ -285,7 +289,7 @@ public String getPatternCatalog() throws Exception { * @return * @throws Exception */ - public String getEntityCatalog() throws Exception { + public String getEntityCatalog(Path inputDir) throws Exception { var answer = jsonMapper.createObjectNode(); var entities = schemaProcessor.getEntities(); var catalogMap = new LinkedHashMap(); @@ -325,6 +329,13 @@ public String getEntityCatalog() throws Exception { } addMoreBeans(answer, catalogMap); + // Adding Kamelet configuration schema to the entities catalog + var schema = inputDir.resolve("schema").resolve("KameletConfiguration.json"); + ObjectNode addedNode = ((ObjectNode) answer).putObject("KameletConfiguration"); + addedNode.putObject("propertiesSchema"); + JsonNode locatedNode = answer.path("KameletConfiguration").path("propertiesSchema"); + ((ObjectNode) locatedNode).setAll((ObjectNode) jsonMapper.readTree(schema.toFile())); + StringWriter writer = new StringWriter(); var jsonGenerator = new JsonFactory().createGenerator(writer).useDefaultPrettyPrinter(); jsonMapper.writeTree(jsonGenerator, answer); diff --git a/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/main/java/io/kaoto/camelcatalog/KaotoCamelCatalogMojo.java b/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/main/java/io/kaoto/camelcatalog/KaotoCamelCatalogMojo.java index 8b13c9dd0..ec4cb5e18 100644 --- a/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/main/java/io/kaoto/camelcatalog/KaotoCamelCatalogMojo.java +++ b/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/main/java/io/kaoto/camelcatalog/KaotoCamelCatalogMojo.java @@ -111,7 +111,7 @@ public void execute() { var index = new Index(); var yamlDslSchemaProcessor = processCamelSchema(path, index); processK8sSchema(path, index); - processCatalog(yamlDslSchemaProcessor, index); + processCatalog(yamlDslSchemaProcessor, index, path); processCRDs(path, index); processKamelets(path, index); processAdditionalSchemas(path, index); @@ -213,10 +213,10 @@ private void processK8sSchema(Path inputDir, Index index) { } } - private void processCatalog(CamelYamlDslSchemaProcessor schemaProcessor, Index index) { + private void processCatalog(CamelYamlDslSchemaProcessor schemaProcessor, Index index, Path inputDir) { var catalogProcessor = new CamelCatalogProcessor(jsonMapper, schemaProcessor); try { - var catalogMap = catalogProcessor.processCatalog(); + var catalogMap = catalogProcessor.processCatalog(inputDir); catalogMap.forEach((name, catalog) -> { try { var outputFileName = String.format( diff --git a/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/test/java/io/kaoto/camelcatalog/CamelCatalogProcessorTest.java b/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/test/java/io/kaoto/camelcatalog/CamelCatalogProcessorTest.java index 34179e2ae..00e4ca185 100644 --- a/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/test/java/io/kaoto/camelcatalog/CamelCatalogProcessorTest.java +++ b/packages/camel-catalog/kaoto-camel-catalog-maven-plugin/src/test/java/io/kaoto/camelcatalog/CamelCatalogProcessorTest.java @@ -21,6 +21,7 @@ import org.apache.camel.dsl.yaml.CamelYamlRoutesBuilderLoader; import org.junit.jupiter.api.Test; +import java.nio.file.Paths; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -52,19 +53,19 @@ public CamelCatalogProcessorTest() throws Exception { this.languageCatalog = (ObjectNode) jsonMapper.readTree(this.processor.getLanguageCatalog()); this.modelCatalog = (ObjectNode) jsonMapper.readTree(this.processor.getModelCatalog()); this.processorCatalog = (ObjectNode) jsonMapper.readTree(this.processor.getPatternCatalog()); - this.entityCatalog = (ObjectNode) jsonMapper.readTree(this.processor.getEntityCatalog()); + this.entityCatalog = (ObjectNode) jsonMapper.readTree(this.processor.getEntityCatalog(Paths.get("../assembly/target/camel"))); this.loadBalancerCatalog = (ObjectNode) jsonMapper.readTree(this.processor.getLoadBalancerCatalog()); } @Test public void testProcessCatalog() throws Exception { - var catalogMap = processor.processCatalog(); + var catalogMap = processor.processCatalog(Paths.get("../assembly/target/camel")); assertEquals(processor.getComponentCatalog(), catalogMap.get("components")); assertEquals(processor.getDataFormatCatalog(), catalogMap.get("dataformats")); assertEquals(processor.getLanguageCatalog(), catalogMap.get("languages")); assertEquals(processor.getModelCatalog(), catalogMap.get("models")); assertEquals(processor.getPatternCatalog(), catalogMap.get("patterns")); - assertEquals(processor.getEntityCatalog(), catalogMap.get("entities")); + assertEquals(processor.getEntityCatalog(Paths.get("../assembly/target/camel")), catalogMap.get("entities")); assertEquals(processor.getLoadBalancerCatalog(), catalogMap.get("loadbalancers")); }