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

Reply via email to