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"
}