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

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

commit 478f17f8fac6d7899e2f1c6ce858bed087758d27
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu May 15 09:27:34 2025 +0200

    CAMEL-22064: camel-xml-io - Generate XSD schema
---
 .../org/apache/camel/catalog/models.properties     |   7 +
 .../camel/catalog/models/customTransformer.json    |  22 ++
 .../camel/catalog/models/customValidator.json      |  19 ++
 .../catalog/models/dataFormatTransformer.json      |  21 ++
 .../camel/catalog/models/endpointTransformer.json  |  22 ++
 .../camel/catalog/models/endpointValidator.json    |  19 ++
 .../camel/catalog/models/loadTransformer.json      |  22 ++
 .../camel/catalog/models/predicateValidator.json   |  18 ++
 .../apache/camel/catalog/schemas/camel-spring.xsd  | 251 ++++++++++++++++++---
 .../camel/model/transformer/customTransformer.json |  22 ++
 .../model/transformer/dataFormatTransformer.json   |  21 ++
 .../model/transformer/endpointTransformer.json     |  22 ++
 .../camel/model/transformer/loadTransformer.json   |  22 ++
 .../camel/model/validator/customValidator.json     |  19 ++
 .../camel/model/validator/endpointValidator.json   |  19 ++
 .../camel/model/validator/predicateValidator.json  |  18 ++
 .../services/org/apache/camel/model.properties     |   7 +
 .../transformer/CustomTransformerDefinition.java   |   7 +-
 .../DataFormatTransformerDefinition.java           |   4 +-
 .../transformer/EndpointTransformerDefinition.java |  10 +-
 .../transformer/LoadTransformerDefinition.java     |   7 +-
 .../model/transformer/TransformerDefinition.java   |  10 +-
 .../model/validator/CustomValidatorDefinition.java |   7 +-
 .../validator/EndpointValidatorDefinition.java     |  12 +-
 .../validator/PredicateValidatorDefinition.java    |  10 +-
 .../camel/model/validator/ValidatorDefinition.java |  14 +-
 .../java/org/apache/camel/xml/out/ModelWriter.java |  21 ++
 .../org/apache/camel/yaml/out/ModelWriter.java     |  21 ++
 .../dsl/yaml/deserializers/ModelDeserializers.java | 109 ++++++---
 .../deserializers/ModelDeserializersResolver.java  |  14 ++
 .../generated/resources/schema/camelYamlDsl.json   | 131 ++++++++---
 .../camel/maven/packaging/SchemaGeneratorMojo.java |   2 -
 32 files changed, 787 insertions(+), 143 deletions(-)

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 49abd461346..f0fe91022df 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
@@ -31,6 +31,9 @@ csv
 custom
 customLoadBalancer
 customServiceFilter
+customTransformer
+customValidator
+dataFormatTransformer
 dataFormats
 datasonnet
 deadLetterChannel
@@ -44,6 +47,8 @@ doCatch
 doFinally
 doTry
 dynamicRouter
+endpointTransformer
+endpointValidator
 enrich
 errorHandler
 exchangeProperty
@@ -93,6 +98,7 @@ langChain4jWordTokenizer
 language
 loadBalance
 loadBalancerConfiguration
+loadTransformer
 log
 loop
 lzf
@@ -126,6 +132,7 @@ policy
 poll
 pollEnrich
 post
+predicateValidator
 process
 property
 propertyExpression
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/customTransformer.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/customTransformer.json
new file mode 100644
index 00000000000..911145794eb
--- /dev/null
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/customTransformer.json
@@ -0,0 +1,22 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "customTransformer",
+    "title": "Custom Transformer",
+    "description": "To use a custom transformer on a route level.",
+    "deprecated": false,
+    "label": "transformation",
+    "javaType": 
"org.apache.camel.model.transformer.CustomTransformerDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "ref": { "index": 0, "kind": "attribute", "displayName": "Ref", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set a 
bean reference of the Transformer" },
+    "className": { "index": 1, "kind": "attribute", "displayName": "Class 
Name", "group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a class name of the Transformer" },
+    "scheme": { "index": 2, "kind": "attribute", "displayName": "Scheme", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from\/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists." },
+    "name": { "index": 3, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the transformer name under which the transformer gets referenced when 
specifying the input\/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from\/t [...]
+    "fromType": { "index": 4, "kind": "attribute", "displayName": "From Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'." },
+    "toType": { "index": 5, "kind": "attribute", "displayName": "To Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'." }
+  }
+}
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/customValidator.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/customValidator.json
new file mode 100644
index 00000000000..078809ee1d3
--- /dev/null
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/customValidator.json
@@ -0,0 +1,19 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "customValidator",
+    "title": "Custom Validator",
+    "description": "To use a custom validator on the route level.",
+    "deprecated": false,
+    "label": "validation",
+    "javaType": "org.apache.camel.model.validator.CustomValidatorDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "ref": { "index": 0, "kind": "attribute", "displayName": "Ref", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set a 
bean reference of the Validator" },
+    "className": { "index": 1, "kind": "attribute", "displayName": "Class 
Name", "group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a class name of the Validator" },
+    "type": { "index": 2, "kind": "attribute", "displayName": "Type", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the data type name. If you specify 'xml:XYZ', the validator will be picked up 
if message type is 'xml:XYZ'. If you specify just 'xml', the validator matches 
with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'." }
+  }
+}
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormatTransformer.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormatTransformer.json
new file mode 100644
index 00000000000..3214b3b8e14
--- /dev/null
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/dataFormatTransformer.json
@@ -0,0 +1,21 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "dataFormatTransformer",
+    "title": "Data Format Transformer",
+    "description": "Represents a 
org.apache.camel.processor.transformer.DataFormatTransformer which leverages 
org.apache.camel.spi.DataFormat to perform transformation. One of the 
DataFormat 'ref' or DataFormat 'type' needs to be specified.",
+    "deprecated": false,
+    "label": "dataformat,transformation",
+    "javaType": 
"org.apache.camel.model.transformer.DataFormatTransformerDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "dataFormatType": { "index": 0, "kind": "element", "displayName": "Data 
Format Type", "group": "common", "required": true, "type": "object", 
"javaType": "org.apache.camel.model.DataFormatDefinition", "oneOf": [ "asn1", 
"avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", 
"custom", "fhirJson", "fhirXml", "flatpack", "fury", "grok", "gzipDeflater", 
"hl7", "ical", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", 
"parquetAvro", "pgp", "protobuf", "rss" [...]
+    "scheme": { "index": 1, "kind": "attribute", "displayName": "Scheme", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from\/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists." },
+    "name": { "index": 2, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the transformer name under which the transformer gets referenced when 
specifying the input\/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from\/t [...]
+    "fromType": { "index": 3, "kind": "attribute", "displayName": "From Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'." },
+    "toType": { "index": 4, "kind": "attribute", "displayName": "To Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'." }
+  }
+}
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/endpointTransformer.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/endpointTransformer.json
new file mode 100644
index 00000000000..e29ff9da6b3
--- /dev/null
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/endpointTransformer.json
@@ -0,0 +1,22 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "endpointTransformer",
+    "title": "Endpoint Transformer",
+    "description": "To use a Camel endpoint to perform transformation on the 
route level.",
+    "deprecated": false,
+    "label": "transformation",
+    "javaType": 
"org.apache.camel.model.transformer.EndpointTransformerDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "ref": { "index": 0, "kind": "attribute", "displayName": "Ref", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the reference of the Endpoint." },
+    "uri": { "index": 1, "kind": "attribute", "displayName": "Uri", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the URI of the Endpoint." },
+    "scheme": { "index": 2, "kind": "attribute", "displayName": "Scheme", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from\/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists." },
+    "name": { "index": 3, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the transformer name under which the transformer gets referenced when 
specifying the input\/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from\/t [...]
+    "fromType": { "index": 4, "kind": "attribute", "displayName": "From Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'." },
+    "toType": { "index": 5, "kind": "attribute", "displayName": "To Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'." }
+  }
+}
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/endpointValidator.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/endpointValidator.json
new file mode 100644
index 00000000000..679527bb869
--- /dev/null
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/endpointValidator.json
@@ -0,0 +1,19 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "endpointValidator",
+    "title": "Endpoint Validator",
+    "description": "To use a Camel endpoint to perform validation on the route 
level.",
+    "deprecated": false,
+    "label": "validation",
+    "javaType": "org.apache.camel.model.validator.EndpointValidatorDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "ref": { "index": 0, "kind": "attribute", "displayName": "Ref", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the reference of the Endpoint." },
+    "uri": { "index": 1, "kind": "attribute", "displayName": "Uri", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the URI of the Endpoint." },
+    "type": { "index": 2, "kind": "attribute", "displayName": "Type", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the data type name. If you specify 'xml:XYZ', the validator will be picked up 
if message type is 'xml:XYZ'. If you specify just 'xml', the validator matches 
with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'." }
+  }
+}
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loadTransformer.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loadTransformer.json
new file mode 100644
index 00000000000..05a436c7a46
--- /dev/null
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/loadTransformer.json
@@ -0,0 +1,22 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "loadTransformer",
+    "title": "Load Transformer",
+    "description": "To load custom transformers from classpath scanning to be 
used for route level transformations.",
+    "deprecated": false,
+    "label": "transformation",
+    "javaType": "org.apache.camel.model.transformer.LoadTransformerDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "packageScan": { "index": 0, "kind": "attribute", "displayName": "Package 
Scan", "group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the classpath location to scan for annotated transformers." 
},
+    "defaults": { "index": 1, "kind": "attribute", "displayName": "Defaults", 
"group": "common", "required": false, "type": "boolean", "javaType": 
"java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Enable loading of default transformers." 
},
+    "scheme": { "index": 2, "kind": "attribute", "displayName": "Scheme", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from\/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists." },
+    "name": { "index": 3, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the transformer name under which the transformer gets referenced when 
specifying the input\/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from\/t [...]
+    "fromType": { "index": 4, "kind": "attribute", "displayName": "From Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'." },
+    "toType": { "index": 5, "kind": "attribute", "displayName": "To Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'." }
+  }
+}
diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/predicateValidator.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/predicateValidator.json
new file mode 100644
index 00000000000..72636450c47
--- /dev/null
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/predicateValidator.json
@@ -0,0 +1,18 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "predicateValidator",
+    "title": "Predicate Validator",
+    "description": "To use a predicate to perform validation on the route 
level.",
+    "deprecated": false,
+    "label": "validation",
+    "javaType": 
"org.apache.camel.model.validator.PredicateValidatorDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "expression": { "index": 0, "kind": "expression", "displayName": 
"Expression", "group": "common", "required": true, "type": "object", 
"javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ 
"constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", 
"hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", 
"mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", 
"wasm", "xpath", "xquery", "xtokenize" ], "depre [...]
+    "type": { "index": 1, "kind": "attribute", "displayName": "Type", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the data type name. If you specify 'xml:XYZ', the validator will be picked up 
if message type is 'xml:XYZ'. If you specify just 'xml', the validator matches 
with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'." }
+  }
+}
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 66e6dabae28..6d2fe783428 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
@@ -341,6 +341,35 @@ To use a custom load balancer implementation.
       <xs:documentation xml:lang="en">
 <![CDATA[
 Deprecated: null
+]]>
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="customTransformer" type="tns:customTransformerDefinition">
+    <xs:annotation>
+      <xs:documentation xml:lang="en">
+<![CDATA[
+To use a custom transformer on a route level.
+]]>
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="customValidator" type="tns:customValidatorDefinition">
+    <xs:annotation>
+      <xs:documentation xml:lang="en">
+<![CDATA[
+To use a custom validator on the route level.
+]]>
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="dataFormatTransformer" 
type="tns:dataFormatTransformerDefinition">
+    <xs:annotation>
+      <xs:documentation xml:lang="en">
+<![CDATA[
+Represents a org.apache.camel.processor.transformer.DataFormatTransformer 
which leverages
+org.apache.camel.spi.DataFormat to perform transformation. One of the 
DataFormat 'ref' or DataFormat 'type' needs to be
+specified.
 ]]>
       </xs:documentation>
     </xs:annotation>
