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

davsclaus pushed a commit to branch backport/25841-to-camel-4.22.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 575ab5cec5a68521d5d97b6338357de7d4087f54
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Aug 28 08:15:57 2026 +0200

    CAMEL-24479: camel-yaml-dsl - Restore additionalProperties:false for 
explicit expression/inline-hosted definitions
    
    Camel validate yaml (classic mode) silently accepted an expression: block
    with unknown properties or multiple mutually-exclusive language choices,
    because postProcessInheritance/postProcessComposition stripped
    additionalProperties:false from the shared ExpressionDefinition schema
    in place when inlining it. Cloning the definition before stripping
    keeps the explicit expression: {...} form closed while still allowing
    inline shorthand.
    
    Co-authored-by: Claude Sonnet 5 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../maven/dsl/yaml/GenerateYamlSchemaMojo.java     |  40 ++-
 .../dsl/yaml/validator/YamlValidatorTest.java      |  22 ++
 .../src/test/resources/CAMEL-24479.yaml            |  49 +++
 .../test/resources/inline-expression-object.yaml   |  26 ++
 .../generated/resources/schema/camelYamlDsl.json   | 347 +++++++++++++++++++--
 5 files changed, 451 insertions(+), 33 deletions(-)

diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java
index 2fd42f59817f..e00456472f88 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSchemaMojo.java
@@ -610,11 +610,25 @@ public class GenerateYamlSchemaMojo extends 
GenerateYamlSupportMojo {
      * @param inlineDefinitions    The name of the definitions that has inline 
option enabled
      */
     private void postProcessInheritance(Set<String> inheritedDefinitions, 
Set<String> inlineDefinitions) {
-        // additionalProperties=false prevents inheritance with 
allOf/anyOf/oneOf
-        // Remove it to be true by default
+        // additionalProperties=false prevents inheritance with 
allOf/anyOf/oneOf, so it needs to be removed
+        // to allow a type such as ExpressionDefinition to be inlined directly 
onto a host's own closed schema
+        // (e.g. filter: { simple: "...", steps: [...] } merges 
ExpressionDefinition's properties onto
+        // FilterDefinition). But the very same type is also used standalone, 
referenced by its own named
+        // property (e.g. the explicit filter: { expression: { simple: "..." } 
} form) - if additionalProperties
+        // is removed from the shared definition itself, that explicit, 
non-inlined usage loses its closedness
+        // too and silently accepts unknown/duplicate properties (CAMEL-24479).
+        //
+        // Clone the definition instead of mutating it in place: the open 
clone is only substituted into the
+        // bare $ref oneOf/anyOf branches used for inlining, while the 
original definition - referenced by
+        // every named property - stays closed.
+        Map<String, String> inlineClones = new HashMap<>();
         for (String inherited : inheritedDefinitions) {
-            ObjectNode node = definitions.withObject("/" + inherited);
-            node.remove("additionalProperties");
+            ObjectNode original = definitions.withObject("/" + inherited);
+            String cloneName = inherited + "$Inline";
+            ObjectNode clone = original.deepCopy();
+            clone.remove("additionalProperties");
+            definitions.set(cloneName, clone);
+            inlineClones.put(inherited, cloneName);
         }
 
         // Redeclare the inherited properties
@@ -630,9 +644,9 @@ public class GenerateYamlSchemaMojo extends 
GenerateYamlSupportMojo {
             if (temp.has("anyOf")) {
                 final var definition = temp;
                 StreamSupport.stream(temp.withArray("anyOf").spliterator(), 
false)
-                        .forEach(group -> postProcessComposition(name, 
definition, group, inheritedDefinitions));
+                        .forEach(group -> postProcessComposition(name, 
definition, group, inheritedDefinitions, inlineClones));
             } else {
-                postProcessComposition(name, temp, temp, inheritedDefinitions);
+                postProcessComposition(name, temp, temp, inheritedDefinitions, 
inlineClones);
             }
         });
     }
