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 19a46f43ac9fb997a03c6d889a69f86f94df44fc
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Apr 7 12:11:54 2022 +0200

    CAMEL-16834: error handler in model DSL. WIP
---
 .../dsl/yaml/deserializers/ModelDeserializers.java | 682 ++++++++++++++++++++-
 .../deserializers/ModelDeserializersResolver.java  |  21 +
 .../src/generated/resources/camel-yaml-dsl.json    | 253 ++++++++
 .../src/generated/resources/camelYamlDsl.json      | 253 ++++++++
 .../camel/dsl/yaml/YamlRoutesBuilderLoader.java    |  31 +-
 .../camel/dsl/yaml/KameletBindingLoaderTest.groovy |  34 +-
 6 files changed, 1225 insertions(+), 49 deletions(-)

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 12a5b583a78..164793b45b9 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
@@ -26,6 +26,7 @@ import org.apache.camel.model.DelayDefinition;
 import org.apache.camel.model.DescriptionDefinition;
 import org.apache.camel.model.DynamicRouterDefinition;
 import org.apache.camel.model.EnrichDefinition;
+import org.apache.camel.model.ErrorHandlerDefinition;
 import org.apache.camel.model.FaultToleranceConfigurationDefinition;
 import org.apache.camel.model.FilterDefinition;
 import org.apache.camel.model.FinallyDefinition;
@@ -167,6 +168,12 @@ import org.apache.camel.model.dataformat.YAMLDataFormat;
 import org.apache.camel.model.dataformat.YAMLTypeFilterDefinition;
 import org.apache.camel.model.dataformat.ZipDeflaterDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
+import org.apache.camel.model.errorhandler.DeadLetterChannelDefinition;
+import org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition;
+import org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition;
+import 
org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition;
+import org.apache.camel.model.errorhandler.NoErrorHandlerDefinition;
+import 
org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition;
 import org.apache.camel.model.language.CSimpleExpression;
 import org.apache.camel.model.language.ConstantExpression;
 import org.apache.camel.model.language.DatasonnetExpression;
@@ -3918,6 +3925,133 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
         }
     }
 