@@ -467,6 +496,24 @@ Route messages based on dynamic rules
       <xs:documentation xml:lang="en">
 <![CDATA[
 Camel endpoint configuration
+]]>
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="endpointTransformer" 
type="tns:endpointTransformerDefinition">
+    <xs:annotation>
+      <xs:documentation xml:lang="en">
+<![CDATA[
+To use a Camel endpoint to perform transformation on the route level.
+]]>
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="endpointValidator" type="tns:endpointValidatorDefinition">
+    <xs:annotation>
+      <xs:documentation xml:lang="en">
+<![CDATA[
+To use a Camel endpoint to perform validation on the route level.
 ]]>
       </xs:documentation>
     </xs:annotation>
@@ -943,6 +990,15 @@ Balances message processing among a number of nodes
       <xs:documentation xml:lang="en">
 <![CDATA[
 Deprecated: null
+]]>
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="loadTransformer" type="tns:loadTransformerDefinition">
+    <xs:annotation>
+      <xs:documentation xml:lang="en">
+<![CDATA[
+To load custom transformers from classpath scanning to be used for route level 
transformations.
 ]]>
       </xs:documentation>
     </xs:annotation>
@@ -1245,6 +1301,15 @@ Enriches messages with data polled from a secondary 
resource
       <xs:documentation xml:lang="en">
 <![CDATA[
 Rest POST command
+]]>
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="predicateValidator" 
type="tns:predicateValidatorDefinition">
+    <xs:annotation>
+      <xs:documentation xml:lang="en">
+<![CDATA[
+To use a predicate to perform validation on the route level.
 ]]>
       </xs:documentation>
     </xs:annotation>
@@ -17689,23 +17754,78 @@ Sets the component name that this definition will 
apply to.
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
-  <xs:complexType name="customTransformer">
+  <xs:complexType name="customTransformerDefinition">
     <xs:complexContent>
       <xs:extension base="tns:transformer">
         <xs:sequence/>
-        <xs:attribute name="ref" type="xs:string"/>
-        <xs:attribute name="className" type="xs:string"/>
+        <xs:attribute name="ref" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set a bean reference of the Transformer.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="className" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set a class name of the Transformer.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType abstract="true" name="transformer">
     <xs:sequence/>
-    <xs:attribute name="scheme" type="xs:string"/>
-    <xs:attribute name="name" type="xs:string"/>
-    <xs:attribute name="fromType" type="xs:string"/>
-    <xs:attribute name="toType" type="xs:string"/>
+    <xs:attribute name="scheme" type="xs:string">
+      <xs:annotation>
+        <xs:documentation xml:lang="en">
+<![CDATA[
+Set a scheme name supported by the transformer. If you specify 'csv', the 
transformer will be picked up for all of 'csv'
+from/to Java transformation. Note that the scheme matching is performed only 
when no exactly matched transformer exists.
+]]>
+        </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="name" type="xs:string">
+      <xs:annotation>
+        <xs:documentation xml:lang="en">
+<![CDATA[
+Set the transformer name under which the transformer gets referenced when 
specifying the input/output data type on
+routes. If you specify a transformer name that matches a data type scheme like 
'csv' the transformer will be picked up
+for all of 'csv:' from/to Java transformation. Note that the scheme matching 
is performed only when no exactly matched
+transformer exists.
+]]>
+        </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="fromType" type="xs:string">
+      <xs:annotation>
+        <xs:documentation xml:lang="en">
+<![CDATA[
+Set the 'from' data type name. If you specify 'xml:XYZ', the transformer will 
be picked up if source type is 'xml:XYZ'.
+If you specify just 'xml', the transformer matches with all of 'xml' source 
type like 'xml:ABC' or 'xml:DEF'.
+]]>
+        </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
+    <xs:attribute name="toType" type="xs:string">
+      <xs:annotation>
+        <xs:documentation xml:lang="en">
+<![CDATA[
+Set the 'to' data type name. If you specify 'json:XYZ', the transformer will 
be picked up if destination type is
+'json:XYZ'. If you specify just 'json', the transformer matches with all of 
'json' destination type like 'json:ABC' or
+'json:DEF'.
+]]>
+        </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
   </xs:complexType>
-  <xs:complexType name="dataFormatTransformer">
+  <xs:complexType name="dataFormatTransformerDefinition">
     <xs:complexContent>
       <xs:extension base="tns:transformer">
         <xs:sequence>
@@ -17758,57 +17878,130 @@ Sets the component name that this definition will 
apply to.
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
-  <xs:complexType name="endpointTransformer">
+  <xs:complexType name="endpointTransformerDefinition">
     <xs:complexContent>
       <xs:extension base="tns:transformer">
         <xs:sequence/>
-        <xs:attribute name="ref" type="xs:string"/>
-        <xs:attribute name="uri" type="xs:string"/>
+        <xs:attribute name="ref" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set the reference of the Endpoint.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="uri" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set the URI of the Endpoint.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
-  <xs:complexType name="loadTransformer">
+  <xs:complexType name="loadTransformerDefinition">
     <xs:complexContent>
       <xs:extension base="tns:transformer">
         <xs:sequence/>
-        <xs:attribute name="packageScan" type="xs:string"/>
-        <xs:attribute name="defaults" type="xs:string"/>
+        <xs:attribute name="packageScan" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set the classpath location to scan for annotated transformers.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="defaults" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Enable loading of default transformers. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType name="transformersDefinition">
     <xs:sequence>
       <xs:choice maxOccurs="unbounded" minOccurs="0">
-        <xs:element name="dataFormatTransformer" 
type="tns:dataFormatTransformer"/>
-        <xs:element name="endpointTransformer" type="tns:endpointTransformer"/>
-        <xs:element name="loadTransformer" type="tns:loadTransformer"/>
-        <xs:element name="customTransformer" type="tns:customTransformer"/>
+        <xs:element ref="tns:dataFormatTransformer"/>
+        <xs:element ref="tns:endpointTransformer"/>
+        <xs:element ref="tns:loadTransformer"/>
+        <xs:element ref="tns:customTransformer"/>
       </xs:choice>
     </xs:sequence>
   </xs:complexType>
