This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch lan-markup in repository https://gitbox.apache.org/repos/asf/camel.git
commit d3964ab75dfdd20028281f0cc09cf1fc016200df Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Aug 15 19:24:54 2024 +0200 CAMEL-20569: camel-catalog - Markup languages which functions they support for better doc and tooling. --- .../org/apache/camel/tooling/model/JsonMapper.java | 4 +++ .../apache/camel/tooling/model/LanguageModel.java | 29 ++++++++++++++++++++++ .../camel/maven/packaging/PackageLanguageMojo.java | 5 +++- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java index 9cfd4e4ed36..a923bbdf698 100644 --- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java +++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/JsonMapper.java @@ -413,6 +413,10 @@ public final class JsonMapper { JsonObject wrapper = new JsonObject(); wrapper.put("language", obj); wrapper.put("properties", asJsonObject(model.getOptions())); + final List<LanguageModel.LanguageFunctionModel> functions = model.getFunctions(); + if (!functions.isEmpty()) { + wrapper.put("functions", asJsonObject(functions)); + } return wrapper; } diff --git a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/LanguageModel.java b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/LanguageModel.java index f4bb4ddb395..f2284c8aa70 100644 --- a/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/LanguageModel.java +++ b/tooling/camel-tooling-model/src/main/java/org/apache/camel/tooling/model/LanguageModel.java @@ -16,10 +16,14 @@ */ package org.apache.camel.tooling.model; +import java.util.ArrayList; +import java.util.List; + public class LanguageModel extends ArtifactModel<LanguageModel.LanguageOptionModel> { protected String modelName; protected String modelJavaType; + protected final List<LanguageFunctionModel> functions = new ArrayList<>(); public static class LanguageOptionModel extends BaseOptionModel { @@ -48,4 +52,29 @@ public class LanguageModel extends ArtifactModel<LanguageModel.LanguageOptionMod public void setModelJavaType(String modelJavaType) { this.modelJavaType = modelJavaType; } + + public List<LanguageFunctionModel> getFunctions() { + return functions; + } + + public void addFunction(LanguageFunctionModel function) { + functions.add(function); + } + + public static class LanguageFunctionModel extends BaseOptionModel { + + /** + * The name of the constant that defines the function. + */ + private String constantName; + + public String getConstantName() { + return constantName; + } + + public void setConstantName(String constantName) { + this.constantName = constantName; + } + } + } diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java index 3a7d4eb9d37..1fec1f4b1e5 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLanguageMojo.java @@ -162,7 +162,7 @@ public class PackageLanguageMojo extends AbstractGeneratorMojo { SchemaHelper.addModelMetadata(languageModel, project); SchemaHelper.addModelMetadata(languageModel, javaType.getAnnotation(Metadata.class)); - // build json schema for the data format + // build json schema for the language String schema = JsonMapper.createParameterJsonSchema(languageModel); if (log.isDebugEnabled()) { log.debug("JSON schema\n" + schema); @@ -258,6 +258,9 @@ public class PackageLanguageMojo extends AbstractGeneratorMojo { option.setDescription(opt.getDescription()); model.addOption(option); } + + // TODO: read class and find functionClass and add each field as a function in the model + return model; }