You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/04/06 07:17:53 UTC

[camel] 07/09: CAMEL-16834: error handler in model DSL. WIP

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

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

commit c0e8cd88b1d4d4eba77c4eb9c64610d5c60daeb0
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Apr 6 08:00:54 2022 +0200

    CAMEL-16834: error handler in model DSL. WIP
---
 .../model/errorhandler/deadLetterChannel.json      | 26 +++++-----
 .../model/errorhandler/defaultErrorHandler.json    | 24 +++++-----
 .../errorhandler/transactionErrorHandler.json      | 29 +++++------
 .../errorhandler/BaseErrorHandlerDefinition.java   |  3 ++
 .../errorhandler/DeadLetterChannelDefinition.java  |  4 +-
 .../DefaultErrorHandlerDefinition.java             | 18 ++++---
 .../TransactionErrorHandlerDefinition.java         | 56 +++++++++++++++++++---
 .../java/org/apache/camel/xml/in/ModelParser.java  |  1 +
 8 files changed, 106 insertions(+), 55 deletions(-)

diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/deadLetterChannel.json b/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/deadLetterChannel.json
index 276e0f1e050..dc4e2e492fe 100644
--- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/deadLetterChannel.json
+++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/deadLetterChannel.json
@@ -13,19 +13,19 @@
   },
   "properties": {
     "deadLetterUri": { "kind": "attribute", "displayName": "Dead Letter Uri", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The dead letter endpoint uri for the Dead Letter error handler." },
-    "deadLetterHandleNewException": { "kind": "attribute", "displayName": "Dead Letter Handle New Exception", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "true", "description": "Whether the dead letter channel should handle (and ignore) any new exception that may been thrown during sending the message to the dead letter endpoint. The default value is true which means any such kind of except [...]
-    "loggerRef": { "kind": "attribute", "displayName": "Logger Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "References to a logger to use as logger for the error handler" },
-    "level": { "kind": "attribute", "displayName": "Level", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "ERROR", "description": "Logging level to use when using the logging error handler type." },
-    "rollbackLoggingLevel": { "kind": "attribute", "displayName": "Rollback Logging Level", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "description": "Sets the logging level to use for logging transactional rollback. This option is default WARN." },
-    "logName": { "kind": "attribute", "displayName": "Log Name", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the logger to use for the logging error handler" },
-    "useOriginalMessage": { "kind": "attribute", "displayName": "Use Original Message", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache [...]
-    "useOriginalBody": { "kind": "attribute", "displayName": "Use Original Body", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.E [...]
-    "onRedeliveryRef": { "kind": "attribute", "displayName": "On Redelivery Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered." },
-    "onExceptionOccurredRef": { "kind": "attribute", "displayName": "On Exception Occurred Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ign [...]
-    "onPrepareFailureRef": { "kind": "attribute", "displayName": "On Prepare Failure Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor \/ dead letter channel. This allows for example to enrich the message before sending to a dead letter queue." },
-    "retryWhileRef": { "kind": "attribute", "displayName": "Retry While Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false." },
-    "redeliveryPolicyRef": { "kind": "attribute", "displayName": "Redelivery Policy Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a RedeliveryPolicy to be used for redelivery settings." },
-    "executorServiceRef": { "kind": "attribute", "displayName": "Executor Service Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a thread pool to be used by the error handler" },
+    "deadLetterHandleNewException": { "kind": "attribute", "displayName": "Dead Letter Handle New Exception", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the dead letter channel should handle (and ignore) any new exception that may been thrown during sending the message to the dead letter endpoint. The default value is true which means an [...]
+    "loggerRef": { "kind": "attribute", "displayName": "Logger Ref", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "References to a logger to use as logger for the error handler" },
+    "level": { "kind": "attribute", "displayName": "Level", "label": "advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "ERROR", "description": "Logging level to use when using the logging error handler type." },
+    "rollbackLoggingLevel": { "kind": "attribute", "displayName": "Rollback Logging Level", "label": "advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "description": "Sets the logging level to use for logging transactional rollback. This option is default WARN." },
+    "logName": { "kind": "attribute", "displayName": "Log Name", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the logger to use for the logging error handler" },
+    "useOriginalMessage": { "kind": "attribute", "displayName": "Use Original Message", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have fail [...]
+    "useOriginalBody": { "kind": "attribute", "displayName": "Use Original Body", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and t [...]
+    "onRedeliveryRef": { "kind": "attribute", "displayName": "On Redelivery Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered." },
+    "onExceptionOccurredRef": { "kind": "attribute", "displayName": "On Exception Occurred Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown  [...]
+    "onPrepareFailureRef": { "kind": "attribute", "displayName": "On Prepare Failure Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor \/ dead letter channel. This allows for example to enrich the message before sending to a dead letter queue." },
+    "retryWhileRef": { "kind": "attribute", "displayName": "Retry While Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false." },
+    "redeliveryPolicyRef": { "kind": "attribute", "displayName": "Redelivery Policy Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.processor.errorhandler.RedeliveryPolicy", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a RedeliveryPolicy to be used for redelivery settings." },
+    "executorServiceRef": { "kind": "attribute", "displayName": "Executor Service Ref", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a thread pool to be used by the error handler" },
     "redeliveryPolicy": { "kind": "element", "displayName": "Redelivery Policy", "required": false, "type": "object", "javaType": "org.apache.camel.model.RedeliveryPolicyDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the redelivery settings" },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of this node" }
   }
diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/defaultErrorHandler.json b/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/defaultErrorHandler.json
index b005124e34d..f696e9581b9 100644
--- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/defaultErrorHandler.json
+++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/defaultErrorHandler.json
@@ -12,18 +12,18 @@
     "output": false
   },
   "properties": {
-    "loggerRef": { "kind": "attribute", "displayName": "Logger Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "References to a logger to use as logger for the error handler" },
-    "level": { "kind": "attribute", "displayName": "Level", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "ERROR", "description": "Logging level to use when using the logging error handler type." },
-    "rollbackLoggingLevel": { "kind": "attribute", "displayName": "Rollback Logging Level", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "description": "Sets the logging level to use for logging transactional rollback. This option is default WARN." },
-    "logName": { "kind": "attribute", "displayName": "Log Name", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the logger to use for the logging error handler" },
-    "useOriginalMessage": { "kind": "attribute", "displayName": "Use Original Message", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache [...]
-    "useOriginalBody": { "kind": "attribute", "displayName": "Use Original Body", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.E [...]
-    "onRedeliveryRef": { "kind": "attribute", "displayName": "On Redelivery Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered." },
-    "onExceptionOccurredRef": { "kind": "attribute", "displayName": "On Exception Occurred Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ign [...]
-    "onPrepareFailureRef": { "kind": "attribute", "displayName": "On Prepare Failure Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor \/ dead letter channel. This allows for example to enrich the message before sending to a dead letter queue." },
-    "retryWhileRef": { "kind": "attribute", "displayName": "Retry While Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false." },
-    "redeliveryPolicyRef": { "kind": "attribute", "displayName": "Redelivery Policy Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a RedeliveryPolicy to be used for redelivery settings." },
-    "executorServiceRef": { "kind": "attribute", "displayName": "Executor Service Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a thread pool to be used by the error handler" },
+    "loggerRef": { "kind": "attribute", "displayName": "Logger Ref", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "References to a logger to use as logger for the error handler" },
+    "level": { "kind": "attribute", "displayName": "Level", "label": "advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "ERROR", "description": "Logging level to use when using the logging error handler type." },
+    "rollbackLoggingLevel": { "kind": "attribute", "displayName": "Rollback Logging Level", "label": "advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "description": "Sets the logging level to use for logging transactional rollback. This option is default WARN." },
+    "logName": { "kind": "attribute", "displayName": "Log Name", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the logger to use for the logging error handler" },
+    "useOriginalMessage": { "kind": "attribute", "displayName": "Use Original Message", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have fail [...]
+    "useOriginalBody": { "kind": "attribute", "displayName": "Use Original Body", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and t [...]
+    "onRedeliveryRef": { "kind": "attribute", "displayName": "On Redelivery Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered." },
+    "onExceptionOccurredRef": { "kind": "attribute", "displayName": "On Exception Occurred Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown  [...]
+    "onPrepareFailureRef": { "kind": "attribute", "displayName": "On Prepare Failure Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor \/ dead letter channel. This allows for example to enrich the message before sending to a dead letter queue." },
+    "retryWhileRef": { "kind": "attribute", "displayName": "Retry While Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false." },
+    "redeliveryPolicyRef": { "kind": "attribute", "displayName": "Redelivery Policy Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.processor.errorhandler.RedeliveryPolicy", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a RedeliveryPolicy to be used for redelivery settings." },
+    "executorServiceRef": { "kind": "attribute", "displayName": "Executor Service Ref", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a thread pool to be used by the error handler" },
     "redeliveryPolicy": { "kind": "element", "displayName": "Redelivery Policy", "required": false, "type": "object", "javaType": "org.apache.camel.model.RedeliveryPolicyDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the redelivery settings" },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of this node" }
   }
diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/transactionErrorHandler.json b/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/transactionErrorHandler.json
index 5ead1d35c39..f9f7610902a 100644
--- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/transactionErrorHandler.json
+++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/errorhandler/transactionErrorHandler.json
@@ -12,20 +12,21 @@
     "output": false
   },
   "properties": {
-    "transactionTemplateRef": { "kind": "attribute", "displayName": "Transaction Template Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "References to the spring transaction template to use." },
-    "transactionManagerRef": { "kind": "attribute", "displayName": "Transaction Manager Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "References to the spring platform transaction manager to use." },
-    "loggerRef": { "kind": "attribute", "displayName": "Logger Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "References to a logger to use as logger for the error handler" },
-    "level": { "kind": "attribute", "displayName": "Level", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "ERROR", "description": "Logging level to use when using the logging error handler type." },
-    "rollbackLoggingLevel": { "kind": "attribute", "displayName": "Rollback Logging Level", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "description": "Sets the logging level to use for logging transactional rollback. This option is default WARN." },
-    "logName": { "kind": "attribute", "displayName": "Log Name", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the logger to use for the logging error handler" },
-    "useOriginalMessage": { "kind": "attribute", "displayName": "Use Original Message", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache [...]
-    "useOriginalBody": { "kind": "attribute", "displayName": "Use Original Body", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.E [...]
-    "onRedeliveryRef": { "kind": "attribute", "displayName": "On Redelivery Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered." },
-    "onExceptionOccurredRef": { "kind": "attribute", "displayName": "On Exception Occurred Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ign [...]
-    "onPrepareFailureRef": { "kind": "attribute", "displayName": "On Prepare Failure Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor \/ dead letter channel. This allows for example to enrich the message before sending to a dead letter queue." },
-    "retryWhileRef": { "kind": "attribute", "displayName": "Retry While Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false." },
-    "redeliveryPolicyRef": { "kind": "attribute", "displayName": "Redelivery Policy Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a RedeliveryPolicy to be used for redelivery settings." },
-    "executorServiceRef": { "kind": "attribute", "displayName": "Executor Service Ref", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a thread pool to be used by the error handler" },
+    "transactedPolicy": { "kind": "attribute", "displayName": "Transacted Policy", "required": false, "type": "object", "javaType": "org.apache.camel.spi.TransactedPolicy", "deprecated": false, "autowired": false, "secret": false, "description": "The transacted policy to use that is configured for either Spring or JTA based transactions." },
+    "transactionTemplateRef": { "kind": "attribute", "displayName": "Transaction Template Ref", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "References to the spring transaction template (org.springframework.transaction.support.TransactionTemplate) to use." },
+    "transactionManagerRef": { "kind": "attribute", "displayName": "Transaction Manager Ref", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "References to the spring platform transaction manager (org.springframework.transaction.PlatformTransactionManager) to use." },
+    "loggerRef": { "kind": "attribute", "displayName": "Logger Ref", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "References to a logger to use as logger for the error handler" },
+    "level": { "kind": "attribute", "displayName": "Level", "label": "advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "ERROR", "description": "Logging level to use when using the logging error handler type." },
+    "rollbackLoggingLevel": { "kind": "attribute", "displayName": "Rollback Logging Level", "label": "advanced", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "debug", "error", "info", "off", "trace", "warn" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "WARN", "description": "Sets the logging level to use for logging transactional rollback. This option is default WARN." },
+    "logName": { "kind": "attribute", "displayName": "Log Name", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Name of the logger to use for the logging error handler" },
+    "useOriginalMessage": { "kind": "attribute", "displayName": "Use Original Message", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have fail [...]
+    "useOriginalBody": { "kind": "attribute", "displayName": "Use Original Body", "label": "advanced", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and t [...]
+    "onRedeliveryRef": { "kind": "attribute", "displayName": "On Redelivery Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed before a redelivery attempt. Can be used to change the org.apache.camel.Exchange before its being redelivered." },
+    "onExceptionOccurredRef": { "kind": "attribute", "displayName": "On Exception Occurred Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown  [...]
+    "onPrepareFailureRef": { "kind": "attribute", "displayName": "On Prepare Failure Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor \/ dead letter channel. This allows for example to enrich the message before sending to a dead letter queue." },
+    "retryWhileRef": { "kind": "attribute", "displayName": "Retry While Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.Processor", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false." },
+    "redeliveryPolicyRef": { "kind": "attribute", "displayName": "Redelivery Policy Ref", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.processor.errorhandler.RedeliveryPolicy", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a RedeliveryPolicy to be used for redelivery settings." },
+    "executorServiceRef": { "kind": "attribute", "displayName": "Executor Service Ref", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a reference to a thread pool to be used by the error handler" },
     "redeliveryPolicy": { "kind": "element", "displayName": "Redelivery Policy", "required": false, "type": "object", "javaType": "org.apache.camel.model.RedeliveryPolicyDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the redelivery settings" },
     "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of this node" }
   }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/BaseErrorHandlerDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/BaseErrorHandlerDefinition.java
index 5e5343811bf..58ca5986d62 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/BaseErrorHandlerDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/BaseErrorHandlerDefinition.java
@@ -19,6 +19,9 @@ package org.apache.camel.model.errorhandler;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.model.IdentifiedType;
 
+/**
+ * Base class for error handler models.
+ */
 public abstract class BaseErrorHandlerDefinition extends IdentifiedType implements ErrorHandlerFactory {
 
 }
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DeadLetterChannelDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DeadLetterChannelDefinition.java
index b9cd738814f..bdeafcdc0a3 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DeadLetterChannelDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DeadLetterChannelDefinition.java
@@ -33,12 +33,10 @@ import org.apache.camel.spi.Metadata;
 @XmlAccessorType(XmlAccessType.FIELD)
 public class DeadLetterChannelDefinition extends DefaultErrorHandlerDefinition {
 
-    // TODO: label, java type, ref
-
     @XmlAttribute(required = true)
     private String deadLetterUri;
     @XmlAttribute
-    @Metadata(defaultValue = "true")
+    @Metadata(label = "advanced", defaultValue = "true", javaType = "java.lang.Boolean")
     private String deadLetterHandleNewException;
 
     public DeadLetterChannelDefinition() {
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DefaultErrorHandlerDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DefaultErrorHandlerDefinition.java
index 60501a5d008..c65787f28f8 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DefaultErrorHandlerDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/DefaultErrorHandlerDefinition.java
@@ -46,8 +46,6 @@ import org.slf4j.LoggerFactory;
 @XmlAccessorType(XmlAccessType.FIELD)
 public class DefaultErrorHandlerDefinition extends BaseErrorHandlerDefinition implements ErrorHandlerBuilder {
 
-    // TODO: label, java type, ref
-
     @XmlTransient
     private CamelLogger loggerBean;
     @XmlTransient
@@ -62,32 +60,40 @@ public class DefaultErrorHandlerDefinition extends BaseErrorHandlerDefinition im
     private Predicate retryWhilePredicate;
 
     @XmlAttribute
+    @Metadata(label = "advanced")
     private String loggerRef;
     @XmlAttribute
-    @Metadata(defaultValue = "ERROR")
+    @Metadata(label = "advanced", defaultValue = "ERROR")
     private LoggingLevel level;
     @XmlAttribute
-    @Metadata(defaultValue = "WARN")
+    @Metadata(label = "advanced", defaultValue = "WARN")
     private LoggingLevel rollbackLoggingLevel;
     @XmlAttribute
+    @Metadata(label = "advanced")
     private String logName;
     @XmlAttribute
-    @Metadata(javaType = "java.lang.Boolean")
+    @Metadata(label = "advanced", javaType = "java.lang.Boolean")
     private String useOriginalMessage;
     @XmlAttribute
-    @Metadata(javaType = "java.lang.Boolean")
+    @Metadata(label = "advanced", javaType = "java.lang.Boolean")
     private String useOriginalBody;
     @XmlAttribute
+    @Metadata(label = "advanced", javaType = "org.apache.camel.Processor")
     private String onRedeliveryRef;
     @XmlAttribute
+    @Metadata(label = "advanced", javaType = "org.apache.camel.Processor")
     private String onExceptionOccurredRef;
     @XmlAttribute
+    @Metadata(label = "advanced", javaType = "org.apache.camel.Processor")
     private String onPrepareFailureRef;
     @XmlAttribute
+    @Metadata(label = "advanced", javaType = "org.apache.camel.Processor")
     private String retryWhileRef;
     @XmlAttribute
+    @Metadata(label = "advanced", javaType = "org.apache.camel.processor.errorhandler.RedeliveryPolicy")
     private String redeliveryPolicyRef;
     @XmlAttribute
+    @Metadata(label = "advanced", javaType = "java.util.concurrent.ScheduledExecutorService")
     private String executorServiceRef;
     @XmlElement
     private RedeliveryPolicyDefinition redeliveryPolicy;
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/TransactionErrorHandlerDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/TransactionErrorHandlerDefinition.java
index 3c2525660c3..6b37c1792f8 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/TransactionErrorHandlerDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/TransactionErrorHandlerDefinition.java
@@ -25,20 +25,21 @@ import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.spi.Metadata;
 
 /**
- * Transactional error handler.
+ * Transactional error handler (requires either camel-spring or camel-jta using traditional JTA transactions).
  */
 @Metadata(label = "configuration,error")
 @XmlRootElement(name = "transactionErrorHandler")
 @XmlAccessorType(XmlAccessType.FIELD)
 public class TransactionErrorHandlerDefinition extends DefaultErrorHandlerDefinition {
 
-    // TODO: fluent builders
-    // TODO: label, java type, ref
-    // TODO: spring and jta
-
     @XmlAttribute
+    @Metadata(javaType = "org.apache.camel.spi.TransactedPolicy")
+    private String transactedPolicy;
+    @XmlAttribute
+    @Metadata(label = "advanced")
     private String transactionTemplateRef;
     @XmlAttribute
+    @Metadata(label = "advanced")
     private String transactionManagerRef;
 
     @Override
@@ -54,17 +55,30 @@ public class TransactionErrorHandlerDefinition extends DefaultErrorHandlerDefini
     }
 
     protected void cloneBuilder(TransactionErrorHandlerDefinition other) {
+        other.setTransactedPolicy(getTransactedPolicy());
         other.setTransactionManagerRef(getTransactionManagerRef());
         other.setTransactionTemplateRef(getTransactionTemplateRef());
         super.cloneBuilder(other);
     }
 
+    public String getTransactedPolicy() {
+        return transactedPolicy;
+    }
+
+    /**
+     * The transacted policy to use that is configured for either Spring or JTA based transactions.
+     */
+    public void setTransactedPolicy(String transactedPolicy) {
+        this.transactedPolicy = transactedPolicy;
+    }
+
     public String getTransactionTemplateRef() {
         return transactionTemplateRef;
     }
 
     /**
-     * References to the spring transaction template to use.
+     * References to the spring transaction template (org.springframework.transaction.support.TransactionTemplate) to
+     * use.
      */
     public void setTransactionTemplateRef(String transactionTemplateRef) {
         this.transactionTemplateRef = transactionTemplateRef;
@@ -75,10 +89,38 @@ public class TransactionErrorHandlerDefinition extends DefaultErrorHandlerDefini
     }
 
     /**
-     * References to the spring platform transaction manager to use.
+     * References to the spring platform transaction manager
+     * (org.springframework.transaction.PlatformTransactionManager) to use.
      */
     public void setTransactionManagerRef(String transactionManagerRef) {
         this.transactionManagerRef = transactionManagerRef;
     }
 
+    /**
+     * References to the spring transaction template (org.springframework.transaction.support.TransactionTemplate) to
+     * use.
+     */
+    public TransactionErrorHandlerDefinition transactedPolicy(String transactedPolicy) {
+        setTransactedPolicy(transactedPolicy);
+        return this;
+    }
+
+    /**
+     * References to the spring transaction template (org.springframework.transaction.support.TransactionTemplate) to
+     * use.
+     */
+    public TransactionErrorHandlerDefinition transactionTemplate(String transactionTemplateRef) {
+        setTransactionTemplateRef(transactionTemplateRef);
+        return this;
+    }
+
+    /**
+     * References to the spring platform transaction manager
+     * (org.springframework.transaction.PlatformTransactionManager) to use.
+     */
+    public TransactionErrorHandlerDefinition transactionManager(String transactionManagerRef) {
+        setTransactionManagerRef(transactionManagerRef);
+        return this;
+    }
+
 }
diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
index 47dd3f00c76..860d83138cd 100644
--- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
+++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java
@@ -2582,6 +2582,7 @@ public class ModelParser extends BaseParser {
     protected TransactionErrorHandlerDefinition doParseTransactionErrorHandlerDefinition() throws IOException, XmlPullParserException {
         return doParse(new TransactionErrorHandlerDefinition(), (def, key, val) -> {
             switch (key) {
+                case "transactedPolicy": def.setTransactedPolicy(val); break;
                 case "transactionManagerRef": def.setTransactionManagerRef(val); break;
                 case "transactionTemplateRef": def.setTransactionTemplateRef(val); break;
                 default: return defaultErrorHandlerDefinitionAttributeHandler().accept(def, key, val);