You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2020/10/16 19:35:29 UTC

[camel] 02/10: CAMEL-15697: camel-joor - Camel expression langauge using jOOR runtime java compiled.

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

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

commit a7235a6e089b27033ccf8794acda9ce5adbe2f25
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Oct 16 13:35:17 2020 +0200

    CAMEL-15697: camel-joor - Camel expression langauge using jOOR runtime java compiled.
---
 bom/camel-bom/pom.xml                              |  5 ++
 camel-dependencies/pom.xml                         |  1 +
 .../org/apache/camel/catalog/docs.properties       |  1 +
 .../apache/camel/catalog/docs/joor-language.adoc   |  8 ++--
 .../org/apache/camel/catalog/languages.properties  |  1 +
 .../org/apache/camel/catalog/languages}/joor.json  |  4 +-
 .../org/apache/camel/catalog/models.properties     |  1 +
 .../org/apache/camel/catalog/models/aggregate.json |  8 ++--
 .../org/apache/camel/catalog/models/delay.json     |  2 +-
 .../apache/camel/catalog/models/dynamicRouter.json |  2 +-
 .../org/apache/camel/catalog/models/enrich.json    |  2 +-
 .../org/apache/camel/catalog/models/filter.json    |  2 +-
 .../camel/catalog/models/idempotentConsumer.json   |  2 +-
 .../org/apache/camel/catalog/models}/joor.json     |  4 +-
 .../org/apache/camel/catalog/models/loop.json      |  2 +-
 .../apache/camel/catalog/models/onException.json   |  6 +--
 .../apache/camel/catalog/models/pollEnrich.json    |  2 +-
 .../apache/camel/catalog/models/recipientList.json |  2 +-
 .../apache/camel/catalog/models/resequence.json    |  2 +-
 .../apache/camel/catalog/models/routingSlip.json   |  2 +-
 .../org/apache/camel/catalog/models/script.json    |  2 +-
 .../org/apache/camel/catalog/models/setBody.json   |  2 +-
 .../org/apache/camel/catalog/models/setHeader.json |  2 +-
 .../apache/camel/catalog/models/setProperty.json   |  2 +-
 .../org/apache/camel/catalog/models/sort.json      |  2 +-
 .../org/apache/camel/catalog/models/split.json     |  2 +-
 .../org/apache/camel/catalog/models/sticky.json    |  2 +-
 .../org/apache/camel/catalog/models/throttle.json  |  4 +-
 .../org/apache/camel/catalog/models/transform.json |  2 +-
 .../org/apache/camel/catalog/models/validate.json  |  2 +-
 .../org/apache/camel/catalog/models/when.json      |  2 +-
 .../catalog/models/whenSkipSendToEndpoint.json     |  2 +-
 .../org/apache/camel/catalog/models/wireTap.json   |  2 +-
 .../apache/camel/catalog/schemas/camel-spring.xsd  | 55 ++++++++++++++++++++++
 .../org/apache/camel/language/joor/joor.json       |  4 +-
 .../camel-joor/src/main/docs/joor-language.adoc    |  8 ++--
 .../org/apache/camel/model/language/joor.json      |  4 +-
 docs/components/modules/languages/nav.adoc         |  1 +
 .../modules/languages/pages/joor-language.adoc     |  8 ++--
 39 files changed, 116 insertions(+), 51 deletions(-)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index b0bee86..50a6022 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1069,6 +1069,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
+        <artifactId>camel-joor</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
         <artifactId>camel-jpa</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index 8e7b3ec..fcc8d3e 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -355,6 +355,7 @@
     <jolt-version>0.1.1</jolt-version>
     <jool-version>0.9.12</jool-version>
     <jooq-version>3.13.4</jooq-version>
+    <joor-version>0.9.13</joor-version>
     <jose4j-version>0.6.4</jose4j-version>
     <jota-version>1.0.0-beta7</jota-version>
     <jsch-version>0.1.55</jsch-version>
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
index 436db48..b7c1cc5 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs.properties
@@ -263,6 +263,7 @@ jms-component
 jmx-component
 jolt-component
 jooq-component
+joor-language
 jpa-component
 jslt-component
 json-fastjson-dataformat
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/joor-language.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/joor-language.adoc
index 9f35f0f..573bfea 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/joor-language.adoc
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/joor-language.adoc
@@ -1,8 +1,8 @@
 [[joor-language]]
-= JOOR Language
-:docTitle: JOOR
+= jOOR Language
+:docTitle: jOOR
 :artifactId: camel-joor
