Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(catalog): Added Kamelet Configuration schema to Entities Catalog #851

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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.
*/
Expand All @@ -51,14 +55,14 @@ public CamelCatalogProcessor(ObjectMapper jsonMapper, CamelYamlDslSchemaProcesso
* Create Camel catalogs customized for Kaoto usage.
* @return
*/
public Map<String, String> processCatalog() throws Exception {
public Map<String, String> processCatalog(Path inputDir) throws Exception {
var answer = new LinkedHashMap<String, String>();
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);
Expand Down Expand Up @@ -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<String, EipModel>();
Expand Down Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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"));
}

Expand Down
Loading