You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/08/03 12:33:50 UTC
[camel] 20/22: CAMEL-16757: spring/blueprint XML to support
routeConfiguration
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 <cl...@gmail.com>
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)
+ }*/
+
}