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 f8e8ab4e870f414e3062836c8f90809350f37801
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri Aug 16 10:28:44 2024 +0200

    CAMEL-20569: camel-catalog - Markup languages which functions they support 
for better doc and tooling.
---
 .../org/apache/camel/language/simple/simple.json   | 43 ++++++++---------
 .../camel/language/simple/SimpleConstants.java     | 54 ++++++++++------------
 .../camel/maven/packaging/PackageLanguageMojo.java | 14 +++++-
 3 files changed, 57 insertions(+), 54 deletions(-)

diff --git 
a/core/camel-core-languages/src/generated/resources/META-INF/org/apache/camel/language/simple/simple.json
 
b/core/camel-core-languages/src/generated/resources/META-INF/org/apache/camel/language/simple/simple.json
index 77a53050a85..ab4acc95bc3 100644
--- 
a/core/camel-core-languages/src/generated/resources/META-INF/org/apache/camel/language/simple/simple.json
+++ 
b/core/camel-core-languages/src/generated/resources/META-INF/org/apache/camel/language/simple/simple.json
@@ -31,8 +31,8 @@
     "exchangeId": { "index": 6, "kind": "function", "displayName": "Exchange 
Id", "group": "function", "label": "function", "required": false, "javaType": 
"String", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "The exchange id", 
"suffix": "}" },
     "exchange": { "index": 7, "kind": "function", "displayName": "Exchange", 
"group": "function", "label": "function", "required": false, "javaType": 
"org.apache.camel.Exchange", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
exchange", "suffix": "}" },
     "exception": { "index": 8, "kind": "function", "displayName": "Exception", 
"group": "function", "label": "function", "required": false, "javaType": 
"java.lang.Exception", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "The exception object 
on the exchange (also from caught exceptions), is null if no exception 
present.", "suffix": "}" },
-    "exception.message": { "index": 9, "kind": "function", "displayName": 
"Exception.message", "group": "function", "label": "function", "required": 
false, "javaType": "String", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
exception message (also from caught exceptions), is null if no exception 
present.", "suffix": "}" },
-    "exception.stackTrace": { "index": 10, "kind": "function", "displayName": 
"Exception.stack Trace", "group": "function", "label": "function", "required": 
false, "javaType": "String", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
exception stacktrace (also from caught exceptions), is null if no exception 
present.", "suffix": "}" },
+    "exception.message": { "index": 9, "kind": "function", "displayName": 
"Exception Message", "group": "function", "label": "function", "required": 
false, "javaType": "String", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
exception message (also from caught exceptions), is null if no exception 
present.", "suffix": "}" },
+    "exception.stackTrace": { "index": 10, "kind": "function", "displayName": 
"Exception Stacktrace", "group": "function", "label": "function", "required": 
false, "javaType": "String", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
exception stacktrace (also from caught exceptions), is null if no exception 
present.", "suffix": "}" },
     "threadId": { "index": 11, "kind": "function", "displayName": "Thread Id", 
"group": "function", "label": "function", "required": false, "javaType": 
"long", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Returns the id of the 
current thread. Can be used for logging.", "suffix": "}" },
     "threadName": { "index": 12, "kind": "function", "displayName": "Thread 
Name", "group": "function", "label": "function", "required": false, "javaType": 
"String", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Returns the name of the 
current thread. Can be used for logging.", "suffix": "}" },
     "hostName": { "index": 13, "kind": "function", "displayName": "Host Name", 
"group": "function", "label": "function", "required": false, "javaType": 
"String", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Returns the local hostname 
(may be empty if not possible to resolve).", "suffix": "}" },
@@ -42,28 +42,25 @@
     "routeGroup": { "index": 17, "kind": "function", "displayName": "Route 
Group", "group": "function", "label": "function", "required": false, 
"javaType": "String", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "Returns the route 
group of the current route the Exchange is being routed. Not all routes have a 
group assigned, so this may be null.", "suffix": "}" },
     "stepId": { "index": 18, "kind": "function", "displayName": "Step Id", 
"group": "function", "label": "function", "required": false, "javaType": 
"String", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Returns the id of the 
current step the Exchange is being routed.", "suffix": "}" },
     "null": { "index": 19, "kind": "function", "displayName": "Null", "group": 
"function", "label": "function", "required": false, "javaType": "Object", 
"prefix": "${", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Represents a null value", "suffix": "}" },
-    "messageAs(type)": { "index": 20, "kind": "function", "displayName": 
"Message As(type)", "group": "function", "label": "function", "required": 
false, "javaType": "Object", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Converts the message to the given type (classname).", "suffix": "}" },
-    "bodyAs(type)": { "index": 21, "kind": "function", "displayName": "Body 
As(type)", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "Converts the message 
body to the given type (classname).", "suffix": "}" },
-    "mandatoryBodyAs(type)": { "index": 22, "kind": "function", "displayName": 
"Mandatory Body As(type)", "group": "function", "label": "function", 
"required": false, "javaType": "Object", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Converts the message body to the given type (classname). If the body is null 
then the function will fail with an exception", "suffix": "}" },
-    "headerAs(key,type)": { "index": 23, "kind": "function", "displayName": 
"Header As(key,type)", "group": "function", "label": "function", "required": 
false, "javaType": "Object", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Converts the message header to the given type (classname).", "suffix": "}" },
+    "messageAs(type)": { "index": 20, "kind": "function", "displayName": 
"Message As", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "Converts the message 
to the given type (classname).", "suffix": "}" },
+    "bodyAs(type)": { "index": 21, "kind": "function", "displayName": "Body 
As", "group": "function", "label": "function", "required": false, "javaType": 
"Object", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Converts the message body 
to the given type (classname).", "suffix": "}" },
+    "mandatoryBodyAs(type)": { "index": 22, "kind": "function", "displayName": 
"Mandatory Body As", "group": "function", "label": "function", "required": 
false, "javaType": "Object", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Converts the message body to the given type (classname). If the body is null 
then the function will fail with an exception", "suffix": "}" },
+    "headerAs(key,type)": { "index": 23, "kind": "function", "displayName": 
"Header As", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "Converts the message 
header to the given type (classname).", "suffix": "}" },
     "headers": { "index": 24, "kind": "function", "displayName": "Headers", 
"group": "function", "label": "function", "required": false, "javaType": 
"java.util.Map", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Returns all the message 
headers in a Map", "suffix": "}" },
-    "variableAs(key,type)": { "index": 25, "kind": "function", "displayName": 
"Variable As(key,type)", "group": "function", "label": "function", "required": 
false, "javaType": "Object", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Converts the variable to the given type (classname).", "suffix": "}" },
+    "variableAs(key,type)": { "index": 25, "kind": "function", "displayName": 
"Variable As", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "Converts the variable 
to the given type (classname).", "suffix": "}" },
     "variables": { "index": 26, "kind": "function", "displayName": 
"Variables", "group": "function", "label": "function", "required": false, 
"javaType": "java.util.Map", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Returns all the variables from the current Exchange in a Map", "suffix": "}" },
-    "jq(exp)": { "index": 27, "kind": "function", "displayName": "Jq(exp)", 
"group": "function", "label": "function", "required": false, "javaType": 
"Object", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "When working with JSon 
data, then this allows using the JQ language, for example, to extract data from 
the message body (in JSon format). This requires having camel-jq JAR on the 
classpath.", "suffix": "}" },
-    "jq(input,exp)": { "index": 28, "kind": "function", "displayName": 
"Jq(input,exp)", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "When working with JSon 
data, then this allows using the JQ language, for example, to extract data from 
the message body (in JSon format). This requires having camel-jq JAR on the 
classpath. For input, you can [...]
-    "jsonpath(exp)": { "index": 29, "kind": "function", "displayName": 
"Jsonpath(exp)", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "When working with JSon 
data, then this allows using the JSonPath language, for example, to extract 
data from the message body (in JSon format). This requires having 
camel-jsonpath JAR on the classpath.", "suf [...]
-    "jsonpath(input,exp)": { "index": 30, "kind": "function", "displayName": 
"Jsonpath(input,exp)", "group": "function", "label": "function", "required": 
false, "javaType": "Object", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"When working with JSon data, then this allows using the JSonPath language, for 
example, to extract data from the message body (in JSon format). This requires 
having camel-jsonpath JAR on the class [...]
-    "xpath(exp)": { "index": 31, "kind": "function", "displayName": 
"Xpath(exp)", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "When working with XML 
data, then this allows using the XPath language, for example, to extract data 
from the message body (in XML format). This requires having camel-xpath JAR on 
the classpath.", "suffix": "}" },
-    "xpath(input,exp)": { "index": 32, "kind": "function", "displayName": 
"Xpath(input,exp)", "group": "function", "label": "function", "required": 
false, "javaType": "Object", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"When working with XML data, then this allows using the XPath language, for 
example, to extract data from the message body (in XML format). This requires 
having camel-xpath JAR on the classpath. For inpu [...]
-    "sys.name": { "index": 33, "kind": "function", "displayName": "Sys.name", 
"group": "function", "label": "function", "required": false, "javaType": 
"Object", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "The JVM system property 
with the given name", "suffix": "}" },
-    "env.name": { "index": 34, "kind": "function", "displayName": "Env.name", 
"group": "function", "label": "function", "required": false, "javaType": 
"Object", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "The OS environment 
variable with the given name", "suffix": "}" },
-    "pretty(exp)": { "index": 35, "kind": "function", "displayName": 
"Pretty(exp)", "group": "function", "label": "function", "required": false, 
"javaType": "String", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "Converts the 
expression to a String, and attempts to pretty print if JSon or XML, otherwise 
the expression is returned as the String value.", "suffix": "}" },
-    "date(command)": { "index": 36, "kind": "function", "displayName": 
"Date(command)", "group": "function", "label": "function", "required": false, 
"javaType": "java.util.Date", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Evaluates to a java.util.Date object. Supported commands are: `now` for 
current timestamp, `exchangeCreated` for the timestamp when the current 
exchange was created, `header.xxx` to use the Long\/Date [...]
-    "date-with-timezone(command:timezone:pattern)": { "index": 37, "kind": 
"function", "displayName": "Date-with-timezone(command:timezone:pattern)", 
"group": "function", "label": "function", "required": false, "javaType": 
"String", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Formats the date to a 
String using the given date pattern, and with support for timezone. Supported 
commands are: `now` for current timestamp, `ex [...]
-    "bean(name.method)": { "index": 38, "kind": "function", "displayName": 
"Bean(name.method)", "group": "function", "label": "function", "required": 
false, "javaType": "Object", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Calls a Java bean. The name of the bean can also refer to a class name using 
type prefix as follows `bean:type:com.foo.MyClass`. If no method name is given 
then Camel will automatic attempt to find th [...]
-    "propertiesExist:key": { "index": 39, "kind": "function", "displayName": 
"Properties Exist:key", "group": "function", "label": "function", "required": 
false, "javaType": "boolean", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Checks whether a property placeholder with the given key exists or not. The 
result can be negated by prefixing the key with !", "suffix": "}" },
-    "properties:key:default": { "index": 40, "kind": "function", 
"displayName": "Properties:key:default", "group": "function", "label": 
"function", "required": false, "javaType": "String", "prefix": "${", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Lookup a property placeholder with the given key. If the 
key does not exist nor has a value, then an optional default value can be 
specified.", "suffix": "}" },
-    "ref:name": { "index": 41, "kind": "function", "displayName": "Ref:name", 
"group": "function", "label": "function", "required": false, "javaType": 
"Object", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "To look up a bean from the 
Registry with the given name.", "suffix": "}" },
-    "type:name.field": { "index": 42, "kind": "function", "displayName": 
"Type:name.field", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "To refer to a type or 
field by its classname. To refer to a field, you can append .FIELD_NAME. For 
example, you can refer to the constant field from Exchange as: 
`org.apache.camel.Exchange.FILE_NAME`", "s [...]
+    "jq(input,exp)": { "index": 27, "kind": "function", "displayName": "JQ", 
"group": "function", "label": "function", "required": false, "javaType": 
"Object", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "When working with JSon 
data, then this allows using the JQ language, for example, to extract data from 
the message body (in JSon format). This requires having camel-jq JAR on the 
classpath. For input (optional), you can [...]
+    "jsonpath(input,exp)": { "index": 28, "kind": "function", "displayName": 
"JSonPath", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "When working with JSon 
data, then this allows using the JSonPath language, for example, to extract 
data from the message body (in JSon format). This requires having 
camel-jsonpath JAR on the classpath. For i [...]
+    "xpath(input,exp)": { "index": 29, "kind": "function", "displayName": 
"XPath", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "When working with XML 
data, then this allows using the XPath language, for example, to extract data 
from the message body (in XML format). This requires having camel-xpath JAR on 
the classpath. For input (optional [...]
+    "sys.name": { "index": 30, "kind": "function", "displayName": "JVM System 
Property", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "The JVM system 
property with the given name", "suffix": "}" },
+    "env.name": { "index": 31, "kind": "function", "displayName": "OS 
Environment Variable", "group": "function", "label": "function", "required": 
false, "javaType": "Object", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
OS environment variable with the given name", "suffix": "}" },
+    "pretty(exp)": { "index": 32, "kind": "function", "displayName": "Pretty 
Print", "group": "function", "label": "function", "required": false, 
"javaType": "String", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "Converts the 
expression to a String, and attempts to pretty print if JSon or XML, otherwise 
the expression is returned as the String value.", "suffix": "}" },
+    "date(command)": { "index": 33, "kind": "function", "displayName": "Parse 
Date", "group": "function", "label": "function", "required": false, "javaType": 
"java.util.Date", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "Evaluates to a 
java.util.Date object. Supported commands are: `now` for current timestamp, 
`exchangeCreated` for the timestamp when the current exchange was created, 
`header.xxx` to use the Long\/Date ob [...]
+    "date-with-timezone(command:timezone:pattern)": { "index": 34, "kind": 
"function", "displayName": "Date Formatter", "group": "function", "label": 
"function", "required": false, "javaType": "String", "prefix": "${", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Formats the date to a String using the given date 
pattern, and with support for timezone. Supported commands are: `now` for 
current timestamp, `exchangeCreated` for the timesta [...]
+    "bean(name.method)": { "index": 35, "kind": "function", "displayName": 
"Call Java Bean", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "Calls a Java bean. The 
name of the bean can also refer to a class name using type prefix as follows 
`bean:type:com.foo.MyClass`. If no method name is given then Camel will 
automatic attempt to find the b [...]
+    "propertiesExist:key": { "index": 36, "kind": "function", "displayName": 
"Property Placeholder Exists", "group": "function", "label": "function", 
"required": false, "javaType": "boolean", "prefix": "${", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": 
"Checks whether a property placeholder with the given key exists or not. The 
result can be negated by prefixing the key with !", "suffix": "}" },
+    "properties:key:default": { "index": 37, "kind": "function", 
"displayName": "Property Placeholder", "group": "function", "label": 
"function", "required": false, "javaType": "String", "prefix": "${", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Lookup a property placeholder with the given key. If the 
key does not exist nor has a value, then an optional default value can be 
specified.", "suffix": "}" },
+    "ref:name": { "index": 38, "kind": "function", "displayName": "Bean By 
Id", "group": "function", "label": "function", "required": false, "javaType": 
"Object", "prefix": "${", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "description": "To look up a bean from the 
Registry with the given name.", "suffix": "}" },
+    "type:name.field": { "index": 39, "kind": "function", "displayName": "Java 
Field Value", "group": "function", "label": "function", "required": false, 
"javaType": "Object", "prefix": "${", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "description": "To refer to a type or 
field by its classname. To refer to a field, you can append .FIELD_NAME. For 
example, you can refer to the constant field from Exchange as: 
`org.apache.camel.Exchange.FILE_NAME`", " [...]
   }
 }
diff --git 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleConstants.java
 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleConstants.java
index d3fa167ef75..e53479c2b67 100644
--- 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleConstants.java
+++ 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleConstants.java
@@ -50,10 +50,10 @@ public final class SimpleConstants {
               javaType = "java.lang.Exception", label = "function")
     public static final String EXCEPTION = "exception";
     @Metadata(description = "The exception message (also from caught 
exceptions), is null if no exception present.",
-              javaType = "String", label = "function")
+              javaType = "String", label = "function", displayName = 
"Exception Message")
     public static final String EXCEPTION_MESSAGE = "exception.message";
     @Metadata(description = "The exception stacktrace (also from caught 
exceptions), is null if no exception present.",
-              javaType = "String", label = "function")
+              javaType = "String", label = "function", displayName = 
"Exception Stacktrace")
     public static final String EXCEPTION_STACKTRACE = "exception.stackTrace";
     @Metadata(description = "Returns the id of the current thread. Can be used 
for logging.", javaType = "long",
               label = "function")
@@ -97,33 +97,26 @@ public final class SimpleConstants {
     @Metadata(description = "Returns all the variables from the current 
Exchange in a Map", label = "function",
               javaType = "java.util.Map")
     public static final String VARIABLES = "variables";
-    @Metadata(description = "When working with JSon data, then this allows 
using the JQ language, for example, to extract data from the message body (in 
JSon format). This requires having camel-jq JAR on the classpath.",
-              label = "function", javaType = "Object")
-    public static final String JQ = "jq(exp)";
     @Metadata(description = "When working with JSon data, then this allows 
using the JQ language, for example, to extract data from the message body (in 
JSon format). This requires having camel-jq JAR on the classpath."
-                            + " For input, you can choose `header:key`, 
`exchangeProperty:key` or `variable:key` to use as input for the JSon payload 
instead of the message body.",
-              label = "function", javaType = "Object")
-    public static final String JQ_INPUT = "jq(input,exp)";
-    @Metadata(description = "When working with JSon data, then this allows 
using the JSonPath language, for example, to extract data from the message body 
(in JSon format). This requires having camel-jsonpath JAR on the classpath.",
-              label = "function", javaType = "Object")
-    public static final String JSONPATH = "jsonpath(exp)";
+                            + " For input (optional), you can choose 
`header:key`, `exchangeProperty:key` or `variable:key` to use as input for the 
JSon payload instead of the message body.",
+              label = "function", javaType = "Object", displayName = "JQ")
+    public static final String JQ = "jq(input,exp)";
     @Metadata(description = "When working with JSon data, then this allows 
using the JSonPath language, for example, to extract data from the message body 
(in JSon format). This requires having camel-jsonpath JAR on the classpath."
-                            + " For input, you can choose `header:key`, 
`exchangeProperty:key` or `variable:key` to use as input for the JSon payload 
instead of the message body.",
-              label = "function", javaType = "Object")
-    public static final String JSONPATH_INPUT = "jsonpath(input,exp)";
-    @Metadata(description = "When working with XML data, then this allows 
using the XPath language, for example, to extract data from the message body 
(in XML format). This requires having camel-xpath JAR on the classpath.",
-              label = "function", javaType = "Object")
-    public static final String XPATH = "xpath(exp)";
+                            + " For input (optional), you can choose 
`header:key`, `exchangeProperty:key` or `variable:key` to use as input for the 
JSon payload instead of the message body.",
+              label = "function", javaType = "Object", displayName = 
"JSonPath")
+    public static final String JSONPATH = "jsonpath(input,exp)";
     @Metadata(description = "When working with XML data, then this allows 
using the XPath language, for example, to extract data from the message body 
(in XML format). This requires having camel-xpath JAR on the classpath."
-                            + " For input, you can choose `header:key`, 
`exchangeProperty:key` or `variable:key` to use as input for the XML payload 
instead of the message body.",
-              label = "function", javaType = "Object")
-    public static final String XPATH_INPUT = "xpath(input,exp)";
-    @Metadata(description = "The JVM system property with the given name", 
label = "function", javaType = "Object")
+                            + " For input (optional), you can choose 
`header:key`, `exchangeProperty:key` or `variable:key` to use as input for the 
XML payload instead of the message body.",
+              label = "function", javaType = "Object", displayName = "XPath")
+    public static final String XPATH = "xpath(input,exp)";
+    @Metadata(description = "The JVM system property with the given name", 
label = "function", javaType = "Object",
+              displayName = "JVM System Property")
     public static final String SYS = "sys.name";
-    @Metadata(description = "The OS environment variable with the given name", 
label = "function", javaType = "Object")
+    @Metadata(description = "The OS environment variable with the given name", 
label = "function", javaType = "Object",
+              displayName = "OS Environment Variable")
     public static final String ENV = "env.name";
     @Metadata(description = "Converts the expression to a String, and attempts 
to pretty print if JSon or XML, otherwise the expression is returned as the 
String value.",
-              label = "function", javaType = "String")
+              label = "function", javaType = "String", displayName = "Pretty 
Print")
     public static final String PRETTY = "pretty(exp)";
     @Metadata(description = "Evaluates to a java.util.Date object."
                             + " Supported commands are: `now` for current 
timestamp,"
@@ -133,7 +126,7 @@ public final class SimpleConstants {
                             + " `exchangeProperty.xxx` to use the Long/Date 
object in the exchange property with the key xxx."
                             + " `file` for the last modified timestamp of the 
file (available with a File consumer)."
                             + " Command accepts offsets such as: `now-24h` or 
`header.xxx+1h` or even `now+1h30m-100`.",
-              label = "function", javaType = "java.util.Date")
+              label = "function", javaType = "java.util.Date", displayName = 
"Parse Date")
     public static final String DATE = "date(command)";
     @Metadata(description = "Formats the date to a String using the given date 
pattern, and with support for timezone."
                             + " Supported commands are: `now` for current 
timestamp,"
@@ -143,24 +136,25 @@ public final class SimpleConstants {
                             + " `exchangeProperty.xxx` to use the Long/Date 
object in the exchange property with the key xxx."
                             + " `file` for the last modified timestamp of the 
file (available with a File consumer)."
                             + " Command accepts offsets such as: `now-24h` or 
`header.xxx+1h` or even `now+1h30m-100`.",
-              label = "function", javaType = "String")
+              label = "function", javaType = "String", displayName = "Date 
Formatter")
     public static final String DATE_WITH_TIMEZONE = 
"date-with-timezone(command:timezone:pattern)";
     @Metadata(description = "Calls a Java bean."
                             + " The name of the bean can also refer to a class 
name using type prefix as follows `bean:type:com.foo.MyClass`."
                             + " If no method name is given then Camel will 
automatic attempt to find the best method to use.",
-              label = "function", javaType = "Object")
+              label = "function", javaType = "Object", displayName = "Call 
Java Bean")
     public static final String BEAN = "bean(name.method)";
     @Metadata(description = "Checks whether a property placeholder with the 
given key exists or not. The result can be negated by prefixing the key with !",
-              label = "function", javaType = "boolean")
+              label = "function", javaType = "boolean", displayName = 
"Property Placeholder Exists")
     public static final String PROPERTIES_EXIST = "propertiesExist:key";
     @Metadata(description = "Lookup a property placeholder with the given key. 
If the key does not exist nor has a value, then an optional default value can 
be specified.",
-              label = "function", javaType = "String")
+              label = "function", javaType = "String", displayName = "Property 
Placeholder")
     public static final String PROPERTIES = "properties:key:default";
-    @Metadata(description = "To look up a bean from the Registry with the 
given name.", label = "function", javaType = "Object")
+    @Metadata(description = "To look up a bean from the Registry with the 
given name.", label = "function", javaType = "Object",
+              displayName = "Bean By Id")
     public static final String REF = "ref:name";
     @Metadata(description = "To refer to a type or field by its classname. To 
refer to a field, you can append .FIELD_NAME. For example, you can refer to the"
                             + " constant field from Exchange as: 
`org.apache.camel.Exchange.FILE_NAME`",
-              label = "function", javaType = "Object")
+              label = "function", javaType = "Object", displayName = "Java 
Field Value")
     public static final String TYPE = "type:name.field";
 
 }
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 ab2c062d58b..9535b311415 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
@@ -315,7 +315,19 @@ public class PackageLanguageMojo extends 
AbstractGeneratorMojo {
         String displayName = metadata.displayName();
         // compute a display name if we don't have anything
         if (Strings.isNullOrEmpty(displayName)) {
-            displayName = Strings.asTitle(fun.getName());
+            displayName = fun.getName();
+            int pos = displayName.indexOf('(');
+            if (pos == -1) {
+                pos = displayName.indexOf(':');
+            }
+            if (pos == -1) {
+                pos = displayName.indexOf('.');
+            }
+            if (pos != -1) {
+                displayName = displayName.substring(0, pos);
+            }
+            displayName = displayName.replace('-', ' ');
+            displayName = Strings.asTitle(displayName);
         }
         fun.setDisplayName(displayName);
         fun.setJavaType(metadata.javaType());

Reply via email to