-  <xs:complexType name="customValidator">
+  <xs:complexType name="customValidatorDefinition">
     <xs:complexContent>
       <xs:extension base="tns:validator">
         <xs:sequence/>
-        <xs:attribute name="ref" type="xs:string"/>
-        <xs:attribute name="className" type="xs:string"/>
+        <xs:attribute name="ref" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set a bean reference of the Validator.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="className" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set a class name of the Validator.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
   <xs:complexType abstract="true" name="validator">
     <xs:sequence/>
-    <xs:attribute name="type" type="xs:string"/>
+    <xs:attribute name="type" type="xs:string">
+      <xs:annotation>
+        <xs:documentation xml:lang="en">
+<![CDATA[
+Set the data type name. If you specify 'xml:XYZ', the validator will be picked 
up if message type is 'xml:XYZ'. If you
+specify just 'xml', the validator matches with all of 'xml' message type like 
'xml:ABC' or 'xml:DEF'.
+]]>
+        </xs:documentation>
+      </xs:annotation>
+    </xs:attribute>
   </xs:complexType>
-  <xs:complexType name="endpointValidator">
+  <xs:complexType name="endpointValidatorDefinition">
     <xs:complexContent>
       <xs:extension base="tns:validator">
         <xs:sequence/>
-        <xs:attribute name="ref" type="xs:string"/>
-        <xs:attribute name="uri" type="xs:string"/>
+        <xs:attribute name="ref" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set the reference of the Endpoint.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="uri" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set the URI of the Endpoint.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
       </xs:extension>
     </xs:complexContent>
   </xs:complexType>
-  <xs:complexType name="predicateValidator">
+  <xs:complexType name="predicateValidatorDefinition">
     <xs:complexContent>
       <xs:extension base="tns:validator">
         <xs:choice>
@@ -17846,9 +18039,9 @@ Sets the component name that this definition will apply 
to.
   <xs:complexType name="validatorsDefinition">
     <xs:sequence>
       <xs:choice maxOccurs="unbounded" minOccurs="0">
-        <xs:element name="endpointValidator" type="tns:endpointValidator"/>
-        <xs:element name="predicateValidator" type="tns:predicateValidator"/>
-        <xs:element name="customValidator" type="tns:customValidator"/>
+        <xs:element ref="tns:endpointValidator"/>
+        <xs:element ref="tns:predicateValidator"/>
+        <xs:element ref="tns:customValidator"/>
       </xs:choice>
     </xs:sequence>
   </xs:complexType>
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/customTransformer.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/customTransformer.json
new file mode 100644
index 00000000000..911145794eb
--- /dev/null
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/customTransformer.json
@@ -0,0 +1,22 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "customTransformer",
+    "title": "Custom Transformer",
+    "description": "To use a custom transformer on a route level.",
+    "deprecated": false,
+    "label": "transformation",
+    "javaType": 
"org.apache.camel.model.transformer.CustomTransformerDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "ref": { "index": 0, "kind": "attribute", "displayName": "Ref", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set a 
bean reference of the Transformer" },
+    "className": { "index": 1, "kind": "attribute", "displayName": "Class 
Name", "group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a class name of the Transformer" },
+    "scheme": { "index": 2, "kind": "attribute", "displayName": "Scheme", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from\/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists." },
+    "name": { "index": 3, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the transformer name under which the transformer gets referenced when 
specifying the input\/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from\/t [...]
+    "fromType": { "index": 4, "kind": "attribute", "displayName": "From Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'." },
+    "toType": { "index": 5, "kind": "attribute", "displayName": "To Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'." }
+  }
+}
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/dataFormatTransformer.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/dataFormatTransformer.json
new file mode 100644
index 00000000000..3214b3b8e14
--- /dev/null
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/dataFormatTransformer.json
@@ -0,0 +1,21 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "dataFormatTransformer",
+    "title": "Data Format Transformer",
+    "description": "Represents a 
org.apache.camel.processor.transformer.DataFormatTransformer which leverages 
org.apache.camel.spi.DataFormat to perform transformation. One of the 
DataFormat 'ref' or DataFormat 'type' needs to be specified.",
+    "deprecated": false,
+    "label": "dataformat,transformation",
+    "javaType": 
"org.apache.camel.model.transformer.DataFormatTransformerDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "dataFormatType": { "index": 0, "kind": "element", "displayName": "Data 
Format Type", "group": "common", "required": true, "type": "object", 
"javaType": "org.apache.camel.model.DataFormatDefinition", "oneOf": [ "asn1", 
"avro", "barcode", "base64", "beanio", "bindy", "cbor", "crypto", "csv", 
"custom", "fhirJson", "fhirXml", "flatpack", "fury", "grok", "gzipDeflater", 
"hl7", "ical", "jacksonXml", "jaxb", "json", "jsonApi", "lzf", "mimeMultipart", 
"parquetAvro", "pgp", "protobuf", "rss" [...]
+    "scheme": { "index": 1, "kind": "attribute", "displayName": "Scheme", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from\/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists." },
+    "name": { "index": 2, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the transformer name under which the transformer gets referenced when 
specifying the input\/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from\/t [...]
+    "fromType": { "index": 3, "kind": "attribute", "displayName": "From Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'." },
+    "toType": { "index": 4, "kind": "attribute", "displayName": "To Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'." }
+  }
+}
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/endpointTransformer.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/endpointTransformer.json
new file mode 100644
index 00000000000..e29ff9da6b3
--- /dev/null
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/endpointTransformer.json
@@ -0,0 +1,22 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "endpointTransformer",
+    "title": "Endpoint Transformer",
+    "description": "To use a Camel endpoint to perform transformation on the 
route level.",
+    "deprecated": false,
+    "label": "transformation",
+    "javaType": 
"org.apache.camel.model.transformer.EndpointTransformerDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "ref": { "index": 0, "kind": "attribute", "displayName": "Ref", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the reference of the Endpoint." },
+    "uri": { "index": 1, "kind": "attribute", "displayName": "Uri", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the URI of the Endpoint." },
+    "scheme": { "index": 2, "kind": "attribute", "displayName": "Scheme", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from\/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists." },
+    "name": { "index": 3, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the transformer name under which the transformer gets referenced when 
specifying the input\/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from\/t [...]
+    "fromType": { "index": 4, "kind": "attribute", "displayName": "From Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'." },
+    "toType": { "index": 5, "kind": "attribute", "displayName": "To Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'." }
+  }
+}
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/loadTransformer.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/loadTransformer.json
new file mode 100644
index 00000000000..05a436c7a46
--- /dev/null
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/transformer/loadTransformer.json
@@ -0,0 +1,22 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "loadTransformer",
+    "title": "Load Transformer",
+    "description": "To load custom transformers from classpath scanning to be 
used for route level transformations.",
+    "deprecated": false,
+    "label": "transformation",
+    "javaType": "org.apache.camel.model.transformer.LoadTransformerDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "packageScan": { "index": 0, "kind": "attribute", "displayName": "Package 
Scan", "group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the classpath location to scan for annotated transformers." 
},
+    "defaults": { "index": 1, "kind": "attribute", "displayName": "Defaults", 
"group": "common", "required": false, "type": "boolean", "javaType": 
"java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, 
"defaultValue": false, "description": "Enable loading of default transformers." 
},
+    "scheme": { "index": 2, "kind": "attribute", "displayName": "Scheme", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from\/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists." },
+    "name": { "index": 3, "kind": "attribute", "displayName": "Name", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the transformer name under which the transformer gets referenced when 
specifying the input\/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from\/t [...]
+    "fromType": { "index": 4, "kind": "attribute", "displayName": "From Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'." },
+    "toType": { "index": 5, "kind": "attribute", "displayName": "To Type", 
"group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'." }
+  }
+}
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/validator/customValidator.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/validator/customValidator.json
new file mode 100644
index 00000000000..078809ee1d3
--- /dev/null
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/validator/customValidator.json
@@ -0,0 +1,19 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "customValidator",
+    "title": "Custom Validator",
+    "description": "To use a custom validator on the route level.",
+    "deprecated": false,
+    "label": "validation",
+    "javaType": "org.apache.camel.model.validator.CustomValidatorDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "ref": { "index": 0, "kind": "attribute", "displayName": "Ref", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set a 
bean reference of the Validator" },
+    "className": { "index": 1, "kind": "attribute", "displayName": "Class 
Name", "group": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "autowired": false, "secret": false, 
"description": "Set a class name of the Validator" },
+    "type": { "index": 2, "kind": "attribute", "displayName": "Type", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the data type name. If you specify 'xml:XYZ', the validator will be picked up 
if message type is 'xml:XYZ'. If you specify just 'xml', the validator matches 
with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'." }
+  }
+}
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/validator/endpointValidator.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/validator/endpointValidator.json
new file mode 100644
index 00000000000..679527bb869
--- /dev/null
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/validator/endpointValidator.json
@@ -0,0 +1,19 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "endpointValidator",
+    "title": "Endpoint Validator",
+    "description": "To use a Camel endpoint to perform validation on the route 
level.",
+    "deprecated": false,
+    "label": "validation",
+    "javaType": "org.apache.camel.model.validator.EndpointValidatorDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "ref": { "index": 0, "kind": "attribute", "displayName": "Ref", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the reference of the Endpoint." },
+    "uri": { "index": 1, "kind": "attribute", "displayName": "Uri", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the URI of the Endpoint." },
+    "type": { "index": 2, "kind": "attribute", "displayName": "Type", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the data type name. If you specify 'xml:XYZ', the validator will be picked up 
if message type is 'xml:XYZ'. If you specify just 'xml', the validator matches 
with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'." }
+  }
+}
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/validator/predicateValidator.json
 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/validator/predicateValidator.json