-:description: Evaluate a JOOR (Java compiled) expression Language against the Camel Exchange.
+:description: Evaluate a jOOR (Java compiled once at runtime) expression language.
 :since: 3.7
 :supportLevel: Preview
 include::{cq-version}@camel-quarkus:ROOT:partial$reference/languages/joor.adoc[]
@@ -20,7 +20,7 @@ NOTE: Java 8 is not supported. This requires Java 11 or 14.
 
 
 // language options: START
-The JOOR language supports 3 options, which are listed below.
+The jOOR language supports 3 options, which are listed below.
 
 
 
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages.properties
index 77ca6ca..bdfae0c 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages.properties
@@ -5,6 +5,7 @@ file
 groovy
 header
 hl7terser
+joor
 jsonpath
 mvel
 ognl
diff --git a/components/camel-joor/src/generated/resources/org/apache/camel/language/joor/joor.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages/joor.json
similarity index 93%
copy from components/camel-joor/src/generated/resources/org/apache/camel/language/joor/joor.json
copy to catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages/joor.json
index b7439d3..3a64a45 100644
--- a/components/camel-joor/src/generated/resources/org/apache/camel/language/joor/joor.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/languages/joor.json
@@ -2,8 +2,8 @@
   "language": {
     "kind": "language",
     "name": "joor",
-    "title": "JOOR",
-    "description": "Evaluate a JOOR (Java compiled) expression Language against the Camel Exchange.",
+    "title": "jOOR",
+    "description": "Evaluate a jOOR (Java compiled once at runtime) expression language.",
     "deprecated": false,
     "firstVersion": "3.7.0",
     "label": "language",
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
index 92f7c9d..c418993 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
@@ -76,6 +76,7 @@ interceptFrom
 interceptSendToEndpoint
 jacksonxml
 jaxb
+joor
 json
 jsonApi
 jsonpath
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/aggregate.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/aggregate.json
index 22ffe1b..d257c8d 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/aggregate.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/aggregate.json
@@ -11,10 +11,10 @@
     "output": false
   },
   "properties": {
-    "correlationExpression": { "kind": "expression", "displayName": "Correlation Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "The expression used to calculate the corre [...]
-    "completionPredicate": { "kind": "expression", "displayName": "Completion Predicate", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "A Predicate to indicate  [...]
-    "completionTimeoutExpression": { "kind": "expression", "displayName": "Completion Timeout Expression", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Time in millis that an aggre [...]
-    "completionSizeExpression": { "kind": "expression", "displayName": "Completion Size Expression", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Number of messages aggregated befo [...]
+    "correlationExpression": { "kind": "expression", "displayName": "Correlation Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "The expression used to calculate t [...]
+    "completionPredicate": { "kind": "expression", "displayName": "Completion Predicate", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "A Predicate to i [...]
+    "completionTimeoutExpression": { "kind": "expression", "displayName": "Completion Timeout Expression", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Time in millis that  [...]
+    "completionSizeExpression": { "kind": "expression", "displayName": "Completion Size Expression", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Number of messages aggrega [...]
     "optimisticLockRetryPolicy": { "kind": "element", "displayName": "Optimistic Lock Retry Policy", "required": false, "type": "object", "javaType": "org.apache.camel.model.OptimisticLockRetryPolicyDefinition", "deprecated": false, "secret": false, "description": "Allows to configure retry settings when using optimistic locking." },
     "parallelProcessing": { "kind": "attribute", "displayName": "Parallel Processing", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "When aggregated are completed they are being send out of the aggregator. This option indicates whether or not Camel should use a thread pool with multiple threads for concurrency. If no custom thread pool has been specified then Camel creates a default pool [...]
     "optimisticLocking": { "kind": "attribute", "displayName": "Optimistic Locking", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Turns on using optimistic locking, which requires the aggregationRepository being used, is supporting this by implementing org.apache.camel.spi.OptimisticLockingAggregationRepository ." },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/delay.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/delay.json
index ce12b2a..6e93aad 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/delay.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/delay.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to define how long time to wait (in millis)" },
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to define how long time to wait (in millis)" },
     "executorServiceRef": { "kind": "attribute", "displayName": "Executor Service Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Refers to a custom Thread Pool if asyncDelay has been enabled." },
     "asyncDelayed": { "kind": "attribute", "displayName": "Async Delayed", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Enables asynchronous delay which means the thread will not block while delaying." },
     "callerRunsWhenRejected": { "kind": "attribute", "displayName": "Caller Runs When Rejected", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Whether or not the caller should run the task when it was rejected by the thread pool. Is by default true" },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dynamicRouter.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dynamicRouter.json
index c0cbdac..cc2b4ec 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dynamicRouter.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dynamicRouter.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to call that returns the endpoint(s) to route to in the [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to call that returns the endpoint(s) to route t [...]
     "uriDelimiter": { "kind": "attribute", "displayName": "Uri Delimiter", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "defaultValue": ",", "description": "Sets the uri delimiter to use" },
     "ignoreInvalidEndpoints": { "kind": "attribute", "displayName": "Ignore Invalid Endpoints", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Ignore the invalidate endpoint exception when try to create a producer with that endpoint" },
     "cacheSize": { "kind": "attribute", "displayName": "Cache Size", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "description": "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this dynamic router, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then [...]
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/enrich.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/enrich.json
index 554b840..733f48c 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/enrich.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/enrich.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression that computes the endpoint uri to use as the resource e [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression that computes the endpoint uri to use as the re [...]
     "strategyRef": { "kind": "attribute", "displayName": "Strategy Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Refers to an AggregationStrategy to be used to merge the reply from the external service, into a single outgoing message. By default Camel will use the reply from the external service as outgoing message." },
     "strategyMethodName": { "kind": "attribute", "displayName": "Strategy Method Name", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy." },
     "strategyMethodAllowNull": { "kind": "attribute", "displayName": "Strategy Method Allow Null", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy." },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/filter.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/filter.json
index 95f2c5e..d861e32 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/filter.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/filter.json
@@ -11,7 +11,7 @@
     "output": true
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Expression to determine if the message should [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Expression to determine if the messag [...]
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
   }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/idempotentConsumer.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/idempotentConsumer.json
index c3c979f..71decdb 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/idempotentConsumer.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/idempotentConsumer.json
@@ -11,7 +11,7 @@
     "output": true
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression used to calculate the correlation key to use for duplic [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression used to calculate the correlation key to use fo [...]
     "messageIdRepositoryRef": { "kind": "attribute", "displayName": "Message Id Repository Ref", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the reference name of the message id repository" },
     "eager": { "kind": "attribute", "displayName": "Eager", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Sets whether to eagerly add the key to the idempotent repository or wait until the exchange is complete. Eager is default enabled." },
     "completionEager": { "kind": "attribute", "displayName": "Completion Eager", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets whether to complete the idempotent consumer eager or when the exchange is done. If this option is true to complete eager, then the idempotent consumer will trigger its completion when the exchange reached the end of the block of the idempotent consumer pattern. So if the exchange is [...]
diff --git a/core/camel-core-engine/src/generated/resources/org/apache/camel/model/language/joor.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/joor.json
similarity index 92%
copy from core/camel-core-engine/src/generated/resources/org/apache/camel/model/language/joor.json
copy to catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/joor.json
index 044bd16..4970e2c 100644
--- a/core/camel-core-engine/src/generated/resources/org/apache/camel/model/language/joor.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/joor.json
@@ -2,8 +2,8 @@
   "model": {
     "kind": "model",
     "name": "joor",
-    "title": "JOOR",
-    "description": "Evaluate a JOOR (Java compiled) expression Language against the Camel Exchange.",
+    "title": "jOOR",
+    "description": "Evaluate a jOOR (Java compiled once at runtime) expression language.",
     "deprecated": false,
     "firstVersion": "3.7.0",
     "label": "language",
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loop.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loop.json
index ad2efad..e882ecc 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loop.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loop.json
@@ -11,7 +11,7 @@
     "output": true
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to define how many times we should loop. Notice the exp [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to define how many times we should loop. Notice [...]
     "copy": { "kind": "attribute", "displayName": "Copy", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "If the copy attribute is true, a copy of the input Exchange is used for each iteration. That means each iteration will start from a copy of the same message. By default loop will loop the same exchange all over, so each iteration may have different message content." },
     "doWhile": { "kind": "attribute", "displayName": "Do While", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Enables the while loop that loops until the predicate evaluates to false or null." },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onException.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onException.json
index 2861c77..a6f3ddb 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onException.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/onException.json
@@ -13,11 +13,11 @@
   "properties": {
     "exception": { "kind": "element", "displayName": "Exception", "required": true, "type": "array", "javaType": "java.util.List<java.lang.String>", "deprecated": false, "secret": false, "description": "A set of exceptions to react upon." },
     "onWhen": { "kind": "element", "displayName": "On When", "required": false, "type": "object", "javaType": "org.apache.camel.model.WhenDefinition", "deprecated": false, "secret": false, "asPredicate": true, "description": "Sets an additional predicate that should be true before the onException is triggered. To be used for fine grained controlling whether a thrown exception should be intercepted by this exception type or not." },
-    "retryWhile": { "kind": "expression", "displayName": "Retry While", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Sets the retry while predicate. Will conti [...]
+    "retryWhile": { "kind": "expression", "displayName": "Retry While", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Sets the retry while predicate. Wi [...]
     "redeliveryPolicy": { "kind": "element", "displayName": "Redelivery Policy", "required": false, "type": "object", "javaType": "org.apache.camel.model.RedeliveryPolicyDefinition", "deprecated": false, "secret": false, "description": "Used for configuring redelivery options" },
     "redeliveryPolicyRef": { "kind": "attribute", "displayName": "Redelivery Policy Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets a reference to a RedeliveryPolicy to lookup in the org.apache.camel.spi.Registry to be used." },
-    "handled": { "kind": "expression", "displayName": "Handled", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Sets whether the exchange should be marked as han [...]
-    "continued": { "kind": "expression", "displayName": "Continued", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Sets whether the exchange should handle and c [...]
+    "handled": { "kind": "expression", "displayName": "Handled", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Sets whether the exchange should be marke [...]
+    "continued": { "kind": "expression", "displayName": "Continued", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Sets whether the exchange should hand [...]
     "onRedeliveryRef": { "kind": "attribute", "displayName": "On Redelivery Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered." },
     "onExceptionOccurredRef": { "kind": "attribute", "displayName": "On Exception Occurred Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored." },
     "useOriginalMessage": { "kind": "attribute", "displayName": "Use Original Message", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is d [...]
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pollEnrich.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pollEnrich.json
index 867b3e0..82d3e5f 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pollEnrich.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/pollEnrich.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression that computes the endpoint uri to use as the resource e [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression that computes the endpoint uri to use as the re [...]
     "timeout": { "kind": "attribute", "displayName": "Timeout", "required": false, "type": "duration", "javaType": "java.lang.String", "deprecated": false, "secret": false, "defaultValue": "-1", "description": "Timeout in millis when polling from the external service. The timeout has influence about the poll enrich behavior. It basically operations in three different modes: negative value - Waits until a message is available and then returns it. Warning that this method could block indef [...]
     "strategyRef": { "kind": "attribute", "displayName": "Strategy Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Refers to an AggregationStrategy to be used to merge the reply from the external service, into a single outgoing message. By default Camel will use the reply from the external service as outgoing message." },
     "strategyMethodName": { "kind": "attribute", "displayName": "Strategy Method Name", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy." },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/recipientList.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/recipientList.json
index ba4da08..9d284b3 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/recipientList.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/recipientList.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression that returns which endpoints (url) to send the message  [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression that returns which endpoints (url) to send the  [...]
     "delimiter": { "kind": "attribute", "displayName": "Delimiter", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "defaultValue": ",", "description": "Delimiter used if the Expression returned multiple endpoints. Can be turned off using the value false. The default value is ," },
     "parallelProcessing": { "kind": "attribute", "displayName": "Parallel Processing", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "If enabled then sending messages to the recipients occurs concurrently. Note the caller thread will still wait until all messages has been fully processed, before it continues. Its only the sending and processing the replies from the recipients which happen [...]
     "strategyRef": { "kind": "attribute", "displayName": "Strategy Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets a reference to the AggregationStrategy to be used to assemble the replies from the recipients, into a single outgoing message from the RecipientList. By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy" },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/resequence.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/resequence.json
index 30bf7ef..300eae1 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/resequence.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/resequence.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to use for re-ordering the messages, such as a header w [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to use for re-ordering the messages, such as a  [...]
     "resequencerConfig": { "kind": "element", "displayName": "Resequencer Config", "required": false, "type": "object", "javaType": "org.apache.camel.model.config.ResequencerConfig", "oneOf": [ "batch-config", "stream-config" ], "deprecated": false, "secret": false, "description": "To configure the resequencer in using either batch or stream configuration. Will by default use batch configuration." },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/routingSlip.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/routingSlip.json
index f316ddc..4a550f5 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/routingSlip.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/routingSlip.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to define the routing slip, which defines which endpoin [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to define the routing slip, which defines which [...]
     "uriDelimiter": { "kind": "attribute", "displayName": "Uri Delimiter", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "defaultValue": ",", "description": "Sets the uri delimiter to use" },
     "ignoreInvalidEndpoints": { "kind": "attribute", "displayName": "Ignore Invalid Endpoints", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Ignore the invalidate endpoint exception when try to create a producer with that endpoint" },
     "cacheSize": { "kind": "attribute", "displayName": "Cache Size", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": false, "description": "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this routing slip, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then i [...]
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/script.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/script.json
index c8a051c..4f820c4 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/script.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/script.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to return the transformed message body (the new message [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to return the transformed message body (the new [...]
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
   }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setBody.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setBody.json
index ebf7a8e..5366aeb 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setBody.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setBody.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression that returns the new body to use" },
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression that returns the new body to use" },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
   }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setHeader.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setHeader.json
index b570632..d96cd5f 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setHeader.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setHeader.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to return the value of the header" },
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to return the value of the header" },
     "name": { "kind": "attribute", "displayName": "Name", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Name of message header to set a new value The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used." },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setProperty.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setProperty.json
index 6b97595..bdd6c7f 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setProperty.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/setProperty.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to return the value of the message exchange property" },
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to return the value of the message exchange pro [...]
     "name": { "kind": "attribute", "displayName": "Name", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Name of exchange property to set a new value. The simple language can be used to define a dynamic evaluated exchange property name to be used. Otherwise a constant name will be used." },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/sort.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/sort.json
index bcc7c87..8f95288 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/sort.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/sort.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Optional expression to sort by something else than the message body" },
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Optional expression to sort by something else than the mes [...]
     "comparatorRef": { "kind": "attribute", "displayName": "Comparator Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets a reference to lookup for the comparator to use for sorting" },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json
index 01e5a39..e48b56e 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json
@@ -11,7 +11,7 @@
     "output": true
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression of how to split the message body, such as as-is, using  [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression of how to split the message body, such as as-is [...]
     "parallelProcessing": { "kind": "attribute", "displayName": "Parallel Processing", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "If enabled then processing each splitted messages occurs concurrently. Note the caller thread will still wait until all messages has been fully processed, before it continues. Its only processing the sub messages from the splitter which happens concurrently." },
     "strategyRef": { "kind": "attribute", "displayName": "Strategy Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets a reference to the AggregationStrategy to be used to assemble the replies from the splitted messages, into a single outgoing message from the Splitter. By default Camel will use the original incoming message to the splitter (leave it unchanged). You can also use a POJO as the AggregationStr [...]
     "strategyMethodName": { "kind": "attribute", "displayName": "Strategy Method Name", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy." },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/sticky.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/sticky.json
index 151d15c..5696436 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/sticky.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/sticky.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "correlationExpression": { "kind": "expression", "displayName": "Correlation Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "The correlation expression to use to calcu [...]
+    "correlationExpression": { "kind": "expression", "displayName": "Correlation Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "The correlation expression to use  [...]
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "The id of this node" }
   }
 }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/throttle.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/throttle.json
index 629ae7b..52d19e3 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/throttle.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/throttle.json
@@ -11,8 +11,8 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to configure the maximum number of messages to throttle [...]
-    "correlationExpression": { "kind": "expression", "displayName": "Correlation Expression", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "The expression used to calculate the corr [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to configure the maximum number of messages to  [...]
+    "correlationExpression": { "kind": "expression", "displayName": "Correlation Expression", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "The expression used to calculate  [...]
     "executorServiceRef": { "kind": "attribute", "displayName": "Executor Service Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "To use a custom thread pool (ScheduledExecutorService) by the throttler." },
     "timePeriodMillis": { "kind": "attribute", "displayName": "Time Period Millis", "required": false, "type": "duration", "javaType": "java.lang.String", "deprecated": false, "secret": false, "defaultValue": "1000", "description": "Sets the time period during which the maximum request count is valid for" },
     "asyncDelayed": { "kind": "attribute", "displayName": "Async Delayed", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": false, "description": "Enables asynchronous delay which means the thread will not block while delaying." },
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/transform.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/transform.json
index 6344aef..8e21828 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/transform.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/transform.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to return the transformed message body (the new message [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Expression to return the transformed message body (the new [...]
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
   }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/validate.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/validate.json
index 0bd1d25..a10c87a 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/validate.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/validate.json
@@ -11,7 +11,7 @@
     "output": false
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Expression to use for validation as a predica [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Expression to use for validation as a [...]
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
   }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/when.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/when.json
index 78877f2..6694725 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/when.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/when.json
@@ -11,7 +11,7 @@
     "output": true
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Expression used as the predicate to evaluate  [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Expression used as the predicate to e [...]
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
   }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/whenSkipSendToEndpoint.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/whenSkipSendToEndpoint.json
index 760bd5e..19f8a08 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/whenSkipSendToEndpoint.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/whenSkipSendToEndpoint.json
@@ -11,7 +11,7 @@
     "output": true
   },
   "properties": {
-    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Expression used as the predicate to evaluate  [...]
+    "expression": { "kind": "expression", "displayName": "Expression", "required": true, "type": "object", "javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "asPredicate": true, "description": "Expression used as the predicate to e [...]
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Sets the id of this node" },
     "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "secret": false, "description": "Sets the description of this node" }
   }
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/wireTap.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/wireTap.json
index 5877373..2873277 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/wireTap.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/wireTap.json
@@ -12,7 +12,7 @@
   },
   "properties": {
     "processorRef": { "kind": "attribute", "displayName": "Processor Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Reference to a Processor to use for creating a new body as the message to use for wire tapping" },
-    "body": { "kind": "expression", "displayName": "Body", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Uses the expression for creating a new body as the message to use for wire t [...]
+    "body": { "kind": "expression", "displayName": "Body", "required": false, "type": "object", "javaType": "org.apache.camel.model.ExpressionSubElementDefinition", "oneOf": [ "constant", "exchangeProperty", "groovy", "header", "hl7terser", "joor", "jsonpath", "language", "method", "mvel", "ognl", "ref", "simple", "spel", "tokenize", "xpath", "xquery", "xtokenize" ], "deprecated": false, "secret": false, "description": "Uses the expression for creating a new body as the message to use fo [...]
     "executorServiceRef": { "kind": "attribute", "displayName": "Executor Service Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "description": "Uses a custom thread pool" },
     "copy": { "kind": "attribute", "displayName": "Copy", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Uses a copy of the original exchange" },
     "dynamicUri": { "kind": "attribute", "displayName": "Dynamic Uri", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "secret": false, "defaultValue": true, "description": "Whether the uri is dynamic or static. If the uri is dynamic then the simple language is used to evaluate a dynamic uri to use as the wire-tap destination, for each incoming message. This works similar to how the toD EIP pattern works. If static then the uri is used as-is as [...]
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
index 28d6a73..15f6288 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
@@ -667,6 +667,14 @@ JMX configuration.
     </xs:annotation>
   </xs:element>
 
+  <xs:element name="joor" type="tns:joorExpression">
+    <xs:annotation>
+      <xs:documentation xml:lang="en"><![CDATA[
+Evaluate a jOOR (Java compiled once at runtime) expression language.
+      ]]></xs:documentation>
+    </xs:annotation>
+  </xs:element>
+
   <xs:element name="json" type="tns:jsonDataFormat">
     <xs:annotation>
       <xs:documentation xml:lang="en"><![CDATA[
@@ -3172,6 +3180,7 @@ external sources to control this aggregator.
       <xs:element ref="tns:groovy"/>
       <xs:element ref="tns:header"/>
       <xs:element ref="tns:hl7terser"/>
+      <xs:element ref="tns:joor"/>
       <xs:element ref="tns:jsonpath"/>
       <xs:element ref="tns:language"/>
       <xs:element ref="tns:method"/>
@@ -3401,6 +3410,7 @@ implementation. Default value: Singleton
             <xs:element ref="tns:groovy"/>
             <xs:element ref="tns:header"/>
             <xs:element ref="tns:hl7terser"/>
+            <xs:element ref="tns:joor"/>
             <xs:element ref="tns:jsonpath"/>
             <xs:element ref="tns:language"/>
             <xs:element ref="tns:method"/>
@@ -4368,6 +4378,7 @@ data formats marshalling to JSON etc. Default value: false
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -4418,6 +4429,7 @@ pool. Is by default true. Default value: true
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -4480,6 +4492,7 @@ producers.
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -4583,6 +4596,7 @@ endpoint. Default value: false
             <xs:element ref="tns:groovy"/>
             <xs:element ref="tns:header"/>
             <xs:element ref="tns:hl7terser"/>
+            <xs:element ref="tns:joor"/>
             <xs:element ref="tns:jsonpath"/>
             <xs:element ref="tns:language"/>
             <xs:element ref="tns:method"/>
@@ -4794,6 +4808,7 @@ Global option value.
             <xs:element ref="tns:groovy"/>
             <xs:element ref="tns:header"/>
             <xs:element ref="tns:hl7terser"/>
+            <xs:element ref="tns:joor"/>
             <xs:element ref="tns:jsonpath"/>
             <xs:element ref="tns:language"/>
             <xs:element ref="tns:method"/>
@@ -5449,6 +5464,7 @@ To refer to a custom logger instance to lookup from the registry.
             <xs:element ref="tns:groovy"/>
             <xs:element ref="tns:header"/>
             <xs:element ref="tns:hl7terser"/>
+            <xs:element ref="tns:joor"/>
             <xs:element ref="tns:jsonpath"/>
             <xs:element ref="tns:language"/>
             <xs:element ref="tns:method"/>
@@ -9013,6 +9029,7 @@ Sets a reference to use for lookup the policy in the registry.
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -9142,6 +9159,7 @@ Reference to the Processor to lookup in the registry to use.
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -9419,6 +9437,7 @@ Name of property to remove.
             <xs:element ref="tns:groovy"/>
             <xs:element ref="tns:header"/>
             <xs:element ref="tns:hl7terser"/>
+            <xs:element ref="tns:joor"/>
             <xs:element ref="tns:jsonpath"/>
             <xs:element ref="tns:language"/>
             <xs:element ref="tns:method"/>
@@ -9918,6 +9937,7 @@ Parameter description.
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -10107,6 +10127,7 @@ use.
       <xs:element ref="tns:groovy"/>
       <xs:element ref="tns:header"/>
       <xs:element ref="tns:hl7terser"/>
+      <xs:element ref="tns:joor"/>
       <xs:element ref="tns:jsonpath"/>
       <xs:element ref="tns:language"/>
       <xs:element ref="tns:method"/>
@@ -10165,6 +10186,7 @@ Default value: SECONDS
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -10192,6 +10214,7 @@ Default value: SECONDS
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -10235,6 +10258,7 @@ forward.
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -10271,6 +10295,7 @@ will be used.
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -10307,6 +10332,7 @@ constant name will be used.
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -10342,6 +10368,7 @@ Sets a reference to lookup for the comparator to use for sorting.
             <xs:element ref="tns:groovy"/>
             <xs:element ref="tns:header"/>
             <xs:element ref="tns:hl7terser"/>
+            <xs:element ref="tns:joor"/>
             <xs:element ref="tns:jsonpath"/>
             <xs:element ref="tns:language"/>
             <xs:element ref="tns:method"/>
@@ -10806,6 +10833,7 @@ rejection handler. Is by default true. Default value: true
             <xs:element ref="tns:groovy"/>
             <xs:element ref="tns:header"/>
             <xs:element ref="tns:hl7terser"/>
+            <xs:element ref="tns:joor"/>
             <xs:element ref="tns:jsonpath"/>
             <xs:element ref="tns:language"/>
             <xs:element ref="tns:method"/>
@@ -11068,6 +11096,7 @@ Sets a reference to use for lookup the policy in the registry.
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -11223,6 +11252,7 @@ Sets a reference to use for lookup the policy in the registry.
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
@@ -11956,6 +11986,7 @@ Set the base path to store in ZK.
             <xs:element ref="tns:groovy"/>
             <xs:element ref="tns:header"/>
             <xs:element ref="tns:hl7terser"/>
+            <xs:element ref="tns:joor"/>
             <xs:element ref="tns:jsonpath"/>
             <xs:element ref="tns:language"/>
             <xs:element ref="tns:method"/>
@@ -12182,6 +12213,29 @@ Set a reference to a custom Expression to use.
     </xs:simpleContent>
   </xs:complexType>
 
+  <xs:complexType name="joorExpression">
+    <xs:simpleContent>
+      <xs:extension base="tns:expression">
+        <xs:attribute name="resultType" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en"><![CDATA[
+Sets the class name of the result type (type from output).
+            ]]></xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="singleQuotes" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en"><![CDATA[
+Whether single quotes can be used as replacement for double quotes. This is
+convenient when you need to work with strings inside strings. Default value:
+true
+            ]]></xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:simpleContent>
+  </xs:complexType>
+
   <xs:complexType name="jsonPathExpression">
     <xs:simpleContent>
       <xs:extension base="tns:expression">
@@ -13571,6 +13625,7 @@ password, application or accessCode.
           <xs:element ref="tns:groovy"/>
           <xs:element ref="tns:header"/>
           <xs:element ref="tns:hl7terser"/>
+          <xs:element ref="tns:joor"/>
           <xs:element ref="tns:jsonpath"/>
           <xs:element ref="tns:language"/>
           <xs:element ref="tns:method"/>
diff --git a/components/camel-joor/src/generated/resources/org/apache/camel/language/joor/joor.json b/components/camel-joor/src/generated/resources/org/apache/camel/language/joor/joor.json
index b7439d3..3a64a45 100644
--- a/components/camel-joor/src/generated/resources/org/apache/camel/language/joor/joor.json
+++ b/components/camel-joor/src/generated/resources/org/apache/camel/language/joor/joor.json
@@ -2,8 +2,8 @@
   "language": {
     "kind": "language",
     "name": "joor",
-    "title": "JOOR",
-    "description": "Evaluate a JOOR (Java compiled) expression Language against the Camel Exchange.",
+    "title": "jOOR",
+    "description": "Evaluate a jOOR (Java compiled once at runtime) expression language.",
     "deprecated": false,
     "firstVersion": "3.7.0",
     "label": "language",
diff --git a/components/camel-joor/src/main/docs/joor-language.adoc b/components/camel-joor/src/main/docs/joor-language.adoc
index 9f35f0f..573bfea 100644
--- a/components/camel-joor/src/main/docs/joor-language.adoc
+++ b/components/camel-joor/src/main/docs/joor-language.adoc
@@ -1,8 +1,8 @@
 [[joor-language]]
-= JOOR Language
-:docTitle: JOOR
+= jOOR Language
+:docTitle: jOOR
 :artifactId: camel-joor
-:description: Evaluate a JOOR (Java compiled) expression Language against the Camel Exchange.
+:description: Evaluate a jOOR (Java compiled once at runtime) expression language.
 :since: 3.7
 :supportLevel: Preview
 include::{cq-version}@camel-quarkus:ROOT:partial$reference/languages/joor.adoc[]
@@ -20,7 +20,7 @@ NOTE: Java 8 is not supported. This requires Java 11 or 14.
 
 
 // language options: START
-The JOOR language supports 3 options, which are listed below.
+The jOOR language supports 3 options, which are listed below.
 
 
 
diff --git a/core/camel-core-engine/src/generated/resources/org/apache/camel/model/language/joor.json b/core/camel-core-engine/src/generated/resources/org/apache/camel/model/language/joor.json
index 044bd16..4970e2c 100644
--- a/core/camel-core-engine/src/generated/resources/org/apache/camel/model/language/joor.json
+++ b/core/camel-core-engine/src/generated/resources/org/apache/camel/model/language/joor.json
@@ -2,8 +2,8 @@
   "model": {
     "kind": "model",
     "name": "joor",
-    "title": "JOOR",
-    "description": "Evaluate a JOOR (Java compiled) expression Language against the Camel Exchange.",
+    "title": "jOOR",
+    "description": "Evaluate a jOOR (Java compiled once at runtime) expression language.",
     "deprecated": false,
     "firstVersion": "3.7.0",
     "label": "language",
diff --git a/docs/components/modules/languages/nav.adoc b/docs/components/modules/languages/nav.adoc
index 375ec1d..91fa306 100644
--- a/docs/components/modules/languages/nav.adoc
+++ b/docs/components/modules/languages/nav.adoc
@@ -9,6 +9,7 @@
 ** xref:languages:groovy-language.adoc[Groovy]
 ** xref:languages:header-language.adoc[Header]
 ** xref:languages:hl7terser-language.adoc[HL7 Terser]
+** xref:languages:joor-language.adoc[jOOR]
 ** xref:languages:jsonpath-language.adoc[JsonPath]
 ** xref:languages:mvel-language.adoc[MVEL]
 ** xref:languages:ognl-language.adoc[OGNL]
diff --git a/docs/components/modules/languages/pages/joor-language.adoc b/docs/components/modules/languages/pages/joor-language.adoc
index b36e9e8..4a98779 100644
--- a/docs/components/modules/languages/pages/joor-language.adoc
+++ b/docs/components/modules/languages/pages/joor-language.adoc
@@ -1,10 +1,10 @@
 [[joor-language]]
-= JOOR Language
+= jOOR Language
 //THIS FILE IS COPIED: EDIT THE SOURCE FILE:
 :page-source: components/camel-joor/src/main/docs/joor-language.adoc
-:docTitle: JOOR
+:docTitle: jOOR
 :artifactId: camel-joor
-:description: Evaluate a JOOR (Java compiled) expression Language against the Camel Exchange.
+:description: Evaluate a jOOR (Java compiled once at runtime) expression language.
 :since: 3.7
 :supportLevel: Preview
 include::{cq-version}@camel-quarkus:ROOT:partial$reference/languages/joor.adoc[]
@@ -22,7 +22,7 @@ NOTE: Java 8 is not supported. This requires Java 11 or 14.
 
 
 // language options: START
-The JOOR language supports 3 options, which are listed below.
+The jOOR language supports 3 options, which are listed below.