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 <[email protected]>
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);

Reply via email to