This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 961a0903676 CAMEL-22239: camel-catalog - Language model does not 
include functions
961a0903676 is described below

commit 961a09036763f5873d9203cc03355a024b9bae6b
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Jul 14 20:45:10 2025 +0200

    CAMEL-22239: camel-catalog - Language model does not include functions
---
 .../org/apache/camel/catalog/CamelCatalogTest.java | 20 +++++++++++++++
 .../org/apache/camel/tooling/model/JsonMapper.java | 30 ++++++++++++++++++++++
 2 files changed, 50 insertions(+)

diff --git 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
index 9df3583743f..b77669fb290 100644
--- 
a/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
+++ 
b/catalog/camel-catalog/src/test/java/org/apache/camel/catalog/CamelCatalogTest.java
@@ -1641,4 +1641,24 @@ public class CamelCatalogTest {
         assertEquals(7, model.getOptions().size());
     }
 
+    @Test
+    public void testSimpleFunctions() {
+        LanguageModel model = catalog.languageModel("simple");
+        assertNotNull(model);
+
+        assertTrue(model.getFunctions().size() > 50);
+
+        assertEquals("body", model.getFunctions().get(0).getConstantName());
+        assertEquals("${", model.getFunctions().get(0).getPrefix());
+        assertEquals("}", model.getFunctions().get(0).getSuffix());
+        assertEquals("The message body", 
model.getFunctions().get(0).getDescription());
+
+        assertEquals("pretty(exp)", 
model.getFunctions().get(36).getConstantName());
+        assertEquals("${", model.getFunctions().get(36).getPrefix());
+        assertEquals("}", model.getFunctions().get(36).getSuffix());
+        assertEquals(
+                "Converts the expression to a String, and attempts to pretty 
print if JSon or XML, otherwise the expression is returned as the String 
value.",
+                model.getFunctions().get(36).getDescription());
+    }
+
 }
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 80440377a3e..26dc20cb597 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
@@ -397,6 +397,15 @@ public final class JsonMapper {
             parseOption(mp, option, entry.getKey());
             model.addOption(option);
         }
+        JsonObject mprf = (JsonObject) obj.get("functions");
+        if (mprf != null) {
+            for (Map.Entry<String, Object> entry : mprf.entrySet()) {
+                JsonObject mp = (JsonObject) entry.getValue();
+                LanguageModel.LanguageFunctionModel func = new 
LanguageModel.LanguageFunctionModel();
+                parseFunction(mp, func, entry.getKey());
+                model.addFunction(func);
+            }
+        }
         return model;
     }
 
@@ -595,6 +604,27 @@ public final class JsonMapper {
         option.setSourceType(mp.getString("sourceType"));
     }
 
+    private static void parseFunction(JsonObject mp, 
LanguageModel.LanguageFunctionModel func, String name) {
+        func.setName(name);
+        func.setConstantName(name);
+        Integer idx = mp.getInteger("index");
+        if (idx != null) {
+            func.setIndex(idx);
+        }
+        func.setKind(mp.getString("kind"));
+        func.setDisplayName(mp.getString("displayName"));
+        func.setGroup(mp.getString("group"));
+        func.setLabel(mp.getString("label"));
+        func.setRequired(mp.getBooleanOrDefault("required", false));
+        func.setJavaType(mp.getString("javaType"));
+        func.setPrefix(mp.getString("prefix"));
+        func.setDeprecated(mp.getBooleanOrDefault("deprecated", false));
+        func.setDeprecationNote(mp.getString("deprecationNote"));
+        func.setDescription(mp.getString("description"));
+        func.setOgnl(mp.getBoolean("ognl"));
+        func.setSuffix(mp.getString("suffix"));
+    }
+
     public static JsonObject asJsonObject(List<? extends BaseOptionModel> 
options) {
         JsonObject json = new JsonObject();
         for (int i = 0; i < options.size(); i++) {

Reply via email to