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


The following commit(s) were added to refs/heads/errorhandler-in-dsl by this 
push:
     new 85ff485b11c CAMEL-16834: error handler in model DSL. WIP
85ff485b11c is described below

commit 85ff485b11cda25e9da9bc88b61c06daa6d23f77
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Apr 7 13:57:26 2022 +0200

    CAMEL-16834: error handler in model DSL. WIP
---
 .../errorhandler/DeadLetterChannelDefinition.java  | 17 +++++++++
 .../errorhandler/ErrorHandlerRefDefinition.java    |  8 +++++
 .../dsl/yaml/deserializers/ModelDeserializers.java |  6 ----
 .../ErrorHandlerBuilderDeserializer.java           |  5 +--
 .../dsl/yaml/GenerateYamlDeserializersMojo.java    |  6 ++++
 .../maven/dsl/yaml/GenerateYamlSupportMojo.java    |  3 +-
 .../src/generated/resources/camel-yaml-dsl.json    | 42 ++++++++++++++--------
 .../src/generated/resources/camelYamlDsl.json      | 36 ++++++++++++-------
 8 files changed, 87 insertions(+), 36 deletions(-)

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 0271bc00751..9e90e396304 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
@@ -21,6 +21,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
 
+import org.apache.camel.Endpoint;
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.model.RedeliveryPolicyDefinition;
 import org.apache.camel.spi.Metadata;