new file mode 100644
index 00000000000..72636450c47
--- /dev/null
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/validator/predicateValidator.json
@@ -0,0 +1,18 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "predicateValidator",
+    "title": "Predicate Validator",
+    "description": "To use a predicate to perform validation on the route 
level.",
+    "deprecated": false,
+    "label": "validation",
+    "javaType": 
"org.apache.camel.model.validator.PredicateValidatorDefinition",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "expression": { "index": 0, "kind": "expression", "displayName": 
"Expression", "group": "common", "required": true, "type": "object", 
"javaType": "org.apache.camel.model.language.ExpressionDefinition", "oneOf": [ 
"constant", "csimple", "datasonnet", "exchangeProperty", "groovy", "header", 
"hl7terser", "java", "joor", "jq", "js", "jsonpath", "language", "method", 
"mvel", "ognl", "python", "ref", "simple", "spel", "tokenize", "variable", 
"wasm", "xpath", "xquery", "xtokenize" ], "depre [...]
+    "type": { "index": 1, "kind": "attribute", "displayName": "Type", "group": 
"common", "required": false, "type": "string", "javaType": "java.lang.String", 
"deprecated": false, "autowired": false, "secret": false, "description": "Set 
the data type name. If you specify 'xml:XYZ', the validator will be picked up 
if message type is 'xml:XYZ'. If you specify just 'xml', the validator matches 
with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'." }
+  }
+}
diff --git 
a/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
 
b/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
index 48eb30d4271..fc37cee42a0 100644
--- 
a/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
+++ 
b/core/camel-core-model/src/generated/resources/META-INF/services/org/apache/camel/model.properties
@@ -32,6 +32,9 @@ csv
 custom
 customLoadBalancer
 customServiceFilter
+customTransformer
+customValidator
+dataFormatTransformer
 dataFormats
 datasonnet
 deadLetterChannel
@@ -45,6 +48,8 @@ doCatch
 doFinally
 doTry
 dynamicRouter
+endpointTransformer
+endpointValidator
 enrich
 errorHandler
 exchangeProperty
@@ -94,6 +99,7 @@ langChain4jWordTokenizer
 language
 loadBalance
 loadBalancerConfiguration
+loadTransformer
 log
 loop
 lzf
@@ -127,6 +133,7 @@ policy
 poll
 pollEnrich
 post
+predicateValidator
 process
 property
 propertyExpression
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
index 04fca5ecd7b..1aeb1204f0b 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/CustomTransformerDefinition.java
@@ -19,17 +19,16 @@ package org.apache.camel.model.transformer;
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlAttribute;
-import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.Transformer;
 
 /**
- * Represents a CustomTransformer. One of the bean reference (ref) or fully 
qualified class name (type) of the custom
- * {@link Transformer} needs to be specified.
+ * To use a custom transformer on a route level.
  */
 @Metadata(label = "transformation")