+    @YamlType(
+            inline = true,
+            types = 
org.apache.camel.model.errorhandler.DeadLetterChannelDefinition.class,
+            order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            nodes = {
+                    "dead-letter-channel",
+                    "deadLetterChannel"
+            },
+            properties = {
+                    @YamlProperty(name = "dead-letter-handle-new-exception", 
type = "boolean"),
+                    @YamlProperty(name = "dead-letter-uri", type = "string", 
required = true),
+                    @YamlProperty(name = "executor-service-ref", type = 
"string"),
+                    @YamlProperty(name = "id", type = "string"),
+                    @YamlProperty(name = "level", type = 
"enum:DEBUG,ERROR,INFO,OFF,TRACE,WARN"),
+                    @YamlProperty(name = "log-name", type = "string"),
+                    @YamlProperty(name = "logger-ref", type = "string"),
+                    @YamlProperty(name = "on-exception-occurred-ref", type = 
"string"),
+                    @YamlProperty(name = "on-prepare-failure-ref", type = 
"string"),
+                    @YamlProperty(name = "on-redelivery-ref", type = "string"),
+                    @YamlProperty(name = "redelivery-policy", type = 
"object:org.apache.camel.model.RedeliveryPolicyDefinition"),
+                    @YamlProperty(name = "redelivery-policy-ref", type = 
"string"),
+                    @YamlProperty(name = "retry-while-ref", type = "string"),
+                    @YamlProperty(name = "use-original-body", type = 
"boolean"),
+                    @YamlProperty(name = "use-original-message", type = 
"boolean")
+            }
+    )
+    public static class DeadLetterChannelDefinitionDeserializer extends 
YamlDeserializerBase<DeadLetterChannelDefinition> {
+        public DeadLetterChannelDefinitionDeserializer() {
+            super(DeadLetterChannelDefinition.class);
+        }
+
+        @Override
+        protected DeadLetterChannelDefinition newInstance() {
+            return new DeadLetterChannelDefinition();
+        }
+
+        @Override
+        protected DeadLetterChannelDefinition newInstance(String value) {
+            return new DeadLetterChannelDefinition(value);
+        }
+
+        @Override
+        protected boolean setProperty(DeadLetterChannelDefinition target, 
String propertyKey,
+                String propertyName, Node node) {
+            switch(propertyKey) {
+                case "dead-letter-handle-new-exception": {
+                    String val = asText(node);
+                    target.setDeadLetterHandleNewException(val);
+                    break;
+                }
+                case "dead-letter-uri": {
+                    String val = asText(node);
+                    target.setDeadLetterUri(val);
+                    break;
+                }
+                case "executor-service-ref": {
+                    String val = asText(node);
+                    target.setExecutorServiceRef(val);
+                    break;
+                }
+                case "id": {
+                    String val = asText(node);
+                    target.setId(val);
+                    break;
+                }
+                case "level": {
+                    target.setLevel(asEnum(node, 
org.apache.camel.LoggingLevel.class));
+                    break;
+                }
+                case "log-name": {
+                    String val = asText(node);
+                    target.setLogName(val);
+                    break;
+                }
+                case "logger-ref": {
+                    String val = asText(node);
+                    target.setLoggerRef(val);
+                    break;
+                }
+                case "on-exception-occurred-ref": {
+                    String val = asText(node);
+                    target.setOnExceptionOccurredRef(val);
+                    break;
+                }
+                case "on-prepare-failure-ref": {
+                    String val = asText(node);
+                    target.setOnPrepareFailureRef(val);
+                    break;
+                }
+                case "on-redelivery-ref": {
+                    String val = asText(node);
+                    target.setOnRedeliveryRef(val);
+                    break;
+                }
+                case "redelivery-policy": {
+                    org.apache.camel.model.RedeliveryPolicyDefinition val = 
asType(node, org.apache.camel.model.RedeliveryPolicyDefinition.class);
+                    target.setRedeliveryPolicy(val);
+                    break;
+                }
+                case "redelivery-policy-ref": {
+                    String val = asText(node);
+                    target.setRedeliveryPolicyRef(val);
+                    break;
+                }
+                case "retry-while-ref": {
+                    String val = asText(node);
+                    target.setRetryWhileRef(val);
+                    break;
+                }
+                case "use-original-body": {
+                    String val = asText(node);
+                    target.setUseOriginalBody(val);
+                    break;
+                }
+                case "use-original-message": {
+                    String val = asText(node);
+                    target.setUseOriginalMessage(val);
+                    break;
+                }
+                default: {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
     @YamlType(
             types = org.apache.camel.builder.DefaultErrorHandlerBuilder.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
@@ -3994,6 +4128,115 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
         }
     }
 
+    @YamlType(
+            types = 
org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition.class,
+            order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            nodes = {
+                    "default-error-handler",
+                    "defaultErrorHandler"
+            },
+            properties = {
+                    @YamlProperty(name = "executor-service-ref", type = 
"string"),
+                    @YamlProperty(name = "id", type = "string"),
+                    @YamlProperty(name = "level", type = 
"enum:DEBUG,ERROR,INFO,OFF,TRACE,WARN"),
+                    @YamlProperty(name = "log-name", type = "string"),
+                    @YamlProperty(name = "logger-ref", type = "string"),
+                    @YamlProperty(name = "on-exception-occurred-ref", type = 
"string"),
+                    @YamlProperty(name = "on-prepare-failure-ref", type = 
"string"),
+                    @YamlProperty(name = "on-redelivery-ref", type = "string"),
+                    @YamlProperty(name = "redelivery-policy", type = 
"object:org.apache.camel.model.RedeliveryPolicyDefinition"),
+                    @YamlProperty(name = "redelivery-policy-ref", type = 
"string"),
+                    @YamlProperty(name = "retry-while-ref", type = "string"),
+                    @YamlProperty(name = "use-original-body", type = 
"boolean"),
+                    @YamlProperty(name = "use-original-message", type = 
"boolean")
+            }
+    )
+    public static class DefaultErrorHandlerDefinitionDeserializer extends 
YamlDeserializerBase<DefaultErrorHandlerDefinition> {
+        public DefaultErrorHandlerDefinitionDeserializer() {
+            super(DefaultErrorHandlerDefinition.class);
+        }
+
+        @Override
+        protected DefaultErrorHandlerDefinition newInstance() {
+            return new DefaultErrorHandlerDefinition();
+        }
+
+        @Override
+        protected boolean setProperty(DefaultErrorHandlerDefinition target, 
String propertyKey,
+                String propertyName, Node node) {
+            switch(propertyKey) {
+                case "executor-service-ref": {
+                    String val = asText(node);
+                    target.setExecutorServiceRef(val);
+                    break;
+                }
+                case "id": {
+                    String val = asText(node);
+                    target.setId(val);
+                    break;
+                }
+                case "level": {
+                    target.setLevel(asEnum(node, 
org.apache.camel.LoggingLevel.class));
+                    break;
+                }
+                case "log-name": {
+                    String val = asText(node);
+                    target.setLogName(val);
+                    break;
+                }
+                case "logger-ref": {
+                    String val = asText(node);
+                    target.setLoggerRef(val);
+                    break;
+                }
+                case "on-exception-occurred-ref": {
+                    String val = asText(node);
+                    target.setOnExceptionOccurredRef(val);
+                    break;
+                }
+                case "on-prepare-failure-ref": {
+                    String val = asText(node);
+                    target.setOnPrepareFailureRef(val);
+                    break;
+                }
+                case "on-redelivery-ref": {
+                    String val = asText(node);
+                    target.setOnRedeliveryRef(val);
+                    break;
+                }
+                case "redelivery-policy": {
+                    org.apache.camel.model.RedeliveryPolicyDefinition val = 
asType(node, org.apache.camel.model.RedeliveryPolicyDefinition.class);
+                    target.setRedeliveryPolicy(val);
+                    break;
+                }
+                case "redelivery-policy-ref": {
+                    String val = asText(node);
+                    target.setRedeliveryPolicyRef(val);
+                    break;
+                }
+                case "retry-while-ref": {
+                    String val = asText(node);
+                    target.setRetryWhileRef(val);
+                    break;
+                }
+                case "use-original-body": {
+                    String val = asText(node);
+                    target.setUseOriginalBody(val);
+                    break;
+                }
+                case "use-original-message": {
+                    String val = asText(node);
+                    target.setUseOriginalMessage(val);
+                    break;
+                }
+                default: {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
     @YamlType(
             types = 
org.apache.camel.model.cloud.DefaultServiceCallServiceLoadBalancerConfiguration.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
@@ -4654,40 +4897,163 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
 
     @YamlType(
             inline = true,
-            types = org.apache.camel.builder.ErrorHandlerBuilderRef.class,
+            types = org.apache.camel.builder.ErrorHandlerBuilderRef.class,
+            order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            properties = {
+                    @YamlProperty(name = "ref", type = "string"),
+                    @YamlProperty(name = "support-transacted", type = 
"boolean")
+            }
+    )
+    public static class ErrorHandlerBuilderRefDeserializer extends 
YamlDeserializerBase<ErrorHandlerBuilderRef> {
+        public ErrorHandlerBuilderRefDeserializer() {
+            super(ErrorHandlerBuilderRef.class);
+        }
+
+        @Override
+        protected ErrorHandlerBuilderRef newInstance() {
+            return new ErrorHandlerBuilderRef();
+        }
+
+        @Override
+        protected ErrorHandlerBuilderRef newInstance(String value) {
+            return new ErrorHandlerBuilderRef(value);
+        }
+
+        @Override
+        protected boolean setProperty(ErrorHandlerBuilderRef target, String 
propertyKey,
+                String propertyName, Node node) {
+            switch(propertyKey) {
+                case "ref": {
+                    String val = asText(node);
+                    target.setRef(val);
+                    break;
+                }
+                case "support-transacted": {
+                    boolean val = asBoolean(node);
+                    target.setSupportTransacted(val);
+                    break;
+                }
+                default: {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
+    @YamlType(
+            types = org.apache.camel.model.ErrorHandlerDefinition.class,
+            order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            nodes = {
+                    "error-handler",
+                    "errorHandler"
+            },
+            properties = {
+                    @YamlProperty(name = "dead-letter-channel", type = 
"object:org.apache.camel.model.errorhandler.DeadLetterChannelDefinition"),
+                    @YamlProperty(name = "default-error-handler", type = 
"object:org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition"),
+                    @YamlProperty(name = "id", type = "string"),
+                    @YamlProperty(name = "jta-transaction-error-handler", type 
= 
"object:org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition"),
+                    @YamlProperty(name = "no-error-handler", type = 
"object:org.apache.camel.model.errorhandler.NoErrorHandlerDefinition"),
+                    @YamlProperty(name = "spring-transaction-error-handler", 
type = 
"object:org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition")
+            }
+    )
+    public static class ErrorHandlerDefinitionDeserializer extends 
YamlDeserializerBase<ErrorHandlerDefinition> {
+        public ErrorHandlerDefinitionDeserializer() {
+            super(ErrorHandlerDefinition.class);
+        }
+
+        @Override
+        protected ErrorHandlerDefinition newInstance() {
+            return new ErrorHandlerDefinition();
+        }
+
+        @Override
+        protected boolean setProperty(ErrorHandlerDefinition target, String 
propertyKey,
+                String propertyName, Node node) {
+            switch(propertyKey) {
+                case "error-handler-type": {
+                    MappingNode val = asMappingNode(node);
+                    setProperties(target, val);
+                    break;
+                }
+                case "dead-letter-channel": {
+                    
org.apache.camel.model.errorhandler.DeadLetterChannelDefinition val = 
asType(node, 
org.apache.camel.model.errorhandler.DeadLetterChannelDefinition.class);
+                    target.setErrorHandlerType(val);
+                    break;
+                }
+                case "default-error-handler": {
+                    
org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition val = 
asType(node, 
org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition.class);
+                    target.setErrorHandlerType(val);
+                    break;
+                }
+                case "no-error-handler": {
+                    
org.apache.camel.model.errorhandler.NoErrorHandlerDefinition val = asType(node, 
org.apache.camel.model.errorhandler.NoErrorHandlerDefinition.class);
+                    target.setErrorHandlerType(val);
+                    break;
+                }
+                case "jta-transaction-error-handler": {
+                    
org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition val = 
asType(node, 
org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition.class);
+                    target.setErrorHandlerType(val);
+                    break;
+                }
+                case "spring-transaction-error-handler": {
+                    
org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition val 
= asType(node, 
org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition.class);
+                    target.setErrorHandlerType(val);
+                    break;
+                }
+                case "id": {
+                    String val = asText(node);
+                    target.setId(val);
+                    break;
+                }
+                default: {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
+    @YamlType(
+            inline = true,
+            types = 
org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            nodes = {
+                    "error-handler-ref",
+                    "errorHandlerRef"
+            },
             properties = {
-                    @YamlProperty(name = "ref", type = "string"),
-                    @YamlProperty(name = "support-transacted", type = 
"boolean")
+                    @YamlProperty(name = "id", type = "string"),
+                    @YamlProperty(name = "ref", type = "string", required = 
true)
             }
     )
-    public static class ErrorHandlerBuilderRefDeserializer extends 
YamlDeserializerBase<ErrorHandlerBuilderRef> {
-        public ErrorHandlerBuilderRefDeserializer() {
-            super(ErrorHandlerBuilderRef.class);
+    public static class ErrorHandlerRefDefinitionDeserializer extends 
YamlDeserializerBase<ErrorHandlerRefDefinition> {
+        public ErrorHandlerRefDefinitionDeserializer() {
+            super(ErrorHandlerRefDefinition.class);
         }
 
         @Override
-        protected ErrorHandlerBuilderRef newInstance() {
-            return new ErrorHandlerBuilderRef();
+        protected ErrorHandlerRefDefinition newInstance() {
+            return new ErrorHandlerRefDefinition();
         }
 
         @Override
-        protected ErrorHandlerBuilderRef newInstance(String value) {
-            return new ErrorHandlerBuilderRef(value);
+        protected ErrorHandlerRefDefinition newInstance(String value) {
+            return new ErrorHandlerRefDefinition(value);
         }
 
         @Override
-        protected boolean setProperty(ErrorHandlerBuilderRef target, String 
propertyKey,
+        protected boolean setProperty(ErrorHandlerRefDefinition target, String 
propertyKey,
                 String propertyName, Node node) {
             switch(propertyKey) {
-                case "ref": {
+                case "id": {
                     String val = asText(node);
-                    target.setRef(val);
+                    target.setId(val);
                     break;
                 }
-                case "support-transacted": {
-                    boolean val = asBoolean(node);
-                    target.setSupportTransacted(val);
+                case "ref": {
+                    String val = asText(node);
+                    target.setRef(val);
                     break;
                 }
                 default: {
@@ -7392,6 +7758,127 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
         }
     }
 
+    @YamlType(
+            types = 
org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition.class,
+            order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            nodes = {
+                    "jta-transaction-error-handler",
+                    "jtaTransactionErrorHandler"
+            },
+            properties = {
+                    @YamlProperty(name = "executor-service-ref", type = 
"string"),
+                    @YamlProperty(name = "id", type = "string"),
+                    @YamlProperty(name = "level", type = 
"enum:DEBUG,ERROR,INFO,OFF,TRACE,WARN"),
+                    @YamlProperty(name = "log-name", type = "string"),
+                    @YamlProperty(name = "logger-ref", type = "string"),
+                    @YamlProperty(name = "on-exception-occurred-ref", type = 
"string"),
+                    @YamlProperty(name = "on-prepare-failure-ref", type = 
"string"),
+                    @YamlProperty(name = "on-redelivery-ref", type = "string"),
+                    @YamlProperty(name = "redelivery-policy", type = 
"object:org.apache.camel.model.RedeliveryPolicyDefinition"),
+                    @YamlProperty(name = "redelivery-policy-ref", type = 
"string"),
+                    @YamlProperty(name = "retry-while-ref", type = "string"),
+                    @YamlProperty(name = "rollback-logging-level", type = 
"string"),
+                    @YamlProperty(name = "transacted-policy-ref", type = 
"string"),
+                    @YamlProperty(name = "use-original-body", type = 
"boolean"),
+                    @YamlProperty(name = "use-original-message", type = 
"boolean")
+            }
+    )
+    public static class JtaTransactionErrorHandlerDefinitionDeserializer 
extends YamlDeserializerBase<JtaTransactionErrorHandlerDefinition> {
+        public JtaTransactionErrorHandlerDefinitionDeserializer() {
+            super(JtaTransactionErrorHandlerDefinition.class);
+        }
+
+        @Override
+        protected JtaTransactionErrorHandlerDefinition newInstance() {
+            return new JtaTransactionErrorHandlerDefinition();
+        }
+
+        @Override
+        protected boolean setProperty(JtaTransactionErrorHandlerDefinition 
target,
+                String propertyKey, String propertyName, Node node) {
+            switch(propertyKey) {
+                case "executor-service-ref": {
+                    String val = asText(node);
+                    target.setExecutorServiceRef(val);
+                    break;
+                }
+                case "id": {
+                    String val = asText(node);
+                    target.setId(val);
+                    break;
+                }
+                case "level": {
+                    target.setLevel(asEnum(node, 
org.apache.camel.LoggingLevel.class));
+                    break;
+                }
+                case "log-name": {
+                    String val = asText(node);
+                    target.setLogName(val);
+                    break;
+                }
+                case "logger-ref": {
+                    String val = asText(node);
+                    target.setLoggerRef(val);
+                    break;
+                }
+                case "on-exception-occurred-ref": {
+                    String val = asText(node);
+                    target.setOnExceptionOccurredRef(val);
+                    break;
+                }
+                case "on-prepare-failure-ref": {
+                    String val = asText(node);
+                    target.setOnPrepareFailureRef(val);
+                    break;
+                }
+                case "on-redelivery-ref": {
+                    String val = asText(node);
+                    target.setOnRedeliveryRef(val);
+                    break;
+                }
+                case "redelivery-policy": {
+                    org.apache.camel.model.RedeliveryPolicyDefinition val = 
asType(node, org.apache.camel.model.RedeliveryPolicyDefinition.class);
+                    target.setRedeliveryPolicy(val);
+                    break;
+                }
+                case "redelivery-policy-ref": {
+                    String val = asText(node);
+                    target.setRedeliveryPolicyRef(val);
+                    break;
+                }
+                case "retry-while-ref": {
+                    String val = asText(node);
+                    target.setRetryWhileRef(val);
+                    break;
+                }
+                case "rollback-logging-level": {
+                    String val = asText(node);
+                    target.setRollbackLoggingLevel(val);
+                    break;
+                }
+                case "transacted-policy-ref": {
+                    String val = asText(node);
+                    target.setTransactedPolicyRef(val);
+                    break;
+                }
+                case "use-original-body": {
+                    String val = asText(node);
+                    target.setUseOriginalBody(val);
+                    break;
+                }
+                case "use-original-message": {
+                    String val = asText(node);
+                    target.setUseOriginalMessage(val);
+                    break;
+                }
+                default: {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
     @YamlType(
             types = 
org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
@@ -8619,6 +9106,42 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
         }
     }
 
+    @YamlType(
+            types = 
org.apache.camel.model.errorhandler.NoErrorHandlerDefinition.class,
+            order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            nodes = {
+                    "no-error-handler",
+                    "noErrorHandler"
+            },
+            properties = @YamlProperty(name = "id", type = "string")
+    )
+    public static class NoErrorHandlerDefinitionDeserializer extends 
YamlDeserializerBase<NoErrorHandlerDefinition> {
+        public NoErrorHandlerDefinitionDeserializer() {
+            super(NoErrorHandlerDefinition.class);
+        }
+
+        @Override
+        protected NoErrorHandlerDefinition newInstance() {
+            return new NoErrorHandlerDefinition();
+        }
+
+        @Override
+        protected boolean setProperty(NoErrorHandlerDefinition target, String 
propertyKey,
+                String propertyName, Node node) {
+            switch(propertyKey) {
+                case "id": {
+                    String val = asText(node);
+                    target.setId(val);
+                    break;
+                }
+                default: {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
     @YamlType(
             types = org.apache.camel.model.rest.OAuth2Definition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
@@ -10762,6 +11285,7 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
                     @YamlProperty(name = "delay-pattern", type = "string"),
                     @YamlProperty(name = "disable-redelivery", type = 
"boolean"),
                     @YamlProperty(name = "exchange-formatter-ref", type = 
"string"),
+                    @YamlProperty(name = "id", type = "string"),
                     @YamlProperty(name = "log-continued", type = "boolean"),
                     @YamlProperty(name = "log-exhausted", type = "boolean"),
                     @YamlProperty(name = "log-exhausted-message-body", type = 
"boolean"),
@@ -10830,6 +11354,11 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
                     target.setExchangeFormatterRef(val);
                     break;
                 }
+                case "id": {
+                    String val = asText(node);
+                    target.setId(val);
+                    break;
+                }
                 case "log-continued": {
                     String val = asText(node);
                     target.setLogContinued(val);
@@ -14456,6 +14985,127 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
         }
     }
 
+    @YamlType(
+            types = 
org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition.class,
+            order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
+            nodes = {
+                    "spring-transaction-error-handler",
+                    "springTransactionErrorHandler"
+            },
+            properties = {
+                    @YamlProperty(name = "executor-service-ref", type = 
"string"),
+                    @YamlProperty(name = "id", type = "string"),
+                    @YamlProperty(name = "level", type = 
"enum:DEBUG,ERROR,INFO,OFF,TRACE,WARN"),
+                    @YamlProperty(name = "log-name", type = "string"),
+                    @YamlProperty(name = "logger-ref", type = "string"),
+                    @YamlProperty(name = "on-exception-occurred-ref", type = 
"string"),
+                    @YamlProperty(name = "on-prepare-failure-ref", type = 
"string"),
+                    @YamlProperty(name = "on-redelivery-ref", type = "string"),
+                    @YamlProperty(name = "redelivery-policy", type = 
"object:org.apache.camel.model.RedeliveryPolicyDefinition"),
+                    @YamlProperty(name = "redelivery-policy-ref", type = 
"string"),
+                    @YamlProperty(name = "retry-while-ref", type = "string"),
+                    @YamlProperty(name = "rollback-logging-level", type = 
"string"),
+                    @YamlProperty(name = "transacted-policy-ref", type = 
"string"),
+                    @YamlProperty(name = "use-original-body", type = 
"boolean"),
+                    @YamlProperty(name = "use-original-message", type = 
"boolean")
+            }
+    )
+    public static class SpringTransactionErrorHandlerDefinitionDeserializer 
extends YamlDeserializerBase<SpringTransactionErrorHandlerDefinition> {
+        public SpringTransactionErrorHandlerDefinitionDeserializer() {
+            super(SpringTransactionErrorHandlerDefinition.class);
+        }
+
+        @Override
+        protected SpringTransactionErrorHandlerDefinition newInstance() {
+            return new SpringTransactionErrorHandlerDefinition();
+        }
+
+        @Override
+        protected boolean setProperty(SpringTransactionErrorHandlerDefinition 
target,
+                String propertyKey, String propertyName, Node node) {
+            switch(propertyKey) {
+                case "executor-service-ref": {
+                    String val = asText(node);
+                    target.setExecutorServiceRef(val);
+                    break;
+                }
+                case "id": {
+                    String val = asText(node);
+                    target.setId(val);
+                    break;
+                }
+                case "level": {
+                    target.setLevel(asEnum(node, 
org.apache.camel.LoggingLevel.class));
+                    break;
+                }
+                case "log-name": {
+                    String val = asText(node);
+                    target.setLogName(val);
+                    break;
+                }
+                case "logger-ref": {
+                    String val = asText(node);
+                    target.setLoggerRef(val);
+                    break;
+                }
+                case "on-exception-occurred-ref": {
+                    String val = asText(node);
+                    target.setOnExceptionOccurredRef(val);
+                    break;
+                }
+                case "on-prepare-failure-ref": {
+                    String val = asText(node);
+                    target.setOnPrepareFailureRef(val);
+                    break;
+                }
+                case "on-redelivery-ref": {
+                    String val = asText(node);
+                    target.setOnRedeliveryRef(val);
+                    break;
+                }
+                case "redelivery-policy": {
+                    org.apache.camel.model.RedeliveryPolicyDefinition val = 
asType(node, org.apache.camel.model.RedeliveryPolicyDefinition.class);
+                    target.setRedeliveryPolicy(val);
+                    break;
+                }
+                case "redelivery-policy-ref": {
+                    String val = asText(node);
+                    target.setRedeliveryPolicyRef(val);
+                    break;
+                }
+                case "retry-while-ref": {
+                    String val = asText(node);
+                    target.setRetryWhileRef(val);
+                    break;
+                }
+                case "rollback-logging-level": {
+                    String val = asText(node);
+                    target.setRollbackLoggingLevel(val);
+                    break;
+                }
+                case "transacted-policy-ref": {
+                    String val = asText(node);
+                    target.setTransactedPolicyRef(val);
+                    break;
+                }
+                case "use-original-body": {
+                    String val = asText(node);
+                    target.setUseOriginalBody(val);
+                    break;
+                }
+                case "use-original-message": {
+                    String val = asText(node);
+                    target.setUseOriginalMessage(val);
+                    break;
+                }
+                default: {
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+
     @YamlType(
             types = 
org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
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 98d2e68933c..af3d0ca1d18 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
@@ -104,7 +104,13 @@ public final class ModelDeserializersResolver implements 
YamlDeserializerResolve
             case "datasonnet": return new 
ModelDeserializers.DatasonnetExpressionDeserializer();
             case "org.apache.camel.model.language.DatasonnetExpression": 
return new ModelDeserializers.DatasonnetExpressionDeserializer();
             case "org.apache.camel.builder.DeadLetterChannelBuilder": return 
new ModelDeserializers.DeadLetterChannelBuilderDeserializer();
+            case "dead-letter-channel": return new 
ModelDeserializers.DeadLetterChannelDefinitionDeserializer();
+            case "deadLetterChannel": return new 
ModelDeserializers.DeadLetterChannelDefinitionDeserializer();
+            case 
"org.apache.camel.model.errorhandler.DeadLetterChannelDefinition": return new 
ModelDeserializers.DeadLetterChannelDefinitionDeserializer();
             case "org.apache.camel.builder.DefaultErrorHandlerBuilder": return 
new ModelDeserializers.DefaultErrorHandlerBuilderDeserializer();
+            case "default-error-handler": return new 
ModelDeserializers.DefaultErrorHandlerDefinitionDeserializer();
+            case "defaultErrorHandler": return new 
ModelDeserializers.DefaultErrorHandlerDefinitionDeserializer();
+            case 
"org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition": return new 
ModelDeserializers.DefaultErrorHandlerDefinitionDeserializer();
             case "default-load-balancer": return new 
ModelDeserializers.DefaultServiceCallServiceLoadBalancerConfigurationDeserializer();
             case "defaultLoadBalancer": return new 
ModelDeserializers.DefaultServiceCallServiceLoadBalancerConfigurationDeserializer();
             case 
"org.apache.camel.model.cloud.DefaultServiceCallServiceLoadBalancerConfiguration":
 return new 
ModelDeserializers.DefaultServiceCallServiceLoadBalancerConfigurationDeserializer();
@@ -125,6 +131,12 @@ public final class ModelDeserializersResolver implements 
YamlDeserializerResolve
             case "enrich": return new 
ModelDeserializers.EnrichDefinitionDeserializer();
             case "org.apache.camel.model.EnrichDefinition": return new 
ModelDeserializers.EnrichDefinitionDeserializer();
             case "org.apache.camel.builder.ErrorHandlerBuilderRef": return new 
ModelDeserializers.ErrorHandlerBuilderRefDeserializer();
+            case "error-handler": return new 
ModelDeserializers.ErrorHandlerDefinitionDeserializer();
+            case "errorHandler": return new 
ModelDeserializers.ErrorHandlerDefinitionDeserializer();
+            case "org.apache.camel.model.ErrorHandlerDefinition": return new 
ModelDeserializers.ErrorHandlerDefinitionDeserializer();
+            case "error-handler-ref": return new 
ModelDeserializers.ErrorHandlerRefDefinitionDeserializer();
+            case "errorHandlerRef": return new 
ModelDeserializers.ErrorHandlerRefDefinitionDeserializer();
+            case 
"org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition": return new 
ModelDeserializers.ErrorHandlerRefDefinitionDeserializer();
             case "etcd-service-discovery": return new 
ModelDeserializers.EtcdServiceCallServiceDiscoveryConfigurationDeserializer();
             case "etcdServiceDiscovery": return new 
ModelDeserializers.EtcdServiceCallServiceDiscoveryConfigurationDeserializer();
             case 
"org.apache.camel.model.cloud.EtcdServiceCallServiceDiscoveryConfiguration": 
return new 
ModelDeserializers.EtcdServiceCallServiceDiscoveryConfigurationDeserializer();
@@ -211,6 +223,9 @@ public final class ModelDeserializersResolver implements 
YamlDeserializerResolve
             case "org.apache.camel.model.dataformat.JsonDataFormat": return 
new ModelDeserializers.JsonDataFormatDeserializer();
             case "jsonpath": return new 
ModelDeserializers.JsonPathExpressionDeserializer();
             case "org.apache.camel.model.language.JsonPathExpression": return 
new ModelDeserializers.JsonPathExpressionDeserializer();
+            case "jta-transaction-error-handler": return new 
ModelDeserializers.JtaTransactionErrorHandlerDefinitionDeserializer();
+            case "jtaTransactionErrorHandler": return new 
ModelDeserializers.JtaTransactionErrorHandlerDefinitionDeserializer();
+            case 
"org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition": 
return new 
ModelDeserializers.JtaTransactionErrorHandlerDefinitionDeserializer();
             case "kubernetes-service-discovery": return new 
ModelDeserializers.KubernetesServiceCallServiceDiscoveryConfigurationDeserializer();
             case "kubernetesServiceDiscovery": return new 
ModelDeserializers.KubernetesServiceCallServiceDiscoveryConfigurationDeserializer();
             case 
"org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration":
 return new 
ModelDeserializers.KubernetesServiceCallServiceDiscoveryConfigurationDeserializer();
@@ -240,6 +255,9 @@ public final class ModelDeserializersResolver implements 
YamlDeserializerResolve
             case "mvel": return new 
ModelDeserializers.MvelExpressionDeserializer();
             case "org.apache.camel.model.language.MvelExpression": return new 
ModelDeserializers.MvelExpressionDeserializer();
             case "org.apache.camel.builder.NoErrorHandlerBuilder": return new 
ModelDeserializers.NoErrorHandlerBuilderDeserializer();
+            case "no-error-handler": return new 
ModelDeserializers.NoErrorHandlerDefinitionDeserializer();
+            case "noErrorHandler": return new 
ModelDeserializers.NoErrorHandlerDefinitionDeserializer();
+            case 
"org.apache.camel.model.errorhandler.NoErrorHandlerDefinition": return new 
ModelDeserializers.NoErrorHandlerDefinitionDeserializer();
             case "oauth2": return new 
ModelDeserializers.OAuth2DefinitionDeserializer();
             case "org.apache.camel.model.rest.OAuth2Definition": return new 
ModelDeserializers.OAuth2DefinitionDeserializer();
             case "ognl": return new 
ModelDeserializers.OgnlExpressionDeserializer();
@@ -428,6 +446,9 @@ public final class ModelDeserializersResolver implements 
YamlDeserializerResolve
             case "org.apache.camel.model.language.SpELExpression": return new 
ModelDeserializers.SpELExpressionDeserializer();
             case "split": return new 
ModelDeserializers.SplitDefinitionDeserializer();
             case "org.apache.camel.model.SplitDefinition": return new 
ModelDeserializers.SplitDefinitionDeserializer();
+            case "spring-transaction-error-handler": return new 
ModelDeserializers.SpringTransactionErrorHandlerDefinitionDeserializer();
+            case "springTransactionErrorHandler": return new 
ModelDeserializers.SpringTransactionErrorHandlerDefinitionDeserializer();
+            case 
"org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition": 
return new 
ModelDeserializers.SpringTransactionErrorHandlerDefinitionDeserializer();
             case "static-service-discovery": return new 
ModelDeserializers.StaticServiceCallServiceDiscoveryConfigurationDeserializer();
             case "staticServiceDiscovery": return new 
ModelDeserializers.StaticServiceCallServiceDiscoveryConfigurationDeserializer();
             case 
"org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration": 
return new 
ModelDeserializers.StaticServiceCallServiceDiscoveryConfigurationDeserializer();
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
index 55307a6b77e..bfbac83269c 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camel-yaml-dsl.json
@@ -874,6 +874,29 @@
           }
         }
       },
+      "org.apache.camel.model.ErrorHandlerDefinition" : {
+        "type" : "object",
+        "properties" : {
+          "dead-letter-channel" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DeadLetterChannelDefinition"
+          },
+          "default-error-handler" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "jta-transaction-error-handler" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition"
+          },
+          "no-error-handler" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.NoErrorHandlerDefinition"
+          },
+          "spring-transaction-error-handler" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition"
+          }
+        }
+      },
       "org.apache.camel.model.ExpressionSubElementDefinition" : {
         "type" : "object",
         "properties" : {
@@ -2026,6 +2049,9 @@
           "exchange-formatter-ref" : {
             "type" : "string"
           },
+          "id" : {
+            "type" : "string"
+          },
           "log-continued" : {
             "type" : "boolean"
           },
@@ -5724,6 +5750,233 @@
           }
         }
       },
+      "org.apache.camel.model.errorhandler.DeadLetterChannelDefinition" : {
+        "oneOf" : [ {
+          "type" : "string"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "dead-letter-handle-new-exception" : {
+              "type" : "boolean"
+            },
+            "dead-letter-uri" : {
+              "type" : "string"
+            },
+            "executor-service-ref" : {
+              "type" : "string"
+            },
+            "id" : {
+              "type" : "string"
+            },
+            "level" : {
+              "type" : "string",
+              "enum" : [ "DEBUG", "ERROR", "INFO", "OFF", "TRACE", "WARN" ]
+            },
+            "log-name" : {
+              "type" : "string"
+            },
+            "logger-ref" : {
+              "type" : "string"
+            },
+            "on-exception-occurred-ref" : {
+              "type" : "string"
+            },
+            "on-prepare-failure-ref" : {
+              "type" : "string"
+            },
+            "on-redelivery-ref" : {
+              "type" : "string"
+            },
+            "redelivery-policy" : {
+              "$ref" : 
"#/items/definitions/org.apache.camel.model.RedeliveryPolicyDefinition"
+            },
+            "redelivery-policy-ref" : {
+              "type" : "string"
+            },
+            "retry-while-ref" : {
+              "type" : "string"
+            },
+            "use-original-body" : {
+              "type" : "boolean"
+            },
+            "use-original-message" : {
+              "type" : "boolean"
+            }
+          }
+        } ],
+        "required" : [ "dead-letter-uri" ]
+      },
+      "org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition" : {
+        "type" : "object",
+        "properties" : {
+          "executor-service-ref" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "level" : {
+            "type" : "string",
+            "enum" : [ "DEBUG", "ERROR", "INFO", "OFF", "TRACE", "WARN" ]
+          },
+          "log-name" : {
+            "type" : "string"
+          },
+          "logger-ref" : {
+            "type" : "string"
+          },
+          "on-exception-occurred-ref" : {
+            "type" : "string"
+          },
+          "on-prepare-failure-ref" : {
+            "type" : "string"
+          },
+          "on-redelivery-ref" : {
+            "type" : "string"
+          },
+          "redelivery-policy" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.RedeliveryPolicyDefinition"
+          },
+          "redelivery-policy-ref" : {
+            "type" : "string"
+          },
+          "retry-while-ref" : {
+            "type" : "string"
+          },
+          "use-original-body" : {
+            "type" : "boolean"
+          },
+          "use-original-message" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition" : {
+        "oneOf" : [ {
+          "type" : "string"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "id" : {
+              "type" : "string"
+            },
+            "ref" : {
+              "type" : "string"
+            }
+          }
+        } ],
+        "required" : [ "ref" ]
+      },
+      
"org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition" : {
+        "type" : "object",
+        "properties" : {
+          "executor-service-ref" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "level" : {
+            "type" : "string",
+            "enum" : [ "DEBUG", "ERROR", "INFO", "OFF", "TRACE", "WARN" ]
+          },
+          "log-name" : {
+            "type" : "string"
+          },
+          "logger-ref" : {
+            "type" : "string"
+          },
+          "on-exception-occurred-ref" : {
+            "type" : "string"
+          },
+          "on-prepare-failure-ref" : {
+            "type" : "string"
+          },
+          "on-redelivery-ref" : {
+            "type" : "string"
+          },
+          "redelivery-policy" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.RedeliveryPolicyDefinition"
+          },
+          "redelivery-policy-ref" : {
+            "type" : "string"
+          },
+          "retry-while-ref" : {
+            "type" : "string"
+          },
+          "rollback-logging-level" : {
+            "type" : "string"
+          },
+          "transacted-policy-ref" : {
+            "type" : "string"
+          },
+          "use-original-body" : {
+            "type" : "boolean"
+          },
+          "use-original-message" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "org.apache.camel.model.errorhandler.NoErrorHandlerDefinition" : {
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string"
+          }
+        }
+      },
+      
"org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition" : 
{
+        "type" : "object",
+        "properties" : {
+          "executor-service-ref" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "level" : {
+            "type" : "string",
+            "enum" : [ "DEBUG", "ERROR", "INFO", "OFF", "TRACE", "WARN" ]
+          },
+          "log-name" : {
+            "type" : "string"
+          },
+          "logger-ref" : {
+            "type" : "string"
+          },
+          "on-exception-occurred-ref" : {
+            "type" : "string"
+          },
+          "on-prepare-failure-ref" : {
+            "type" : "string"
+          },
+          "on-redelivery-ref" : {
+            "type" : "string"
+          },
+          "redelivery-policy" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.RedeliveryPolicyDefinition"
+          },
+          "redelivery-policy-ref" : {
+            "type" : "string"
+          },
+          "retry-while-ref" : {
+            "type" : "string"
+          },
+          "rollback-logging-level" : {
+            "type" : "string"
+          },
+          "transacted-policy-ref" : {
+            "type" : "string"
+          },
+          "use-original-body" : {
+            "type" : "boolean"
+          },
+          "use-original-message" : {
+            "type" : "boolean"
+          }
+        }
+      },
       "org.apache.camel.model.language.CSimpleExpression" : {
         "oneOf" : [ {
           "type" : "string"
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camelYamlDsl.json 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camelYamlDsl.json
index 2e8efc36b90..88c780667bb 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camelYamlDsl.json
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/generated/resources/camelYamlDsl.json
@@ -781,6 +781,29 @@
           }
         }
       },
+      "org.apache.camel.model.ErrorHandlerDefinition" : {
+        "type" : "object",
+        "properties" : {
+          "deadLetterChannel" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DeadLetterChannelDefinition"
+          },
+          "defaultErrorHandler" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "jtaTransactionErrorHandler" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition"
+          },
+          "noErrorHandler" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.NoErrorHandlerDefinition"
+          },
+          "springTransactionErrorHandler" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition"
+          }
+        }
+      },
       "org.apache.camel.model.ExpressionSubElementDefinition" : {
         "type" : "object",
         "properties" : {
@@ -1930,6 +1953,9 @@
           "exchangeFormatterRef" : {
             "type" : "string"
           },
+          "id" : {
+            "type" : "string"
+          },
           "logContinued" : {
             "type" : "boolean"
           },
@@ -5628,6 +5654,233 @@
           }
         }
       },
+      "org.apache.camel.model.errorhandler.DeadLetterChannelDefinition" : {
+        "oneOf" : [ {
+          "type" : "string"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "deadLetterHandleNewException" : {
+              "type" : "boolean"
+            },
+            "deadLetterUri" : {
+              "type" : "string"
+            },
+            "executorServiceRef" : {
+              "type" : "string"
+            },
+            "id" : {
+              "type" : "string"
+            },
+            "level" : {
+              "type" : "string",
+              "enum" : [ "DEBUG", "ERROR", "INFO", "OFF", "TRACE", "WARN" ]
+            },
+            "logName" : {
+              "type" : "string"
+            },
+            "loggerRef" : {
+              "type" : "string"
+            },
+            "onExceptionOccurredRef" : {
+              "type" : "string"
+            },
+            "onPrepareFailureRef" : {
+              "type" : "string"
+            },
+            "onRedeliveryRef" : {
+              "type" : "string"
+            },
+            "redeliveryPolicy" : {
+              "$ref" : 
"#/items/definitions/org.apache.camel.model.RedeliveryPolicyDefinition"
+            },
+            "redeliveryPolicyRef" : {
+              "type" : "string"
+            },
+            "retryWhileRef" : {
+              "type" : "string"
+            },
+            "useOriginalBody" : {
+              "type" : "boolean"
+            },
+            "useOriginalMessage" : {
+              "type" : "boolean"
+            }
+          }
+        } ],
+        "required" : [ "deadLetterUri" ]
+      },
+      "org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition" : {
+        "type" : "object",
+        "properties" : {
+          "executorServiceRef" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "level" : {
+            "type" : "string",
+            "enum" : [ "DEBUG", "ERROR", "INFO", "OFF", "TRACE", "WARN" ]
+          },
+          "logName" : {
+            "type" : "string"
+          },
+          "loggerRef" : {
+            "type" : "string"
+          },
+          "onExceptionOccurredRef" : {
+            "type" : "string"
+          },
+          "onPrepareFailureRef" : {
+            "type" : "string"
+          },
+          "onRedeliveryRef" : {
+            "type" : "string"
+          },
+          "redeliveryPolicy" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.RedeliveryPolicyDefinition"
+          },
+          "redeliveryPolicyRef" : {
+            "type" : "string"
+          },
+          "retryWhileRef" : {
+            "type" : "string"
+          },
+          "useOriginalBody" : {
+            "type" : "boolean"
+          },
+          "useOriginalMessage" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition" : {
+        "oneOf" : [ {
+          "type" : "string"
+        }, {
+          "type" : "object",
+          "properties" : {
+            "id" : {
+              "type" : "string"
+            },
+            "ref" : {
+              "type" : "string"
+            }
+          }
+        } ],
+        "required" : [ "ref" ]
+      },
+      
"org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition" : {
+        "type" : "object",
+        "properties" : {
+          "executorServiceRef" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "level" : {
+            "type" : "string",
+            "enum" : [ "DEBUG", "ERROR", "INFO", "OFF", "TRACE", "WARN" ]
+          },
+          "logName" : {
+            "type" : "string"
+          },
+          "loggerRef" : {
+            "type" : "string"
+          },
+          "onExceptionOccurredRef" : {
+            "type" : "string"
+          },
+          "onPrepareFailureRef" : {
+            "type" : "string"
+          },
+          "onRedeliveryRef" : {
+            "type" : "string"
+          },
+          "redeliveryPolicy" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.RedeliveryPolicyDefinition"
+          },
+          "redeliveryPolicyRef" : {
+            "type" : "string"
+          },
+          "retryWhileRef" : {
+            "type" : "string"
+          },
+          "rollbackLoggingLevel" : {
+            "type" : "string"
+          },
+          "transactedPolicyRef" : {
+            "type" : "string"
+          },
+          "useOriginalBody" : {
+            "type" : "boolean"
+          },
+          "useOriginalMessage" : {
+            "type" : "boolean"
+          }
+        }
+      },
+      "org.apache.camel.model.errorhandler.NoErrorHandlerDefinition" : {
+        "type" : "object",
+        "properties" : {
+          "id" : {
+            "type" : "string"
+          }
+        }
+      },
+      
"org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition" : 
{
+        "type" : "object",
+        "properties" : {
+          "executorServiceRef" : {
+            "type" : "string"
+          },
+          "id" : {
+            "type" : "string"
+          },
+          "level" : {
+            "type" : "string",
+            "enum" : [ "DEBUG", "ERROR", "INFO", "OFF", "TRACE", "WARN" ]
+          },
+          "logName" : {
+            "type" : "string"
+          },
+          "loggerRef" : {
+            "type" : "string"
+          },
+          "onExceptionOccurredRef" : {
+            "type" : "string"
+          },
+          "onPrepareFailureRef" : {
+            "type" : "string"
+          },
+          "onRedeliveryRef" : {
+            "type" : "string"
+          },
+          "redeliveryPolicy" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.RedeliveryPolicyDefinition"
+          },
+          "redeliveryPolicyRef" : {
+            "type" : "string"
+          },
+          "retryWhileRef" : {
+            "type" : "string"
+          },
+          "rollbackLoggingLevel" : {
+            "type" : "string"
+          },
+          "transactedPolicyRef" : {
+            "type" : "string"
+          },
+          "useOriginalBody" : {
+            "type" : "boolean"
+          },
+          "useOriginalMessage" : {
+            "type" : "boolean"
+          }
+        }
+      },
       "org.apache.camel.model.language.CSimpleExpression" : {
         "oneOf" : [ {
           "type" : "string"
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
index 1849c7c9a63..6e965242975 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/main/java/org/apache/camel/dsl/yaml/YamlRoutesBuilderLoader.java
@@ -29,13 +29,10 @@ import java.util.Set;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
+import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.api.management.ManagedResource;
-import org.apache.camel.builder.DeadLetterChannelBuilder;
-import org.apache.camel.builder.DefaultErrorHandlerBuilder;
-import org.apache.camel.builder.ErrorHandlerBuilder;
-import org.apache.camel.builder.NoErrorHandlerBuilder;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.builder.RouteConfigurationBuilder;
 import org.apache.camel.component.properties.PropertiesLocation;
@@ -52,7 +49,9 @@ import org.apache.camel.model.RouteDefinition;
 import org.apache.camel.model.RouteTemplateDefinition;
 import org.apache.camel.model.TemplatedRouteDefinition;
 import org.apache.camel.model.ToDefinition;
-import org.apache.camel.model.errorhandler.DefaultErrorHandlerProperties;
+import org.apache.camel.model.errorhandler.DeadLetterChannelDefinition;
+import org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition;
+import org.apache.camel.model.errorhandler.NoErrorHandlerDefinition;
 import org.apache.camel.model.rest.RestConfigurationDefinition;
 import org.apache.camel.model.rest.RestDefinition;
 import org.apache.camel.model.rest.VerbDefinition;
@@ -171,12 +170,12 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
                     CamelContextAware.trySetCamelContext(getRouteCollection(), 
getCamelContext());
                     
getRouteCollection().getOnExceptions().add((OnExceptionDefinition) item);
                     return true;
-                } else if (item instanceof ErrorHandlerBuilder) {
+                } else if (item instanceof ErrorHandlerFactory) {
                     if (!getRouteCollection().getRoutes().isEmpty()) {
                         throw new IllegalArgumentException(
                                 "errorHandler must be defined before any 
routes in the RouteBuilder");
                     }
-                    errorHandler((ErrorHandlerBuilder) item);
+                    errorHandler((ErrorHandlerFactory) item);
                     return true;
                 } else if (item instanceof RouteTemplateDefinition) {
                     
CamelContextAware.trySetCamelContext(getRouteTemplateCollection(), 
getCamelContext());
@@ -573,23 +572,23 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
                 NodeTuple nt = errorHandler.getValue().get(0);
                 String ehName = asText(nt.getKeyNode());
 
-                DefaultErrorHandlerProperties ehb = null;
+                ErrorHandlerFactory ehf = null;
                 if ("sink".equals(ehName)) {
                     // a sink is a dead letter queue
-                    DeadLetterChannelBuilder dlch = new 
DeadLetterChannelBuilder();
+                    DeadLetterChannelDefinition dlcd = new 
DeadLetterChannelDefinition();
                     MappingNode endpoint = 
asMappingNode(nodeAt(nt.getValueNode(), "/endpoint"));
                     String dlq = extractCamelEndpointUri(endpoint);
-                    dlch.setDeadLetterUri(dlq);
-                    ehb = dlch;
+                    dlcd.setDeadLetterUri(dlq);
+                    ehf = dlcd;
                 } else if ("log".equals(ehName)) {
                     // log is the default error handler
-                    ehb = new DefaultErrorHandlerBuilder();
+                    ehf = new DefaultErrorHandlerDefinition();
                 } else if ("none".equals(ehName)) {
-                    route.errorHandler(new NoErrorHandlerBuilder());
+                    route.errorHandler(new NoErrorHandlerDefinition());
                 }
 
                 // some error handlers support additional parameters
-                if (ehb != null) {
+                if (ehf != null) {
                     // properties that are general for all kind of error 
handlers
                     MappingNode prop = asMappingNode(nodeAt(nt.getValueNode(), 
"/parameters"));
                     Map<String, Object> params = asMap(prop);
@@ -599,11 +598,11 @@ public class YamlRoutesBuilderLoader extends 
YamlRoutesBuilderLoaderSupport {
                                 .withFluentBuilder(true)
                                 .withRemoveParameters(true)
                                 .withCamelContext(getCamelContext())
-                                .withTarget(ehb)
+                                .withTarget(ehf)
                                 .withProperties(params)
                                 .bind();
                     }
-                    route.errorHandler(ehb);
+                    route.errorHandler(ehf);
                 }
             }
 
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
index 177828f2712..a4c4a97ae64 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/KameletBindingLoaderTest.groovy
@@ -18,13 +18,13 @@ package org.apache.camel.dsl.yaml
 
 import org.apache.camel.Exchange
 import org.apache.camel.Processor
-import org.apache.camel.builder.DeadLetterChannelBuilder
-import org.apache.camel.builder.DefaultErrorHandlerBuilder
-import org.apache.camel.builder.NoErrorHandlerBuilder
 import org.apache.camel.component.mock.MockEndpoint
 import org.apache.camel.dsl.yaml.support.YamlTestSupport
 import org.apache.camel.model.KameletDefinition
 import org.apache.camel.model.ToDefinition
+import org.apache.camel.model.errorhandler.DeadLetterChannelDefinition
+import org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition
+import org.apache.camel.model.errorhandler.NoErrorHandlerDefinition
 
 class KameletBindingLoaderTest extends YamlTestSupport {
     @Override
@@ -351,11 +351,11 @@ class KameletBindingLoaderTest extends YamlTestSupport {
 
         with (context.routeDefinitions[0]) {
             errorHandlerFactory != null
-            errorHandlerFactory instanceof DeadLetterChannelBuilder
-            var eh = errorHandlerFactory as DeadLetterChannelBuilder
+            errorHandlerFactory instanceof DeadLetterChannelDefinition
+            var eh = errorHandlerFactory as DeadLetterChannelDefinition
             eh.deadLetterUri == 
'kamelet:error-handler?kafkaTopic=my-first-test&logMessage=ERROR%21&kafkaServiceAccountId=scott&kafkaBrokers=my-broker&kafkaServiceAccountSecret=tiger'
-            eh.redeliveryPolicy.maximumRedeliveries == 1
-            eh.redeliveryPolicy.redeliveryDelay == 2000
+            eh.redeliveryPolicy.maximumRedeliveries == "1"
+            eh.redeliveryPolicy.redeliveryDelay == "2000"
             routeId == 'timer-event-source'
             input.endpointUri == 'kamelet:timer-source?message=Hello+world%21'
             outputs.size() == 1
@@ -413,11 +413,11 @@ class KameletBindingLoaderTest extends YamlTestSupport {
 
         with (context.routeDefinitions[0]) {
             errorHandlerFactory != null
-            errorHandlerFactory instanceof DeadLetterChannelBuilder
-            var eh = errorHandlerFactory as DeadLetterChannelBuilder
+            errorHandlerFactory instanceof DeadLetterChannelDefinition
+            var eh = errorHandlerFactory as DeadLetterChannelDefinition
             eh.deadLetterUri == 'mock:dead'
-            eh.redeliveryPolicy.maximumRedeliveries == 3
-            eh.redeliveryPolicy.redeliveryDelay == 100
+            eh.redeliveryPolicy.maximumRedeliveries == "3"
+            eh.redeliveryPolicy.redeliveryDelay == "100"
         }
     }
 
@@ -457,11 +457,11 @@ class KameletBindingLoaderTest extends YamlTestSupport {
 
         with (context.routeDefinitions[0]) {
             errorHandlerFactory != null
-            errorHandlerFactory instanceof DefaultErrorHandlerBuilder
-            var eh = errorHandlerFactory as DefaultErrorHandlerBuilder
-            eh.redeliveryPolicy.maximumRedeliveries == 1
-            eh.redeliveryPolicy.redeliveryDelay == 2000
-            eh.isUseOriginalMessage() == true
+            errorHandlerFactory instanceof DefaultErrorHandlerDefinition
+            var eh = errorHandlerFactory as DefaultErrorHandlerDefinition
+            eh.redeliveryPolicy.maximumRedeliveries == "1"
+            eh.redeliveryPolicy.redeliveryDelay == "2000"
+            eh.getUseOriginalMessage() == "true"
             routeId == 'timer-event-source'
             input.endpointUri == 'kamelet:timer-source?message=Hello+world%21'
             outputs.size() == 1
@@ -503,7 +503,7 @@ class KameletBindingLoaderTest extends YamlTestSupport {
 
         with (context.routeDefinitions[0]) {
             errorHandlerFactory != null
-            errorHandlerFactory instanceof NoErrorHandlerBuilder
+            errorHandlerFactory instanceof NoErrorHandlerDefinition
             routeId == 'timer-event-source'
             input.endpointUri == 'kamelet:timer-source?message=Hello+world%21'
             outputs.size() == 1

Reply via email to