@@ -650,7 +664,8 @@ public class GenerateYamlSchemaMojo extends 
GenerateYamlSupportMojo {
     }
 
     private void postProcessComposition(
-            String name, JsonNode definition, JsonNode inherited, Set<String> 
inheritedDefinitions) {
+            String name, JsonNode definition, JsonNode inherited, Set<String> 
inheritedDefinitions,
+            Map<String, String> inlineClones) {
         ArrayNode composition = extractComposition(inherited);
         if (composition == null) {
             return;
@@ -674,7 +689,7 @@ public class GenerateYamlSchemaMojo extends 
GenerateYamlSupportMojo {
                         .filter(prop -> 
!definition.withObject("/properties").has(prop.getKey()))
                         .forEach(prop -> 
definition.withObject("/properties").putObject(prop.getKey()));
             }
-            postProcessComposition(name, definition, compositionEntry, 
inheritedDefinitions);
+            postProcessComposition(name, definition, compositionEntry, 
inheritedDefinitions, inlineClones);
 
             if (!compositionEntry.has("$ref")) {
                 continue;
@@ -683,8 +698,13 @@ public class GenerateYamlSchemaMojo extends 
GenerateYamlSupportMojo {
             if (!inheritedDefinitions.contains(parentName)) {
                 continue;
             }
-            JsonNode parent = definitions.withObject("/" + parentName);
-            postProcessComposition(parentName, definition, parent, 
inheritedDefinitions);
+            // This is a bare $ref composition branch (no wrapping 
"properties"), i.e. the type is being
+            // inlined directly onto the host's own schema - repoint it to the 
open clone so the host's
+            // sibling properties aren't rejected, without touching the 
original (still closed) definition.
+            String cloneName = inlineClones.get(parentName);
+            ((ObjectNode) compositionEntry).put("$ref", "#/items/definitions/" 
+ cloneName);
+            JsonNode parent = definitions.withObject("/" + cloneName);
+            postProcessComposition(parentName, definition, parent, 
inheritedDefinitions, inlineClones);
             parent
                     .withObject("/properties")
                     .properties()
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/java/org/apache/camel/dsl/yaml/validator/YamlValidatorTest.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/java/org/apache/camel/dsl/yaml/validator/YamlValidatorTest.java
index fb8ade0b0537..bc828f50c412 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/java/org/apache/camel/dsl/yaml/validator/YamlValidatorTest.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/java/org/apache/camel/dsl/yaml/validator/YamlValidatorTest.java
@@ -86,4 +86,26 @@ public class YamlValidatorTest {
         Assertions.assertFalse(report.isEmpty());
         Assertions.assertTrue(report.stream().anyMatch(error -> 
error.getMessage().contains("parserStep")));
     }
+
+    @Test
+    public void testInlineExpressionObjectFormStillValidates() throws 
Exception {
+        // Guards the fix for CAMEL-24479: restoring 
additionalProperties:false on ExpressionDefinition
+        // must not break the inline shorthand merge (filter: { groovy: {...} 
} without an "expression:"
+        // wrapper), which relies on ExpressionDefinition's properties being 
redeclared onto FilterDefinition.
+        var report = validator.validate(new 
File("src/test/resources/inline-expression-object.yaml"));
+        Assertions.assertTrue(report.isEmpty(), "Inline expression object form 
should still pass validation but got: "
+                                                + report.stream().map(e -> 
e.getMessage()).toList());
+    }
+
+    @Test
+    public void testUnknownPropertyInExpressionBlockFailsValidation() throws 
Exception {
+        // CAMEL-24479: an explicit "expression: {...}" wrapper block with an 
unknown property (hello) must
+        // be rejected. Before the fix, ExpressionDefinition's schema had lost 
its additionalProperties:false
+        // as a side effect of also supporting inline expression shorthands 
(e.g. filter: { simple: "..." }),
+        // so unknown/duplicate properties were silently accepted whenever any 
single valid language was present.
+        var report = validator.validate(new 
File("src/test/resources/CAMEL-24479.yaml"));
+        Assertions.assertFalse(report.isEmpty(), "Unknown property 'hello' in 
the expression block should be reported");
+        Assertions.assertTrue(report.stream().anyMatch(e -> 
e.getMessage().contains("hello")),
+                "Should identify the unknown property 'hello', got: " + 
report.stream().map(e -> e.getMessage()).toList());
+    }
 }
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/resources/CAMEL-24479.yaml
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/resources/CAMEL-24479.yaml
new file mode 100644
index 000000000000..a825b4324bf7
--- /dev/null
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/resources/CAMEL-24479.yaml
@@ -0,0 +1,49 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+- route:
+    id: route-from-jb
+    description: On message
+    nodePrefixId: route-from-jb
+    from:
+      id: from-e92e
+      description: From JB
+      uri: vertx
+      variableReceive: message
+      parameters:
+        address: EVENTS_FROM_JB
+        pubSub: true
+      steps:
+        - choice:
+            id: choice-5f68
+            when:
+              - id: when-8c1e
+                expression:
+                  groovy:
+                    id: simple-4df51
+                    expression: ${variable.message[messageType]} == "ACK"
+                  simple: {}
+                  hello: world2
+                steps:
+                  - setVariable:
+                      id: setVariable-7f68
+                      description: Set Ack
+                      name: ack
+                      expression:
+                        groovy:
+                          id: groovy-e040
+                          expression: '"hello"'
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/resources/inline-expression-object.yaml
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/resources/inline-expression-object.yaml
new file mode 100644
index 000000000000..8a1a57c41f2e
--- /dev/null
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/resources/inline-expression-object.yaml
@@ -0,0 +1,26 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+- route:
+    from:
+      uri: direct:start
+      steps:
+        - filter:
+            groovy:
+              expression: "true"
+            steps:
+              - to: mock:result
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
index 76a9d85c2cd9..2735998defd3 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/schema/camelYamlDsl.json
@@ -307,6 +307,7 @@
       },
       "org.apache.camel.dsl.yaml.deserializers.OutputAwareFromDefinition" : {
         "type" : "object",
+        "additionalProperties" : false,
         "properties" : {
           "description" : {
             "type" : "string"
@@ -1158,7 +1159,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -1307,7 +1308,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -1461,7 +1462,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -2131,7 +2132,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -2375,7 +2376,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -2942,7 +2943,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -3988,7 +3989,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -4446,7 +4447,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -4692,7 +4693,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -4807,7 +4808,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -5391,7 +5392,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -6132,7 +6133,7 @@
           "additionalProperties" : false,
           "anyOf" : [ {
             "oneOf" : [ {
-              "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+              "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
             }, {
               "not" : {
                 "anyOf" : [ {
@@ -6408,7 +6409,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -6540,7 +6541,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -6712,7 +6713,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -6887,7 +6888,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -7025,7 +7026,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -7200,7 +7201,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -7337,7 +7338,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -7845,7 +7846,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -8386,7 +8387,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -9046,7 +9047,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -9200,7 +9201,7 @@
         "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition$Inline"
           }, {
             "not" : {
               "anyOf" : [ {
@@ -13133,6 +13134,7 @@
       },
       "org.apache.camel.model.language.ExpressionDefinition" : {
         "type" : "object",
+        "additionalProperties" : false,
         "anyOf" : [ {
           "oneOf" : [ {
             "type" : "object",
@@ -17368,6 +17370,305 @@
             "$ref" : 
"#/items/definitions/org.apache.camel.model.validator.PredicateValidatorDefinition"
           }
         }
+      },
+      
"org.apache.camel.dsl.yaml.deserializers.OutputAwareFromDefinition$Inline" : {
+        "type" : "object",
+        "properties" : {
+          "description" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "note" : {
+            "type" : "string"
+          },
+          "parameters" : {
+            "type" : "object"
+          },
+          "steps" : {
+            "type" : "array",
+            "items" : {
+              "$ref" : 
"#/items/definitions/org.apache.camel.model.ProcessorDefinition"
+            }
+          },
+          "uri" : {
+            "type" : "string"
+          },
+          "variableReceive" : {
+            "type" : "string"
+          }
+        },
+        "required" : [ "steps", "uri" ]
+      },
+      "org.apache.camel.model.language.ExpressionDefinition$Inline" : {
+        "type" : "object",
+        "anyOf" : [ {
+          "oneOf" : [ {
+            "type" : "object",
+            "required" : [ "constant" ],
+            "properties" : {
+              "constant" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ConstantExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "csimple" ],
+            "properties" : {
+              "csimple" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.CSimpleExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "datasonnet" ],
+            "properties" : {
+              "datasonnet" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.DatasonnetExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "exchangeProperty" ],
+            "properties" : {
+              "exchangeProperty" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExchangePropertyExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "groovy" ],
+            "properties" : {
+              "groovy" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.GroovyExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "header" ],
+            "properties" : {
+              "header" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.HeaderExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "hl7terser" ],
+            "properties" : {
+              "hl7terser" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.Hl7TerserExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "jactl" ],
+            "properties" : {
+              "jactl" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.JactlExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "java" ],
+            "properties" : {
+              "java" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.JavaExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "joor" ],
+            "properties" : {
+              "joor" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.JoorExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "jq" ],
+            "properties" : {
+              "jq" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.JqExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "js" ],
+            "properties" : {
+              "js" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.JavaScriptExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "jsonpath" ],
+            "properties" : {
+              "jsonpath" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.JsonPathExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "language" ],
+            "properties" : {
+              "language" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.LanguageExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "method" ],
+            "properties" : {
+              "method" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.MethodCallExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "mvel" ],
+            "properties" : {
+              "mvel" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.MvelExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "ognl" ],
+            "properties" : {
+              "ognl" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.OgnlExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "python" ],
+            "properties" : {
+              "python" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.PythonExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "python3" ],
+            "properties" : {
+              "python3" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.Python3Expression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "quickjs" ],
+            "properties" : {
+              "quickjs" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.QuickjsExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "ref" ],
+            "properties" : {
+              "ref" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.RefExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "simple" ],
+            "properties" : {
+              "simple" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.SimpleExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "spel" ],
+            "properties" : {
+              "spel" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.SpELExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "tokenize" ],
+            "properties" : {
+              "tokenize" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.TokenizerExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "variable" ],
+            "properties" : {
+              "variable" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.VariableExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "wasm" ],
+            "properties" : {
+              "wasm" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.WasmExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "xpath" ],
+            "properties" : {
+              "xpath" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.XPathExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "xquery" ],
+            "properties" : {
+              "xquery" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.XQueryExpression"
+              }
+            }
+          }, {
+            "type" : "object",
+            "required" : [ "xtokenize" ],
+            "properties" : {
+              "xtokenize" : {
+                "$ref" : 
"#/items/definitions/org.apache.camel.model.language.XMLTokenizerExpression"
+              }
+            }
+          } ]
+        } ],
+        "properties" : {
+          "constant" : { },
+          "csimple" : { },
+          "datasonnet" : { },
+          "exchangeProperty" : { },
+          "groovy" : { },
+          "header" : { },
+          "hl7terser" : { },
+          "jactl" : { },
+          "java" : { },
+          "joor" : { },
+          "jq" : { },
+          "js" : { },
+          "jsonpath" : { },
+          "language" : { },
+          "method" : { },
+          "mvel" : { },
+          "ognl" : { },
+          "python" : { },
+          "python3" : { },
+          "quickjs" : { },
+          "ref" : { },
+          "simple" : { },
+          "spel" : { },
+          "tokenize" : { },
+          "variable" : { },
+          "wasm" : { },
+          "xpath" : { },
+          "xquery" : { },
+          "xtokenize" : { }
+        }
       }
     },
     "properties" : {

Reply via email to