This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch CAMEL-16757b in repository https://gitbox.apache.org/repos/asf/camel.git
commit 2f242403ca9500a44f33fcc10832f99cacc22cc4 Author: Claus Ibsen <[email protected]> AuthorDate: Tue Aug 3 11:46:14 2021 +0200 CAMEL-16757: spring/blueprint XML to support routeConfiguration --- .../org/apache/camel/model/routeConfiguration.json | 5 +++ .../camel/model/RouteConfigurationDefinition.java | 12 ++--- .../java/org/apache/camel/xml/in/ModelParser.java | 2 +- .../camel/dsl/yaml/RouteConfigurationTest.groovy | 51 ++++++++++++++++++++++ 4 files changed, 63 insertions(+), 7 deletions(-) diff --git a/core/camel-core-model/src/generated/resources/org/apache/camel/model/routeConfiguration.json b/core/camel-core-model/src/generated/resources/org/apache/camel/model/routeConfiguration.json index 515c123..131da2a 100644 --- a/core/camel-core-model/src/generated/resources/org/apache/camel/model/routeConfiguration.json +++ b/core/camel-core-model/src/generated/resources/org/apache/camel/model/routeConfiguration.json @@ -11,6 +11,11 @@ "output": false }, "properties": { + "onException": { "kind": "element", "displayName": "On Exception", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.OnExceptionDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Exception clause for catching certain exceptions and handling them." }, + "onCompletion": { "kind": "element", "displayName": "On Completion", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.OnCompletionDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "On completion callback for doing custom routing when the org.apache.camel.Exchange is complete." }, + "intercept": { "kind": "element", "displayName": "Intercept", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.InterceptDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Adds a route for an interceptor that intercepts every processing step." }, + "interceptFrom": { "kind": "element", "displayName": "Intercept From", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.InterceptFromDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Adds a route for an interceptor that intercepts incoming messages on the given endpoint." }, + "interceptSendToEndpoint": { "kind": "element", "displayName": "Intercept Send To Endpoint", "required": false, "type": "array", "javaType": "java.util.List<org.apache.camel.model.InterceptSendToEndpointDefinition>", "deprecated": false, "autowired": false, "secret": false, "description": "Applies a route for an interceptor if an exchange is send to the given endpoint" }, "id": { "kind": "attribute", "displayName": "Id", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the id of this node" }, "description": { "kind": "element", "displayName": "Description", "required": false, "type": "object", "javaType": "org.apache.camel.model.DescriptionDefinition", "deprecated": false, "autowired": false, "secret": false, "description": "Sets the description of this node" } } diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteConfigurationDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteConfigurationDefinition.java index ae3e8e8..8e4e308 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteConfigurationDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteConfigurationDefinition.java @@ -22,7 +22,7 @@ import java.util.List; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElementRef; +import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import org.apache.camel.spi.Metadata; @@ -37,15 +37,15 @@ public class RouteConfigurationDefinition extends OptionalIdentifiedDefinition<R // TODO: Model for ErrorHandler (requires to move error handler model from spring-xml, blueprint to core) - @XmlElementRef + @XmlElement(name = "onException") private List<OnExceptionDefinition> onExceptions = new ArrayList<>(); - @XmlElementRef + @XmlElement(name = "onCompletion") private List<OnCompletionDefinition> onCompletions = new ArrayList<>(); - @XmlElementRef + @XmlElement(name = "intercept") private List<InterceptDefinition> intercepts = new ArrayList<>(); - @XmlElementRef + @XmlElement(name = "interceptFrom") private List<InterceptFromDefinition> interceptFroms = new ArrayList<>(); - @XmlElementRef + @XmlElement(name = "interceptSendToEndpoint") private List<InterceptSendToEndpointDefinition> interceptSendTos = new ArrayList<>(); public RouteConfigurationDefinition() { diff --git a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java index b8fa6e4..b33981d 100644 --- a/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java +++ b/core/camel-xml-io/src/generated/java/org/apache/camel/xml/in/ModelParser.java @@ -940,7 +940,7 @@ public class ModelParser extends BaseParser { return doParse(new RouteConfigurationDefinition(), optionalIdentifiedDefinitionAttributeHandler(), (def, key) -> { switch (key) { - case "interceptFrom": doAdd(doParseInterceptFromDefinition(), def.getIntercepts(), def::setIntercepts); break; + case "interceptFrom": doAdd(doParseInterceptFromDefinition(), def.getInterceptFroms(), def::setInterceptFroms); break; case "interceptSendToEndpoint": doAdd(doParseInterceptSendToEndpointDefinition(), def.getInterceptSendTos(), def::setInterceptSendTos); break; case "intercept": doAdd(doParseInterceptDefinition(), def.getIntercepts(), def::setIntercepts); break; case "onCompletion": doAdd(doParseOnCompletionDefinition(), def.getOnCompletions(), def::setOnCompletions); break; diff --git a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy index 80aa3fe..fc347ff 100644 --- a/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy +++ b/dsl/camel-yaml-dsl/camel-yaml-dsl/src/test/groovy/org/apache/camel/dsl/yaml/RouteConfigurationTest.groovy @@ -20,6 +20,7 @@ import org.apache.camel.component.mock.MockEndpoint import org.apache.camel.dsl.yaml.support.YamlTestSupport import org.apache.camel.dsl.yaml.support.model.MyException import org.apache.camel.dsl.yaml.support.model.MyFailingProcessor +import org.junit.jupiter.api.Disabled class RouteConfigurationTest extends YamlTestSupport { def "route-configuration"() { @@ -106,4 +107,54 @@ class RouteConfigurationTest extends YamlTestSupport { MockEndpoint.assertIsSatisfied(context) } + // TODO: fix me + /* + def "route-configuration-id"() { + setup: + // global configurations + loadRoutes """ + - beans: + - name: myFailingProcessor + type: ${MyFailingProcessor.name} + - route-configuration: + - id: handleError + - on-exception: + handled: + constant: "true" + exception: + - ${MyException.name} + steps: + - transform: + constant: "Sorry" + - to: "mock:on-exception" + """ + // routes + loadRoutes """ + - from: + uri: "direct:start" + steps: + - process: + ref: "myFailingProcessor" + - from: + uri: "direct:start2" + steps: + - process: + ref: "myFailingProcessor" + """ + + withMock('mock:on-exception') { + expectedBodiesReceived 'Sorry' + } + + when: + context.start() + + withTemplate { + to('direct:start').withBody('hello').send() + to('direct:start2').withBody('hello2').send() + } + then: + MockEndpoint.assertIsSatisfied(context) + }*/ + }