-@XmlType(name = "customTransformer")
+@XmlRootElement(name = "customTransformer")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class CustomTransformerDefinition extends TransformerDefinition {
 
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
index b8449a0afa4..9d8e9342470 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/DataFormatTransformerDefinition.java
@@ -20,7 +20,7 @@ import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlElement;
 import jakarta.xml.bind.annotation.XmlElements;
-import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.dataformat.ASN1DataFormat;
@@ -74,7 +74,7 @@ import org.apache.camel.spi.Metadata;
  * needs to be specified.
  */
 @Metadata(label = "dataformat,transformation")
-@XmlType(name = "dataFormatTransformer")
+@XmlRootElement(name = "dataFormatTransformer")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class DataFormatTransformerDefinition extends TransformerDefinition {
 
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
index 7501cbc3f2e..6f94ae9b593 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/EndpointTransformerDefinition.java
@@ -19,19 +19,15 @@ package org.apache.camel.model.transformer;
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlAttribute;
-import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.spi.Metadata;
 
 /**
- * Represents an endpoint {@link org.apache.camel.spi.Transformer} which 
leverages camel
- * {@link org.apache.camel.Endpoint} to perform transformation. A
- * {@link org.apache.camel.processor.transformer.ProcessorTransformer} will be 
created internally with a
- * {@link org.apache.camel.processor.SendProcessor} which forwards the message 
to the specified Endpoint. One of the
- * Endpoint 'ref' or 'uri' needs to be specified.
+ * To use a Camel endpoint to perform transformation on the route level.
  */
 @Metadata(label = "transformation")
-@XmlType(name = "endpointTransformer")
+@XmlRootElement(name = "endpointTransformer")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class EndpointTransformerDefinition extends TransformerDefinition {
 
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/LoadTransformerDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/LoadTransformerDefinition.java
index 3b93b4f0d76..f32e10e035d 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/LoadTransformerDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/LoadTransformerDefinition.java
@@ -19,16 +19,15 @@ package org.apache.camel.model.transformer;
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlAttribute;
-import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.spi.Metadata;
 
 /**
- * Loads one to many {@link org.apache.camel.spi.Transformer} via {@link 
org.apache.camel.spi.TransformerLoader}.
- * Supports classpath scan to load transformer implementations configured for 
instance via annotation configuration.
+ * To load custom transformers from classpath scanning to be used for route 
level transformations.
  */
 @Metadata(label = "transformation")
-@XmlType(name = "loadTransformer")
+@XmlRootElement(name = "loadTransformer")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class LoadTransformerDefinition extends TransformerDefinition {
 
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
index d49cf958169..9f84b07a29b 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/transformer/TransformerDefinition.java
@@ -22,22 +22,20 @@ import jakarta.xml.bind.annotation.XmlAttribute;
 import jakarta.xml.bind.annotation.XmlType;
 
 import org.apache.camel.model.CopyableDefinition;
-import org.apache.camel.model.InputTypeDefinition;
-import org.apache.camel.model.OutputTypeDefinition;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Metadata;
 
 /**
- * Represents a {@link org.apache.camel.spi.Transformer} which declarative 
transforms message content according to the
- * input type declared by {@link InputTypeDefinition} and/or output type 
declared by {@link OutputTypeDefinition}.
+ * A transformer which declarative transforms message content according to the 
input and/or output type declared on the
+ * route level.
  *
  * If you specify from='java:com.example.ABC' and to='xml:XYZ', the 
transformer will be picked up when current message
  * type is 'java:com.example.ABC' and expected message type is 'xml:XYZ'. If 
you specify from='java' to='xml', then it
  * will be picked up for all of Java to xml transformation.
  *
  * Also, it's possible to specify a transformer name that identifies the 
transformer. Usually the name is a combination
- * of a scheme and a name that represents the supported data type name. The 
declared {@link InputTypeDefinition} and/or
- * {@link OutputTypeDefinition} can then reference the transformer by its name.
+ * of a scheme and a name that represents the supported data type name. The 
declared input and/or output can then
+ * reference the transformer by its name.
  *
  * In case the transformer name should represent a data type scheme such as 
name='xml' that specific transformer will
  * also be picked up for all of Java to xml and xml to Java transformation as 
a fallback when no matching transformer is
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/validator/CustomValidatorDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/validator/CustomValidatorDefinition.java
index 5bccfc5d307..aead5495937 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/validator/CustomValidatorDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/validator/CustomValidatorDefinition.java
@@ -19,17 +19,16 @@ package org.apache.camel.model.validator;
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlAttribute;
-import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.Validator;
 
 /**
- * Represents a CustomValidator. One of the bean reference (ref) or fully 
qualified class name (className) of the custom
- * {@link Validator} needs to be specified. {@see ValidatorDefinition} {@see 
Validator}
+ * To use a custom validator on the route level.
  */
 @Metadata(label = "validation")
-@XmlType(name = "customValidator")
+@XmlRootElement(name = "customValidator")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class CustomValidatorDefinition extends ValidatorDefinition {
 
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/validator/EndpointValidatorDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/validator/EndpointValidatorDefinition.java
index c8eab4cd60b..e4565338721 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/validator/EndpointValidatorDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/validator/EndpointValidatorDefinition.java
@@ -19,21 +19,15 @@ package org.apache.camel.model.validator;
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlAttribute;
-import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.Validator;
 
 /**
- * Represents an endpoint {@link Validator} which leverages camel validator 
component such as
- * <a href="http://camel.apache.org/validation.html";>Validator Component</a> 
and
- * <a href="http://camel.apache.org/bean-validation.html";>Bean Validator 
Component</a> to perform content validation. A
- * {@link org.apache.camel.processor.validator.ProcessorValidator} will be 
created internally with a
- * {@link org.apache.camel.processor.SendProcessor} which forwards the message 
to the validator Endpoint.
- * {@see ValidatorDefinition} {@see Validator}
+ * To use a Camel endpoint to perform validation on the route level.
  */
 @Metadata(label = "validation")
-@XmlType(name = "endpointValidator")
+@XmlRootElement(name = "endpointValidator")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class EndpointValidatorDefinition extends ValidatorDefinition {
 
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/validator/PredicateValidatorDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/validator/PredicateValidatorDefinition.java
index d191827f0bc..a5f52fab805 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/validator/PredicateValidatorDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/validator/PredicateValidatorDefinition.java
@@ -19,22 +19,18 @@ package org.apache.camel.model.validator;
 import jakarta.xml.bind.annotation.XmlAccessType;
 import jakarta.xml.bind.annotation.XmlAccessorType;
 import jakarta.xml.bind.annotation.XmlElementRef;
-import jakarta.xml.bind.annotation.XmlType;
+import jakarta.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Expression;
 import org.apache.camel.model.ExpressionNodeHelper;
 import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.Validator;
 
 /**
- * Represents a predicate {@link Validator} which leverages expression or 
predicates to perform content validation. A
- * {@link org.apache.camel.processor.validator.ProcessorValidator} will be 
created internally with a
- * {@link org.apache.camel.processor.validation.PredicateValidatingProcessor} 
which validates the message according to
- * specified expression/predicates. {@see ValidatorDefinition} {@see Validator}
+ * To use a predicate to perform validation on the route level.
  */
 @Metadata(label = "validation")
-@XmlType(name = "predicateValidator")
+@XmlRootElement(name = "predicateValidator")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class PredicateValidatorDefinition extends ValidatorDefinition {
 
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/validator/ValidatorDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/validator/ValidatorDefinition.java
index f16b3b920dd..6b050cee162 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/validator/ValidatorDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/validator/ValidatorDefinition.java
@@ -22,21 +22,15 @@ import jakarta.xml.bind.annotation.XmlAttribute;
 import jakarta.xml.bind.annotation.XmlType;
 
 import org.apache.camel.model.CopyableDefinition;
-import org.apache.camel.model.InputTypeDefinition;
-import org.apache.camel.model.OutputTypeDefinition;
 import org.apache.camel.spi.DataType;
 import org.apache.camel.spi.Metadata;
-import org.apache.camel.spi.Validator;
 
 /**
- * <p>
- * Represents a {@link Validator} which declaratively validates message 
content according to the input type declared by
- * {@link InputTypeDefinition} and/or output type declared by {@link 
OutputTypeDefinition}.
- * </p>
- * <p>
+ * A validator which declaratively validates message content according to the 
input type declared by input and/or output
+ * type on the route leve.
+ *
  * If you specify type='xml:ABC', the validator will be picked up when current 
message type is 'xml:ABC'. If you specify
- * type='json', then it will be picked up for all of json validation. {@see 
Validator} {@see InputTypeDefinition}
- * {@see OutputTypeDefinition}
+ * type='json', then it will be picked up for all of json validation.
  */
 @Metadata(label = "validation")
 @XmlType(name = "validator")
diff --git 
a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
 
b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
index fece6320ea7..b2796e1d20b 100644
--- 
a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
+++ 
b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/out/ModelWriter.java
@@ -784,9 +784,30 @@ public class ModelWriter extends BaseWriter {
     public void 
writeLangChain4jWordTokenizerDefinition(LangChain4jWordTokenizerDefinition def) 
throws IOException {
         doWriteLangChain4jWordTokenizerDefinition("langChain4jWordTokenizer", 
def);
     }
+    public void writeCustomTransformerDefinition(CustomTransformerDefinition 
def) throws IOException {
+        doWriteCustomTransformerDefinition("customTransformer", def);
+    }
+    public void 
writeDataFormatTransformerDefinition(DataFormatTransformerDefinition def) 
throws IOException {
+        doWriteDataFormatTransformerDefinition("dataFormatTransformer", def);
+    }
+    public void 
writeEndpointTransformerDefinition(EndpointTransformerDefinition def) throws 
IOException {
+        doWriteEndpointTransformerDefinition("endpointTransformer", def);
+    }
+    public void writeLoadTransformerDefinition(LoadTransformerDefinition def) 
throws IOException {
+        doWriteLoadTransformerDefinition("loadTransformer", def);
+    }
     public void writeTransformersDefinition(TransformersDefinition def) throws 
IOException {
         doWriteTransformersDefinition("transformers", def);
     }
+    public void writeCustomValidatorDefinition(CustomValidatorDefinition def) 
throws IOException {
+        doWriteCustomValidatorDefinition("customValidator", def);
+    }
+    public void writeEndpointValidatorDefinition(EndpointValidatorDefinition 
def) throws IOException {
+        doWriteEndpointValidatorDefinition("endpointValidator", def);
+    }
+    public void writePredicateValidatorDefinition(PredicateValidatorDefinition 
def) throws IOException {
+        doWritePredicateValidatorDefinition("predicateValidator", def);
+    }
     public void writeValidatorsDefinition(ValidatorsDefinition def) throws 
IOException {
         doWriteValidatorsDefinition("validators", def);
     }
diff --git 
a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
 
b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
index 2a54d21d23c..1b2ab34c649 100644
--- 
a/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
+++ 
b/core/camel-yaml-io/src/generated/java/org/apache/camel/yaml/out/ModelWriter.java
@@ -784,9 +784,30 @@ public class ModelWriter extends BaseWriter {
     public void 
writeLangChain4jWordTokenizerDefinition(LangChain4jWordTokenizerDefinition def) 
throws IOException {
         doWriteLangChain4jWordTokenizerDefinition("langChain4jWordTokenizer", 
def);
     }
+    public void writeCustomTransformerDefinition(CustomTransformerDefinition 
def) throws IOException {
+        doWriteCustomTransformerDefinition("customTransformer", def);
+    }
+    public void 
writeDataFormatTransformerDefinition(DataFormatTransformerDefinition def) 
throws IOException {
+        doWriteDataFormatTransformerDefinition("dataFormatTransformer", def);
+    }
+    public void 
writeEndpointTransformerDefinition(EndpointTransformerDefinition def) throws 
IOException {
+        doWriteEndpointTransformerDefinition("endpointTransformer", def);
+    }
+    public void writeLoadTransformerDefinition(LoadTransformerDefinition def) 
throws IOException {
+        doWriteLoadTransformerDefinition("loadTransformer", def);
+    }
     public void writeTransformersDefinition(TransformersDefinition def) throws 
IOException {
         doWriteTransformersDefinition("transformers", def);
     }
+    public void writeCustomValidatorDefinition(CustomValidatorDefinition def) 
throws IOException {
+        doWriteCustomValidatorDefinition("customValidator", def);
+    }
+    public void writeEndpointValidatorDefinition(EndpointValidatorDefinition 
def) throws IOException {
+        doWriteEndpointValidatorDefinition("endpointValidator", def);
+    }
+    public void writePredicateValidatorDefinition(PredicateValidatorDefinition 
def) throws IOException {
+        doWritePredicateValidatorDefinition("predicateValidator", def);
+    }
     public void writeValidatorsDefinition(ValidatorsDefinition def) throws 
IOException {
         doWriteValidatorsDefinition("validators", def);
     }
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
index 9406b99a9ae..c9c852602a6 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializers.java
@@ -3380,15 +3380,22 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
     }
 
     @YamlType(
+            nodes = {
+                    "custom-transformer",
+                    "customTransformer"
+            },
             types = 
org.apache.camel.model.transformer.CustomTransformerDefinition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            displayName = "Custom Transformer",
+            description = "To use a custom transformer on a route level.",
+            deprecated = false,
             properties = {
-                    @YamlProperty(name = "className", type = "string"),
-                    @YamlProperty(name = "fromType", type = "string"),
-                    @YamlProperty(name = "name", type = "string"),
-                    @YamlProperty(name = "ref", type = "string"),
-                    @YamlProperty(name = "scheme", type = "string"),
-                    @YamlProperty(name = "toType", type = "string")
+                    @YamlProperty(name = "className", type = "string", 
description = "Set a class name of the Transformer", displayName = "Class 
Name"),
+                    @YamlProperty(name = "fromType", type = "string", 
description = "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'.", displayName = "From Type"),
+                    @YamlProperty(name = "name", type = "string", description 
= "Set the transformer name under which the transformer gets referenced when 
specifying the input/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from/to Java transformation. Note that the scheme matching 
is performed only when no exactly matched transformer exists.", displayName = 
"Name"),
+                    @YamlProperty(name = "ref", type = "string", description = 
"Set a bean reference of the Transformer", displayName = "Ref"),
+                    @YamlProperty(name = "scheme", type = "string", 
description = "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists.", displayName = "Scheme"),
+                    @YamlProperty(name = "toType", type = "string", 
description = "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'.", displayName = "To Type")
             }
     )
     public static class CustomTransformerDefinitionDeserializer extends 
YamlDeserializerBase<CustomTransformerDefinition> {
@@ -3445,12 +3452,19 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
     }
 
     @YamlType(
+            nodes = {
+                    "custom-validator",
+                    "customValidator"
+            },
             types = 
org.apache.camel.model.validator.CustomValidatorDefinition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            displayName = "Custom Validator",
+            description = "To use a custom validator on the route level.",
+            deprecated = false,
             properties = {
-                    @YamlProperty(name = "className", type = "string"),
-                    @YamlProperty(name = "ref", type = "string"),
-                    @YamlProperty(name = "type", type = "string")
+                    @YamlProperty(name = "className", type = "string", 
description = "Set a class name of the Validator", displayName = "Class Name"),
+                    @YamlProperty(name = "ref", type = "string", description = 
"Set a bean reference of the Validator", displayName = "Ref"),
+                    @YamlProperty(name = "type", type = "string", description 
= "Set the data type name. If you specify 'xml:XYZ', the validator will be 
picked up if message type is 'xml:XYZ'. If you specify just 'xml', the 
validator matches with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'.", 
displayName = "Type")
             }
     )
     public static class CustomValidatorDefinitionDeserializer extends 
YamlDeserializerBase<CustomValidatorDefinition> {
@@ -3525,8 +3539,15 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
     }
 
     @YamlType(
+            nodes = {
+                    "data-format-transformer",
+                    "dataFormatTransformer"
+            },
             types = 
org.apache.camel.model.transformer.DataFormatTransformerDefinition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            displayName = "Data Format Transformer",
+            description = "Represents a 
org.apache.camel.processor.transformer.DataFormatTransformer which leverages 
org.apache.camel.spi.DataFormat to perform transformation. One of the 
DataFormat 'ref' or DataFormat 'type' needs to be specified.",
+            deprecated = false,
             properties = {
                     @YamlProperty(name = "asn1", type = 
"object:org.apache.camel.model.dataformat.ASN1DataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "avro", type = 
"object:org.apache.camel.model.dataformat.AvroDataFormat", oneOf = 
"dataFormatType"),
@@ -3541,7 +3562,7 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
                     @YamlProperty(name = "fhirJson", type = 
"object:org.apache.camel.model.dataformat.FhirJsonDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "fhirXml", type = 
"object:org.apache.camel.model.dataformat.FhirXmlDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "flatpack", type = 
"object:org.apache.camel.model.dataformat.FlatpackDataFormat", oneOf = 
"dataFormatType"),
-                    @YamlProperty(name = "fromType", type = "string"),
+                    @YamlProperty(name = "fromType", type = "string", 
description = "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'.", displayName = "From Type"),
                     @YamlProperty(name = "fury", type = 
"object:org.apache.camel.model.dataformat.FuryDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "grok", type = 
"object:org.apache.camel.model.dataformat.GrokDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "gzipDeflater", type = 
"object:org.apache.camel.model.dataformat.GzipDeflaterDataFormat", oneOf = 
"dataFormatType"),
@@ -3553,12 +3574,12 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
                     @YamlProperty(name = "jsonApi", type = 
"object:org.apache.camel.model.dataformat.JsonApiDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "lzf", type = 
"object:org.apache.camel.model.dataformat.LZFDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "mimeMultipart", type = 
"object:org.apache.camel.model.dataformat.MimeMultipartDataFormat", oneOf = 
"dataFormatType"),
-                    @YamlProperty(name = "name", type = "string"),
+                    @YamlProperty(name = "name", type = "string", description 
= "Set the transformer name under which the transformer gets referenced when 
specifying the input/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from/to Java transformation. Note that the scheme matching 
is performed only when no exactly matched transformer exists.", displayName = 
"Name"),
                     @YamlProperty(name = "parquetAvro", type = 
"object:org.apache.camel.model.dataformat.ParquetAvroDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "pgp", type = 
"object:org.apache.camel.model.dataformat.PGPDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "protobuf", type = 
"object:org.apache.camel.model.dataformat.ProtobufDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "rss", type = 
"object:org.apache.camel.model.dataformat.RssDataFormat", oneOf = 
"dataFormatType"),
-                    @YamlProperty(name = "scheme", type = "string"),
+                    @YamlProperty(name = "scheme", type = "string", 
description = "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists.", displayName = "Scheme"),
                     @YamlProperty(name = "smooks", type = 
"object:org.apache.camel.model.dataformat.SmooksDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "soap", type = 
"object:org.apache.camel.model.dataformat.SoapDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "swiftMt", type = 
"object:org.apache.camel.model.dataformat.SwiftMtDataFormat", oneOf = 
"dataFormatType"),
@@ -3567,7 +3588,7 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
                     @YamlProperty(name = "tarFile", type = 
"object:org.apache.camel.model.dataformat.TarFileDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "thrift", type = 
"object:org.apache.camel.model.dataformat.ThriftDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "tidyMarkup", type = 
"object:org.apache.camel.model.dataformat.TidyMarkupDataFormat", oneOf = 
"dataFormatType"),
-                    @YamlProperty(name = "toType", type = "string"),
+                    @YamlProperty(name = "toType", type = "string", 
description = "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'.", displayName = "To Type"),
                     @YamlProperty(name = "univocityCsv", type = 
"object:org.apache.camel.model.dataformat.UniVocityCsvDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "univocityFixed", type = 
"object:org.apache.camel.model.dataformat.UniVocityFixedDataFormat", oneOf = 
"dataFormatType"),
                     @YamlProperty(name = "univocityTsv", type = 
"object:org.apache.camel.model.dataformat.UniVocityTsvDataFormat", oneOf = 
"dataFormatType"),
@@ -5186,15 +5207,22 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
     }
 
     @YamlType(
+            nodes = {
+                    "endpoint-transformer",
+                    "endpointTransformer"
+            },
             types = 
org.apache.camel.model.transformer.EndpointTransformerDefinition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            displayName = "Endpoint Transformer",
+            description = "To use a Camel endpoint to perform transformation 
on the route level.",
+            deprecated = false,
             properties = {
-                    @YamlProperty(name = "fromType", type = "string"),
-                    @YamlProperty(name = "name", type = "string"),
-                    @YamlProperty(name = "ref", type = "string"),
-                    @YamlProperty(name = "scheme", type = "string"),
-                    @YamlProperty(name = "toType", type = "string"),
-                    @YamlProperty(name = "uri", type = "string")
+                    @YamlProperty(name = "fromType", type = "string", 
description = "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'.", displayName = "From Type"),
+                    @YamlProperty(name = "name", type = "string", description 
= "Set the transformer name under which the transformer gets referenced when 
specifying the input/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from/to Java transformation. Note that the scheme matching 
is performed only when no exactly matched transformer exists.", displayName = 
"Name"),
+                    @YamlProperty(name = "ref", type = "string", description = 
"Set the reference of the Endpoint.", displayName = "Ref"),
+                    @YamlProperty(name = "scheme", type = "string", 
description = "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists.", displayName = "Scheme"),
+                    @YamlProperty(name = "toType", type = "string", 
description = "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'.", displayName = "To Type"),
+                    @YamlProperty(name = "uri", type = "string", description = 
"Set the URI of the Endpoint.", displayName = "Uri")
             }
     )
     public static class EndpointTransformerDefinitionDeserializer extends 
YamlDeserializerBase<EndpointTransformerDefinition> {
@@ -5251,12 +5279,19 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
     }
 
     @YamlType(
+            nodes = {
+                    "endpoint-validator",
+                    "endpointValidator"
+            },
             types = 
org.apache.camel.model.validator.EndpointValidatorDefinition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            displayName = "Endpoint Validator",
+            description = "To use a Camel endpoint to perform validation on 
the route level.",
+            deprecated = false,
             properties = {
-                    @YamlProperty(name = "ref", type = "string"),
-                    @YamlProperty(name = "type", type = "string"),
-                    @YamlProperty(name = "uri", type = "string")
+                    @YamlProperty(name = "ref", type = "string", description = 
"Set the reference of the Endpoint.", displayName = "Ref"),
+                    @YamlProperty(name = "type", type = "string", description 
= "Set the data type name. If you specify 'xml:XYZ', the validator will be 
picked up if message type is 'xml:XYZ'. If you specify just 'xml', the 
validator matches with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'.", 
displayName = "Type"),
+                    @YamlProperty(name = "uri", type = "string", description = 
"Set the URI of the Endpoint.", displayName = "Uri")
             }
     )
     public static class EndpointValidatorDefinitionDeserializer extends 
YamlDeserializerBase<EndpointValidatorDefinition> {
@@ -9430,15 +9465,22 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
     }
 
     @YamlType(
+            nodes = {
+                    "load-transformer",
+                    "loadTransformer"
+            },
             types = 
org.apache.camel.model.transformer.LoadTransformerDefinition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            displayName = "Load Transformer",
+            description = "To load custom transformers from classpath scanning 
to be used for route level transformations.",
+            deprecated = false,
             properties = {
-                    @YamlProperty(name = "defaults", type = "boolean"),
-                    @YamlProperty(name = "fromType", type = "string"),
-                    @YamlProperty(name = "name", type = "string"),
-                    @YamlProperty(name = "packageScan", type = "string"),
-                    @YamlProperty(name = "scheme", type = "string"),
-                    @YamlProperty(name = "toType", type = "string")
+                    @YamlProperty(name = "defaults", type = "boolean", 
description = "Enable loading of default transformers.", displayName = 
"Defaults"),
+                    @YamlProperty(name = "fromType", type = "string", 
description = "Set the 'from' data type name. If you specify 'xml:XYZ', the 
transformer will be picked up if source type is 'xml:XYZ'. If you specify just 
'xml', the transformer matches with all of 'xml' source type like 'xml:ABC' or 
'xml:DEF'.", displayName = "From Type"),
+                    @YamlProperty(name = "name", type = "string", description 
= "Set the transformer name under which the transformer gets referenced when 
specifying the input/output data type on routes. If you specify a transformer 
name that matches a data type scheme like 'csv' the transformer will be picked 
up for all of 'csv:' from/to Java transformation. Note that the scheme matching 
is performed only when no exactly matched transformer exists.", displayName = 
"Name"),
+                    @YamlProperty(name = "packageScan", type = "string", 
description = "Set the classpath location to scan for annotated transformers.", 
displayName = "Package Scan"),
+                    @YamlProperty(name = "scheme", type = "string", 
description = "Set a scheme name supported by the transformer. If you specify 
'csv', the transformer will be picked up for all of 'csv' from/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists.", displayName = "Scheme"),
+                    @YamlProperty(name = "toType", type = "string", 
description = "Set the 'to' data type name. If you specify 'json:XYZ', the 
transformer will be picked up if destination type is 'json:XYZ'. If you specify 
just 'json', the transformer matches with all of 'json' destination type like 
'json:ABC' or 'json:DEF'.", displayName = "To Type")
             }
     )
     public static class LoadTransformerDefinitionDeserializer extends 
YamlDeserializerBase<LoadTransformerDefinition> {
@@ -12440,11 +12482,18 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
     }
 
     @YamlType(
+            nodes = {
+                    "predicate-validator",
+                    "predicateValidator"
+            },
             types = 
org.apache.camel.model.validator.PredicateValidatorDefinition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            displayName = "Predicate Validator",
+            description = "To use a predicate to perform validation on the 
route level.",
+            deprecated = false,
             properties = {
-                    @YamlProperty(name = "expression", type = 
"object:org.apache.camel.model.language.ExpressionDefinition", oneOf = 
"expression"),
-                    @YamlProperty(name = "type", type = "string")
+                    @YamlProperty(name = "expression", type = 
"object:org.apache.camel.model.language.ExpressionDefinition", displayName = 
"Expression", oneOf = "expression"),
+                    @YamlProperty(name = "type", type = "string", description 
= "Set the data type name. If you specify 'xml:XYZ', the validator will be 
picked up if message type is 'xml:XYZ'. If you specify just 'xml', the 
validator matches with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'.", 
displayName = "Type")
             }
     )
     public static class PredicateValidatorDefinitionDeserializer extends 
YamlDeserializerBase<PredicateValidatorDefinition> {
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
index bfb3c48e4d8..9f447a8933a 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/generated/java/org/apache/camel/dsl/yaml/deserializers/ModelDeserializersResolver.java
@@ -107,9 +107,15 @@ public final class ModelDeserializersResolver implements 
YamlDeserializerResolve
             case "custom-service-filter": return new 
ModelDeserializers.CustomServiceCallServiceFilterConfigurationDeserializer();
             case "customServiceFilter": return new 
ModelDeserializers.CustomServiceCallServiceFilterConfigurationDeserializer();
             case 
"org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration": 
return new 
ModelDeserializers.CustomServiceCallServiceFilterConfigurationDeserializer();
+            case "custom-transformer": return new 
ModelDeserializers.CustomTransformerDefinitionDeserializer();
+            case "customTransformer": return new 
ModelDeserializers.CustomTransformerDefinitionDeserializer();
             case 
"org.apache.camel.model.transformer.CustomTransformerDefinition": return new 
ModelDeserializers.CustomTransformerDefinitionDeserializer();
+            case "custom-validator": return new 
ModelDeserializers.CustomValidatorDefinitionDeserializer();
+            case "customValidator": return new 
ModelDeserializers.CustomValidatorDefinitionDeserializer();
             case "org.apache.camel.model.validator.CustomValidatorDefinition": 
return new ModelDeserializers.CustomValidatorDefinitionDeserializer();
             case "org.apache.camel.model.DataFormatDefinition": return new 
ModelDeserializers.DataFormatDefinitionDeserializer();
+            case "data-format-transformer": return new 
ModelDeserializers.DataFormatTransformerDefinitionDeserializer();
+            case "dataFormatTransformer": return new 
ModelDeserializers.DataFormatTransformerDefinitionDeserializer();
             case 
"org.apache.camel.model.transformer.DataFormatTransformerDefinition": return 
new ModelDeserializers.DataFormatTransformerDefinitionDeserializer();
             case "data-formats": return new 
ModelDeserializers.DataFormatsDefinitionDeserializer();
             case "dataFormats": return new 
ModelDeserializers.DataFormatsDefinitionDeserializer();
@@ -137,7 +143,11 @@ public final class ModelDeserializersResolver implements 
YamlDeserializerResolve
             case "dynamic-router": return new 
ModelDeserializers.DynamicRouterDefinitionDeserializer();
             case "dynamicRouter": return new 
ModelDeserializers.DynamicRouterDefinitionDeserializer();
             case "org.apache.camel.model.DynamicRouterDefinition": return new 
ModelDeserializers.DynamicRouterDefinitionDeserializer();
+            case "endpoint-transformer": return new 
ModelDeserializers.EndpointTransformerDefinitionDeserializer();
+            case "endpointTransformer": return new 
ModelDeserializers.EndpointTransformerDefinitionDeserializer();
             case 
"org.apache.camel.model.transformer.EndpointTransformerDefinition": return new 
ModelDeserializers.EndpointTransformerDefinitionDeserializer();
+            case "endpoint-validator": return new 
ModelDeserializers.EndpointValidatorDefinitionDeserializer();
+            case "endpointValidator": return new 
ModelDeserializers.EndpointValidatorDefinitionDeserializer();
             case 
"org.apache.camel.model.validator.EndpointValidatorDefinition": return new 
ModelDeserializers.EndpointValidatorDefinitionDeserializer();
             case "enrich": return new 
ModelDeserializers.EnrichDefinitionDeserializer();
             case "org.apache.camel.model.EnrichDefinition": return new 
ModelDeserializers.EnrichDefinitionDeserializer();
@@ -259,6 +269,8 @@ public final class ModelDeserializersResolver implements 
YamlDeserializerResolve
             case "load-balance": return new 
ModelDeserializers.LoadBalanceDefinitionDeserializer();
             case "loadBalance": return new 
ModelDeserializers.LoadBalanceDefinitionDeserializer();
             case "org.apache.camel.model.LoadBalanceDefinition": return new 
ModelDeserializers.LoadBalanceDefinitionDeserializer();
+            case "load-transformer": return new 
ModelDeserializers.LoadTransformerDefinitionDeserializer();
+            case "loadTransformer": return new 
ModelDeserializers.LoadTransformerDefinitionDeserializer();
             case 
"org.apache.camel.model.transformer.LoadTransformerDefinition": return new 
ModelDeserializers.LoadTransformerDefinitionDeserializer();
             case "log": return new 
ModelDeserializers.LogDefinitionDeserializer();
             case "org.apache.camel.model.LogDefinition": return new 
ModelDeserializers.LogDefinitionDeserializer();
@@ -340,6 +352,8 @@ public final class ModelDeserializersResolver implements 
YamlDeserializerResolve
             case "org.apache.camel.model.PollEnrichDefinition": return new 
ModelDeserializers.PollEnrichDefinitionDeserializer();
             case "post": return new 
ModelDeserializers.PostDefinitionDeserializer();
             case "org.apache.camel.model.rest.PostDefinition": return new 
ModelDeserializers.PostDefinitionDeserializer();
+            case "predicate-validator": return new 
ModelDeserializers.PredicateValidatorDefinitionDeserializer();
+            case "predicateValidator": return new 
ModelDeserializers.PredicateValidatorDefinitionDeserializer();
             case 
"org.apache.camel.model.validator.PredicateValidatorDefinition": return new 
ModelDeserializers.PredicateValidatorDefinitionDeserializer();
             case "process": return new 
ModelDeserializers.ProcessDefinitionDeserializer();
             case "org.apache.camel.model.ProcessDefinition": return new 
ModelDeserializers.ProcessDefinitionDeserializer();
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 1f32e52b89a..ebce8be6734 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
@@ -16217,30 +16217,46 @@
         "required" : [ "maxOverlap", "maxTokens" ]
       },
       "org.apache.camel.model.transformer.CustomTransformerDefinition" : {
+        "title" : "Custom Transformer",
+        "description" : "To use a custom transformer on a route level.",
         "type" : "object",
         "additionalProperties" : false,
         "properties" : {
           "className" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Class Name",
+            "description" : "Set a class name of the Transformer"
           },
           "fromType" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "From Type",
+            "description" : "Set the 'from' data type name. If you specify 
'xml:XYZ', the transformer will be picked up if source type is 'xml:XYZ'. If 
you specify just 'xml', the transformer matches with all of 'xml' source type 
like 'xml:ABC' or 'xml:DEF'."
           },
           "name" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Name",
+            "description" : "Set the transformer name under which the 
transformer gets referenced when specifying the input/output data type on 
routes. If you specify a transformer name that matches a data type scheme like 
'csv' the transformer will be picked up for all of 'csv:' from/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists."
           },
           "ref" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Ref",
+            "description" : "Set a bean reference of the Transformer"
           },
           "scheme" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Scheme",
+            "description" : "Set a scheme name supported by the transformer. 
If you specify 'csv', the transformer will be picked up for all of 'csv' 
from/to Java transformation. Note that the scheme matching is performed only 
when no exactly matched transformer exists."
           },
           "toType" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "To Type",
+            "description" : "Set the 'to' data type name. If you specify 
'json:XYZ', the transformer will be picked up if destination type is 
'json:XYZ'. If you specify just 'json', the transformer matches with all of 
'json' destination type like 'json:ABC' or 'json:DEF'."
           }
         }
       },
       "org.apache.camel.model.transformer.DataFormatTransformerDefinition" : {
+        "title" : "Data Format Transformer",
+        "description" : "Represents a 
org.apache.camel.processor.transformer.DataFormatTransformer which leverages 
org.apache.camel.spi.DataFormat to perform transformation. One of the 
DataFormat 'ref' or DataFormat 'type' needs to be specified.",
         "type" : "object",
         "additionalProperties" : false,
         "anyOf" : [ {
@@ -16682,16 +16698,24 @@
         } ],
         "properties" : {
           "fromType" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "From Type",
+            "description" : "Set the 'from' data type name. If you specify 
'xml:XYZ', the transformer will be picked up if source type is 'xml:XYZ'. If 
you specify just 'xml', the transformer matches with all of 'xml' source type 
like 'xml:ABC' or 'xml:DEF'."
           },
           "name" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Name",
+            "description" : "Set the transformer name under which the 
transformer gets referenced when specifying the input/output data type on 
routes. If you specify a transformer name that matches a data type scheme like 
'csv' the transformer will be picked up for all of 'csv:' from/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists."
           },
           "scheme" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Scheme",
+            "description" : "Set a scheme name supported by the transformer. 
If you specify 'csv', the transformer will be picked up for all of 'csv' 
from/to Java transformation. Note that the scheme matching is performed only 
when no exactly matched transformer exists."
           },
           "toType" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "To Type",
+            "description" : "Set the 'to' data type name. If you specify 
'json:XYZ', the transformer will be picked up if destination type is 
'json:XYZ'. If you specify just 'json', the transformer matches with all of 
'json' destination type like 'json:ABC' or 'json:DEF'."
           },
           "asn1" : { },
           "avro" : { },
@@ -16739,50 +16763,78 @@
         }
       },
       "org.apache.camel.model.transformer.EndpointTransformerDefinition" : {
+        "title" : "Endpoint Transformer",
+        "description" : "To use a Camel endpoint to perform transformation on 
the route level.",
         "type" : "object",
         "additionalProperties" : false,
         "properties" : {
           "fromType" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "From Type",
+            "description" : "Set the 'from' data type name. If you specify 
'xml:XYZ', the transformer will be picked up if source type is 'xml:XYZ'. If 
you specify just 'xml', the transformer matches with all of 'xml' source type 
like 'xml:ABC' or 'xml:DEF'."
           },
           "name" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Name",
+            "description" : "Set the transformer name under which the 
transformer gets referenced when specifying the input/output data type on 
routes. If you specify a transformer name that matches a data type scheme like 
'csv' the transformer will be picked up for all of 'csv:' from/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists."
           },
           "ref" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Ref",
+            "description" : "Set the reference of the Endpoint."
           },
           "scheme" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Scheme",
+            "description" : "Set a scheme name supported by the transformer. 
If you specify 'csv', the transformer will be picked up for all of 'csv' 
from/to Java transformation. Note that the scheme matching is performed only 
when no exactly matched transformer exists."
           },
           "toType" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "To Type",
+            "description" : "Set the 'to' data type name. If you specify 
'json:XYZ', the transformer will be picked up if destination type is 
'json:XYZ'. If you specify just 'json', the transformer matches with all of 
'json' destination type like 'json:ABC' or 'json:DEF'."
           },
           "uri" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Uri",
