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 c5ab200f22efd942760b8262f3b69c7c399f196f Author: Claus Ibsen <[email protected]> AuthorDate: Thu Apr 7 12:23:29 2022 +0200 CAMEL-16834: error handler in model DSL. WIP --- .../ErrorHandlerBuilderDeserializer.java | 29 +++++----- .../src/generated/resources/camel-yaml-dsl.json | 65 +++++++++++----------- .../src/generated/resources/camelYamlDsl.json | 59 ++++++++++---------- .../apache/camel/dsl/yaml/ErrorHandlerTest.groovy | 20 +++---- 4 files changed, 86 insertions(+), 87 deletions(-) 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 9a03732b99a..c52fdaf279d 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 @@ -17,16 +17,16 @@ package org.apache.camel.dsl.yaml.deserializers; import org.apache.camel.CamelContext; +import org.apache.camel.ErrorHandlerFactory; import org.apache.camel.ExtendedCamelContext; -import org.apache.camel.builder.DeadLetterChannelBuilder; -import org.apache.camel.builder.DefaultErrorHandlerBuilder; -import org.apache.camel.builder.ErrorHandlerBuilder; -import org.apache.camel.builder.ErrorHandlerBuilderRef; -import org.apache.camel.builder.NoErrorHandlerBuilder; import org.apache.camel.dsl.yaml.common.YamlDeserializationContext; import org.apache.camel.dsl.yaml.common.YamlDeserializerResolver; import org.apache.camel.dsl.yaml.common.exception.UnsupportedFieldException; import org.apache.camel.dsl.yaml.common.exception.YamlDeserializationException; +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.NoErrorHandlerDefinition; import org.apache.camel.spi.CamelContextCustomizer; import org.apache.camel.spi.annotations.YamlIn; import org.apache.camel.spi.annotations.YamlProperty; @@ -45,18 +45,19 @@ import static org.apache.camel.dsl.yaml.common.YamlDeserializerSupport.setDeseri @YamlIn @YamlType( nodes = { "error-handler", "errorHandler" }, - types = ErrorHandlerBuilderRef.class, + types = ErrorHandlerRefDefinition.class, order = YamlDeserializerResolver.ORDER_DEFAULT, properties = { @YamlProperty(name = "ref", type = "string"), - @YamlProperty(name = "none", type = "object:org.apache.camel.builder.NoErrorHandlerBuilder"), - @YamlProperty(name = "log", type = "object:org.apache.camel.builder.DefaultErrorHandlerBuilder"), + @YamlProperty(name = "none", type = "object:org.apache.camel.model.errorhandler.NoErrorHandlerDefinition"), + @YamlProperty(name = "log", + type = "object:org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition"), @YamlProperty(name = "dead-letter-channel", - type = "object:org.apache.camel.builder.DeadLetterChannelBuilder"), + type = "object:org.apache.camel.model.errorhandler.DeadLetterChannelDefinition"), }) public class ErrorHandlerBuilderDeserializer implements ConstructNode { - private static CamelContextCustomizer customizer(ErrorHandlerBuilder builder) { + private static CamelContextCustomizer customizer(ErrorHandlerFactory builder) { return new CamelContextCustomizer() { @Override public void configure(CamelContext camelContext) { @@ -78,13 +79,13 @@ public class ErrorHandlerBuilderDeserializer implements ConstructNode { switch (key) { case "ref": - return customizer(asType(val, ErrorHandlerBuilderRef.class)); + return customizer(asType(val, ErrorHandlerRefDefinition.class)); case "none": - return customizer(asType(val, NoErrorHandlerBuilder.class)); + return customizer(asType(val, NoErrorHandlerDefinition.class)); case "dead-letter-channel": - return customizer(asType(val, DeadLetterChannelBuilder.class)); + return customizer(asType(val, DeadLetterChannelDefinition.class)); case "log": - return customizer(asType(val, DefaultErrorHandlerBuilder.class)); + return customizer(asType(val, DefaultErrorHandlerDefinition.class)); default: throw new UnsupportedFieldException(val, key); } 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 bfbac83269c..6b5367b3b48 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 @@ -367,21 +367,19 @@ } }, "org.apache.camel.builder.ErrorHandlerBuilderRef" : { - "type" : "object", - "properties" : { - "dead-letter-channel" : { - "$ref" : "#/items/definitions/org.apache.camel.builder.DeadLetterChannelBuilder" - }, - "log" : { - "$ref" : "#/items/definitions/org.apache.camel.builder.DefaultErrorHandlerBuilder" - }, - "none" : { - "$ref" : "#/items/definitions/org.apache.camel.builder.NoErrorHandlerBuilder" - }, - "ref" : { - "type" : "string" + "oneOf" : [ { + "type" : "string" + }, { + "type" : "object", + "properties" : { + "ref" : { + "type" : "string" + }, + "support-transacted" : { + "type" : "boolean" + } } - } + } ] }, "org.apache.camel.builder.NoErrorHandlerBuilder" : { "type" : "object" @@ -5852,20 +5850,21 @@ } }, "org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "object", - "properties" : { - "id" : { - "type" : "string" - }, - "ref" : { - "type" : "string" - } + "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" } - } ], - "required" : [ "ref" ] + } }, "org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition" : { "type" : "object", @@ -7785,12 +7784,6 @@ } }, "properties" : { - "error-handler" : { - "$ref" : "#/items/definitions/org.apache.camel.builder.ErrorHandlerBuilderRef" - }, - "errorHandler" : { - "$ref" : "#/items/definitions/org.apache.camel.builder.ErrorHandlerBuilderRef" - }, "beans" : { "$ref" : "#/items/definitions/org.apache.camel.dsl.yaml.deserializers.BeansDeserializer" }, @@ -7818,6 +7811,12 @@ "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 88c780667bb..329836579be 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 @@ -274,21 +274,19 @@ } }, "org.apache.camel.builder.ErrorHandlerBuilderRef" : { - "type" : "object", - "properties" : { - "deadLetterChannel" : { - "$ref" : "#/items/definitions/org.apache.camel.builder.DeadLetterChannelBuilder" - }, - "log" : { - "$ref" : "#/items/definitions/org.apache.camel.builder.DefaultErrorHandlerBuilder" - }, - "none" : { - "$ref" : "#/items/definitions/org.apache.camel.builder.NoErrorHandlerBuilder" - }, - "ref" : { - "type" : "string" + "oneOf" : [ { + "type" : "string" + }, { + "type" : "object", + "properties" : { + "ref" : { + "type" : "string" + }, + "supportTransacted" : { + "type" : "boolean" + } } - } + } ] }, "org.apache.camel.builder.NoErrorHandlerBuilder" : { "type" : "object" @@ -5756,20 +5754,21 @@ } }, "org.apache.camel.model.errorhandler.ErrorHandlerRefDefinition" : { - "oneOf" : [ { - "type" : "string" - }, { - "type" : "object", - "properties" : { - "id" : { - "type" : "string" - }, - "ref" : { - "type" : "string" - } + "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" } - } ], - "required" : [ "ref" ] + } }, "org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition" : { "type" : "object", @@ -7686,9 +7685,6 @@ } }, "properties" : { - "errorHandler" : { - "$ref" : "#/items/definitions/org.apache.camel.builder.ErrorHandlerBuilderRef" - }, "beans" : { "$ref" : "#/items/definitions/org.apache.camel.dsl.yaml.deserializers.BeansDeserializer" }, @@ -7707,6 +7703,9 @@ "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" } diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ErrorHandlerTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ErrorHandlerTest.groovy index fe392a66cc9..3e288f2ebf1 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ErrorHandlerTest.groovy +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/ErrorHandlerTest.groovy @@ -16,13 +16,13 @@ */ package org.apache.camel.dsl.yaml -import org.apache.camel.builder.DeadLetterChannelBuilder -import org.apache.camel.builder.DefaultErrorHandlerBuilder -import org.apache.camel.builder.ErrorHandlerBuilderRef -import org.apache.camel.builder.NoErrorHandlerBuilder import org.apache.camel.dsl.yaml.support.YamlTestSupport import org.apache.camel.component.mock.MockEndpoint import org.apache.camel.dsl.yaml.support.model.MyFailingProcessor +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.NoErrorHandlerDefinition class ErrorHandlerTest extends YamlTestSupport { @@ -33,7 +33,7 @@ class ErrorHandlerTest extends YamlTestSupport { - name: myFailingProcessor type: ${MyFailingProcessor.name} - name: myErrorHandler - type: org.apache.camel.builder.DeadLetterChannelBuilder + type: org.apache.camel.model.errorhandler.DeadLetterChannelDefinition properties: dead-letter-uri: "mock:on-error" redelivery-delay: 0 @@ -57,7 +57,7 @@ class ErrorHandlerTest extends YamlTestSupport { to('direct:start').withBody('hello').send() } then: - context.errorHandlerFactory instanceof ErrorHandlerBuilderRef + context.errorHandlerFactory instanceof ErrorHandlerRefDefinition MockEndpoint.assertIsSatisfied(context) } @@ -70,7 +70,7 @@ class ErrorHandlerTest extends YamlTestSupport { when: context.start() then: - with(context.errorHandlerFactory, ErrorHandlerBuilderRef) { + with(context.errorHandlerFactory, ErrorHandlerRefDefinition) { ref == 'myErrorHandler' } } @@ -85,7 +85,7 @@ class ErrorHandlerTest extends YamlTestSupport { when: context.start() then: - with(context.errorHandlerFactory, DefaultErrorHandlerBuilder) { + with(context.errorHandlerFactory, DefaultErrorHandlerDefinition) { useOriginalMessage } } @@ -100,7 +100,7 @@ class ErrorHandlerTest extends YamlTestSupport { when: context.start() then: - with(context.errorHandlerFactory, DeadLetterChannelBuilder) { + with(context.errorHandlerFactory, DeadLetterChannelDefinition) { deadLetterUri == 'mock:on-error' } } @@ -114,7 +114,7 @@ class ErrorHandlerTest extends YamlTestSupport { when: context.start() then: - context.errorHandlerFactory instanceof NoErrorHandlerBuilder + context.errorHandlerFactory instanceof NoErrorHandlerDefinition } }