@@ -42,6 +43,14 @@ public class DeadLetterChannelDefinition extends 
DefaultErrorHandlerDefinition {
     public DeadLetterChannelDefinition() {
     }
 
+    public DeadLetterChannelDefinition(String deadLetterUri) {
+        this.deadLetterUri = deadLetterUri;
+    }
+
+    public DeadLetterChannelDefinition(Endpoint deadLetterUri) {
+        this.deadLetterUri = deadLetterUri.getEndpointUri();
+    }
+
     @Override
     protected RedeliveryPolicyDefinition createRedeliveryPolicy() {
         RedeliveryPolicyDefinition answer = super.createRedeliveryPolicy();
@@ -98,6 +107,14 @@ public class DeadLetterChannelDefinition extends 
DefaultErrorHandlerDefinition {
         super.cloneBuilder(other);
     }
 
+    /**
+     * The dead letter endpoint uri for the Dead Letter error handler.
+     */
+    public DeadLetterChannelDefinition deadLetterUri(String deadLetterUri) {
+        setDeadLetterUri(deadLetterUri);
+        return this;
+    }
+
     /**
      * 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.
diff --git 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/ErrorHandlerRefDefinition.java
 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/ErrorHandlerRefDefinition.java
index b0cec5ca029..d4842f98095 100644
--- 
a/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/ErrorHandlerRefDefinition.java
+++ 
b/core/camel-core-model/src/main/java/org/apache/camel/model/errorhandler/ErrorHandlerRefDefinition.java
@@ -67,4 +67,12 @@ public class ErrorHandlerRefDefinition extends 
BaseErrorHandlerDefinition {
         this.ref = ref;
     }
 
+    /**
+     * References to an existing or custom error handler.
+     */
+    public ErrorHandlerRefDefinition ref(String ref) {
+        setRef(ref);
+        return this;
+    }
+
 }
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 fd12501d357..be43556fcbd 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
@@ -4789,7 +4789,6 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
     }
 
     @YamlType(
-            inline = true,
             types = 
org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition.class,
             order = 
org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
             nodes = {
@@ -4811,11 +4810,6 @@ public final class ModelDeserializers extends 
YamlDeserializerSupport {
             return new ErrorHandlerRefDefinition();
         }
 
-        @Override
-        protected ErrorHandlerRefDefinition newInstance(String value) {
-            return new ErrorHandlerRefDefinition(value);
-        }
-
         @Override
         protected boolean setProperty(ErrorHandlerRefDefinition target, String 
propertyKey,
                 String propertyName, Node node) {
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/ErrorHandlerBuilderDeserializer.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/ErrorHandlerBuilderDeserializer.java
index c52fdaf279d..e33487b4619 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/ErrorHandlerBuilderDeserializer.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-deserializers/src/main/java/org/apache/camel/dsl/yaml/deserializers/ErrorHandlerBuilderDeserializer.java
@@ -45,7 +45,6 @@ import static 
org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.setDeseri
 @YamlIn
 @YamlType(
           nodes = { "error-handler", "errorHandler" },
-          types = ErrorHandlerRefDefinition.class,
           order = YamlDeserializerResolver.ORDER_DEFAULT,
           properties = {
                   @YamlProperty(name = "ref", type = "string"),
@@ -79,7 +78,9 @@ public class ErrorHandlerBuilderDeserializer implements 
ConstructNode {
 
             switch (key) {
                 case "ref":
-                    return customizer(asType(val, 
ErrorHandlerRefDefinition.class));
+                    // special for ref error handler, as it can be manually 
inlined
+                    ErrorHandlerRefDefinition def = new 
ErrorHandlerRefDefinition(asText(val));
+                    return customizer(def);
                 case "none":
                     return customizer(asType(val, 
NoErrorHandlerDefinition.class));
                 case "dead-letter-channel":
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java
index e1d14cab14f..5868a5d1d3d 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlDeserializersMojo.java
@@ -408,6 +408,12 @@ public class GenerateYamlDeserializersMojo extends 
GenerateYamlSupportMojo {
         // T handledTypeInstance(String value);
         //
         for (MethodInfo ctor: info.constructors()) {
+
+            // do not generate inline for error handlers (only ref error 
handler is allowed)
+            if (implementType(info, ERROR_HANDLER_DEFINITION_CLASS)) {
+                break;
+            }
+
             if (ctor.parameters().size() == 1 && 
ctor.parameters().get(0).name().equals(STRING_CLASS)) {
                 if ((ctor.flags() & java.lang.reflect.Modifier.PUBLIC) == 0) {
                     break;
diff --git 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSupportMojo.java
 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSupportMojo.java
index 95ec224bce1..4fb10bbc198 100644
--- 
a/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSupportMojo.java
+++ 
b/dsl/camel-yaml-dsl/camel-yaml-dsl-maven-plugin/src/main/java/org/apache/camel/maven/dsl/yaml/GenerateYamlSupportMojo.java
@@ -106,7 +106,8 @@ public abstract class GenerateYamlSupportMojo extends 
AbstractMojo {
             = 
DotName.createSimple("org.apache.camel.model.rest.VerbDefinition");
     public static final DotName ID_AWARE_CLASS
             = DotName.createSimple("org.apache.camel.spi.IdAware");
-
+    public static final DotName ERROR_HANDLER_DEFINITION_CLASS
+            = 
DotName.createSimple("org.apache.camel.model.errorhandler.BaseErrorHandlerDefinition");
 
     public static final DotName YAML_TYPE_ANNOTATION
             = 
DotName.createSimple("org.apache.camel.spi.annotations.YamlType");
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 211ed2ccadd..f644f6d5b97 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
@@ -304,6 +304,23 @@
           "$ref" : 
"#/items/definitions/org.apache.camel.dsl.yaml.deserializers.NamedBeanDefinition"
         }
       },
+      
"org.apache.camel.dsl.yaml.deserializers.ErrorHandlerBuilderDeserializer" : {
+        "type" : "object",
+        "properties" : {
+          "dead-letter-channel" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DeadLetterChannelDefinition"
+          },
+          "log" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition"
+          },
+          "none" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.NoErrorHandlerDefinition"
+          },
+          "ref" : {
+            "type" : "string"
+          }
+        }
+      },
       "org.apache.camel.dsl.yaml.deserializers.NamedBeanDefinition" : {
         "type" : "object",
         "properties" : {
@@ -5762,19 +5779,14 @@
       "org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition" : {
         "type" : "object",
         "properties" : {
-          "dead-letter-channel" : {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DeadLetterChannelDefinition"
-          },
-          "log" : {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition"
-          },
-          "none" : {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.NoErrorHandlerDefinition"
+          "id" : {
+            "type" : "string"
           },
           "ref" : {
             "type" : "string"
           }
-        }
+        },
+        "required" : [ "ref" ]
       },
       
"org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition" : {
         "type" : "object",
@@ -7697,6 +7709,12 @@
       "beans" : {
         "$ref" : 
"#/items/definitions/org.apache.camel.dsl.yaml.deserializers.BeansDeserializer"
       },
+      "error-handler" : {
+        "$ref" : 
"#/items/definitions/org.apache.camel.dsl.yaml.deserializers.ErrorHandlerBuilderDeserializer"
+      },
+      "errorHandler" : {
+        "$ref" : 
"#/items/definitions/org.apache.camel.dsl.yaml.deserializers.ErrorHandlerBuilderDeserializer"
+      },
       "from" : {
         "$ref" : 
"#/items/definitions/org.apache.camel.dsl.yaml.deserializers.RouteFromDefinitionDeserializer"
       },
@@ -7721,12 +7739,6 @@
       "templatedRoute" : {
         "$ref" : 
"#/items/definitions/org.apache.camel.model.TemplatedRouteDefinition"
       },
-      "error-handler" : {
-        "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition"
-      },
-      "errorHandler" : {
-        "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition"
-      },
       "rest" : {
         "$ref" : 
"#/items/definitions/org.apache.camel.model.rest.RestDefinition"
       }
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 406b7d74de0..aeb5d807f4f 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
@@ -211,6 +211,23 @@
           "$ref" : 
"#/items/definitions/org.apache.camel.dsl.yaml.deserializers.NamedBeanDefinition"
         }
       },
+      
"org.apache.camel.dsl.yaml.deserializers.ErrorHandlerBuilderDeserializer" : {
+        "type" : "object",
+        "properties" : {
+          "deadLetterChannel" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DeadLetterChannelDefinition"
+          },
+          "log" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition"
+          },
+          "none" : {
+            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.NoErrorHandlerDefinition"
+          },
+          "ref" : {
+            "type" : "string"
+          }
+        }
+      },
       "org.apache.camel.dsl.yaml.deserializers.NamedBeanDefinition" : {
         "type" : "object",
         "properties" : {
@@ -5666,19 +5683,14 @@
       "org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition" : {
         "type" : "object",
         "properties" : {
-          "deadLetterChannel" : {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DeadLetterChannelDefinition"
-          },
-          "log" : {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition"
-          },
-          "none" : {
-            "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.NoErrorHandlerDefinition"
+          "id" : {
+            "type" : "string"
           },
           "ref" : {
             "type" : "string"
           }
-        }
+        },
+        "required" : [ "ref" ]
       },
       
"org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition" : {
         "type" : "object",
@@ -7598,6 +7610,9 @@
       "beans" : {
         "$ref" : 
"#/items/definitions/org.apache.camel.dsl.yaml.deserializers.BeansDeserializer"
       },
+      "errorHandler" : {
+        "$ref" : 
"#/items/definitions/org.apache.camel.dsl.yaml.deserializers.ErrorHandlerBuilderDeserializer"
+      },
       "from" : {
         "$ref" : 
"#/items/definitions/org.apache.camel.dsl.yaml.deserializers.RouteFromDefinitionDeserializer"
       },
@@ -7613,9 +7628,6 @@
       "templatedRoute" : {
         "$ref" : 
"#/items/definitions/org.apache.camel.model.TemplatedRouteDefinition"
       },
-      "errorHandler" : {
-        "$ref" : 
"#/items/definitions/org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition"
-      },
       "rest" : {
         "$ref" : 
"#/items/definitions/org.apache.camel.model.rest.RestDefinition"
       }

Reply via email to