+            "description" : "Set the URI of the Endpoint."
           }
         }
       },
       "org.apache.camel.model.transformer.LoadTransformerDefinition" : {
+        "title" : "Load Transformer",
+        "description" : "To load custom transformers from classpath scanning 
to be used for route level transformations.",
         "type" : "object",
         "additionalProperties" : false,
         "properties" : {
           "defaults" : {
-            "type" : "boolean"
+            "type" : "boolean",
+            "title" : "Defaults",
+            "description" : "Enable loading of default transformers."
           },
           "fromType" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "From Type",
+            "description" : "Set the 'from' data type name. If you specify 
'xml:XYZ', the transformer will be picked up if source type is 'xml:XYZ'. If 
you specify just 'xml', the transformer matches with all of 'xml' source type 
like 'xml:ABC' or 'xml:DEF'."
           },
           "name" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Name",
+            "description" : "Set the transformer name under which the 
transformer gets referenced when specifying the input/output data type on 
routes. If you specify a transformer name that matches a data type scheme like 
'csv' the transformer will be picked up for all of 'csv:' from/to Java 
transformation. Note that the scheme matching is performed only when no exactly 
matched transformer exists."
           },
           "packageScan" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Package Scan",
+            "description" : "Set the classpath location to scan for annotated 
transformers."
           },
           "scheme" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Scheme",
