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++) {