+            "description" : "Set a scheme name supported by the transformer. 
If you specify 'csv', the transformer will be picked up for all of 'csv' 
from/to Java transformation. Note that the scheme matching is performed only 
when no exactly matched transformer exists."
           },
           "toType" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "To Type",
+            "description" : "Set the 'to' data type name. If you specify 
'json:XYZ', the transformer will be picked up if destination type is 
'json:XYZ'. If you specify just 'json', the transformer matches with all of 
'json' destination type like 'json:ABC' or 'json:DEF'."
           }
         }
       },
@@ -16807,36 +16859,54 @@
         }
       },
       "org.apache.camel.model.validator.CustomValidatorDefinition" : {
+        "title" : "Custom Validator",
+        "description" : "To use a custom validator on the route level.",
         "type" : "object",
         "additionalProperties" : false,
         "properties" : {
           "className" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Class Name",
+            "description" : "Set a class name of the Validator"
           },
           "ref" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Ref",
+            "description" : "Set a bean reference of the Validator"
           },
           "type" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Type",
+            "description" : "Set the data type name. If you specify 'xml:XYZ', 
the validator will be picked up if message type is 'xml:XYZ'. If you specify 
just 'xml', the validator matches with all of 'xml' message type like 'xml:ABC' 
or 'xml:DEF'."
           }
         }
       },
       "org.apache.camel.model.validator.EndpointValidatorDefinition" : {
+        "title" : "Endpoint Validator",
+        "description" : "To use a Camel endpoint to perform validation on the 
route level.",
         "type" : "object",
         "additionalProperties" : false,
         "properties" : {
           "ref" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Ref",
+            "description" : "Set the reference of the Endpoint."
           },
           "type" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Type",
+            "description" : "Set the data type name. If you specify 'xml:XYZ', 
the validator will be picked up if message type is 'xml:XYZ'. If you specify 
just 'xml', the validator matches with all of 'xml' message type like 'xml:ABC' 
or 'xml:DEF'."
           },
           "uri" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Uri",
+            "description" : "Set the URI of the Endpoint."
           }
         }
       },
       "org.apache.camel.model.validator.PredicateValidatorDefinition" : {
+        "title" : "Predicate Validator",
+        "description" : "To use a predicate to perform validation on the route 
level.",
         "type" : "object",
         "additionalProperties" : false,
         "anyOf" : [ {
@@ -16845,6 +16915,7 @@
             "required" : [ "expression" ],
             "properties" : {
               "expression" : {
+                "title" : "Expression",
                 "$ref" : 
"#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"
               }
             }
@@ -16858,7 +16929,9 @@
         } ],
         "properties" : {
           "type" : {
-            "type" : "string"
+            "type" : "string",
+            "title" : "Type",
+            "description" : "Set the data type name. If you specify 'xml:XYZ', 
the validator will be picked up if message type is 'xml:XYZ'. If you specify 
just 'xml', the validator matches with all of 'xml' message type like 'xml:ABC' 
or 'xml:DEF'."
           },
           "expression" : { }
         }
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
index 4eacf4e191c..157592f332a 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
@@ -263,8 +263,6 @@ public class SchemaGeneratorMojo extends 
AbstractGeneratorMojo {
         EipModel eipModel = findEipModelProperties(classElement, name);
         findEipModelExchangeProperties(classElement, name, eipModel);
 
-        // get endpoint information which is divided into paths and options
-        // (though there should really only be one path)
         Set<EipOptionModel> eipOptions = new TreeSet<>(new 
EipOptionComparator(eipModel));
         findClassProperties(eipOptions, classElement, classElement, "", name);
 

Reply via email to