This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-4.8.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-4.8.x by this push:
new f2c2c21f29e CAMEL-21512: camel-jbang - camel transform route with
multiple <rest> only include last
f2c2c21f29e is described below
commit f2c2c21f29ec128e6293f3096b99ec2946e1b0a9
Author: Claus Ibsen <[email protected]>
AuthorDate: Sun Dec 8 12:24:32 2024 +0100
CAMEL-21512: camel-jbang - camel transform route with multiple <rest> only
include last
---
.../services/org/apache/camel/other.properties | 2 +-
.../src/generated/resources/xml-io-dsl.json | 2 +-
.../camel/dsl/xml/io/XmlRoutesBuilderLoader.java | 53 +++++++----------
.../camel/dsl/xml/io/XmlBlueprintLoadTest.java | 16 +++++
.../org/apache/camel/dsl/xml/io/blueprintRests.xml | 68 ++++++++++++++++++++++
5 files changed, 106 insertions(+), 35 deletions(-)
diff --git
a/dsl/camel-xml-io-dsl/src/generated/resources/META-INF/services/org/apache/camel/other.properties
b/dsl/camel-xml-io-dsl/src/generated/resources/META-INF/services/org/apache/camel/other.properties
index 680b55a1b1d..8f5851fae7c 100644
---
a/dsl/camel-xml-io-dsl/src/generated/resources/META-INF/services/org/apache/camel/other.properties
+++
b/dsl/camel-xml-io-dsl/src/generated/resources/META-INF/services/org/apache/camel/other.properties
@@ -2,7 +2,7 @@
name=xml-io-dsl
groupId=org.apache.camel
artifactId=camel-xml-io-dsl
-version=4.8.2-SNAPSHOT
+version=4.8.3-SNAPSHOT
projectName=Camel :: XML DSL with camel-xml-io
projectDescription=Camel XML DSL with camel-xml-io
annotations=routes.language=xml
diff --git a/dsl/camel-xml-io-dsl/src/generated/resources/xml-io-dsl.json
b/dsl/camel-xml-io-dsl/src/generated/resources/xml-io-dsl.json
index 13f30ce3f4c..3e06b134349 100644
--- a/dsl/camel-xml-io-dsl/src/generated/resources/xml-io-dsl.json
+++ b/dsl/camel-xml-io-dsl/src/generated/resources/xml-io-dsl.json
@@ -11,6 +11,6 @@
"metadata": { "routes.language": "xml" },
"groupId": "org.apache.camel",
"artifactId": "camel-xml-io-dsl",
- "version": "4.8.2-SNAPSHOT"
+ "version": "4.8.3-SNAPSHOT"
}
}
diff --git
a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
index 95a5292a31f..eb57f9581e9 100644
---
a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
+++
b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
@@ -38,14 +38,11 @@ import org.apache.camel.model.Model;
import org.apache.camel.model.RouteConfigurationDefinition;
import org.apache.camel.model.RouteConfigurationsDefinition;
import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.RouteTemplateDefinition;
import org.apache.camel.model.RouteTemplatesDefinition;
import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.TemplatedRouteDefinition;
import org.apache.camel.model.TemplatedRoutesDefinition;
import org.apache.camel.model.app.BeansDefinition;
import org.apache.camel.model.rest.RestConfigurationDefinition;
-import org.apache.camel.model.rest.RestDefinition;
import org.apache.camel.model.rest.RestsDefinition;
import org.apache.camel.spi.Resource;
import org.apache.camel.spi.annotations.RoutesLoader;
@@ -208,55 +205,45 @@ public class XmlRoutesBuilderLoader extends
RouteBuilderLoaderSupport {
}
}
- app.getRests().forEach(r -> {
- r.setResource(getResource());
- List<RestDefinition> list = new ArrayList<>();
- list.add(r);
+ if (!app.getRests().isEmpty()) {
+ app.getRests().forEach(r -> r.setResource(getResource()));
RestsDefinition def = new RestsDefinition();
def.setResource(getResource());
- def.setRests(list);
+ def.setRests(app.getRests());
setRestCollection(def);
- });
+ }
- app.getRouteConfigurations().forEach(rc -> {
- rc.setResource(getResource());
- List<RouteConfigurationDefinition> list = new
ArrayList<>();
- list.add(rc);
+ if (!app.getRouteConfigurations().isEmpty()) {
+ app.getRouteConfigurations().forEach(r ->
r.setResource(getResource()));
RouteConfigurationsDefinition def = new
RouteConfigurationsDefinition();
def.setResource(getResource());
- def.setRouteConfigurations(list);
+ def.setRouteConfigurations(app.getRouteConfigurations());
addConfigurations(def);
- });
+ }
- app.getRouteTemplates().forEach(rt -> {
- rt.setResource(getResource());
- List<RouteTemplateDefinition> list = new ArrayList<>();
- list.add(rt);
+ if (!app.getRouteTemplates().isEmpty()) {
+ app.getRouteTemplates().forEach(r ->
r.setResource(getResource()));
RouteTemplatesDefinition def = new
RouteTemplatesDefinition();
def.setResource(getResource());
- def.setRouteTemplates(list);
+ def.setRouteTemplates(app.getRouteTemplates());
setRouteTemplateCollection(def);
- });
+ }
- app.getTemplatedRoutes().forEach(tr -> {
- tr.setResource(getResource());
- List<TemplatedRouteDefinition> list = new ArrayList<>();
- list.add(tr);
+ if (!app.getTemplatedRoutes().isEmpty()) {
+ app.getTemplatedRoutes().forEach(r ->
r.setResource(getResource()));
TemplatedRoutesDefinition def = new
TemplatedRoutesDefinition();
def.setResource(getResource());
- def.setTemplatedRoutes(list);
+ def.setTemplatedRoutes(app.getTemplatedRoutes());
setTemplatedRouteCollection(def);
- });
+ }
- app.getRoutes().forEach(r -> {
- r.setResource(getResource());
- List<RouteDefinition> list = new ArrayList<>();
- list.add(r);
+ if (!app.getRoutes().isEmpty()) {
+ app.getRoutes().forEach(r -> r.setResource(getResource()));
RoutesDefinition def = new RoutesDefinition();
def.setResource(getResource());
- def.setRoutes(list);
+ def.setRoutes(app.getRoutes());
addRoutes(def);
- });
+ }
}
private void addRoutes(RoutesDefinition routes) {
diff --git
a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlBlueprintLoadTest.java
b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlBlueprintLoadTest.java
index c2b92ebf494..af9623fbd65 100644
---
a/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlBlueprintLoadTest.java
+++
b/dsl/camel-xml-io-dsl/src/test/java/org/apache/camel/dsl/xml/io/XmlBlueprintLoadTest.java
@@ -40,4 +40,20 @@ public class XmlBlueprintLoadTest {
}
}
+ @Test
+ public void testLoadRestsBuilderFromXml() throws Exception {
+ try (DefaultCamelContext context = new DefaultCamelContext()) {
+ // load OSGi blueprint XML <blueprint> with embedded <camelContext>
+ Resource resource =
PluginHelper.getResourceLoader(context).resolveResource(
+ "/org/apache/camel/dsl/xml/io/blueprintRests.xml");
+
+ Assertions.assertDoesNotThrow(() -> {
+ // should be able to parse the file and not fail (camel-jbang
supports creating spring beans)
+ PluginHelper.getRoutesLoader(context).loadRoutes(resource);
+ });
+
+ Assertions.assertEquals(2, context.getRestDefinitions().size());
+ }
+ }
+
}
diff --git
a/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/blueprintRests.xml
b/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/blueprintRests.xml
new file mode 100644
index 00000000000..89387311206
--- /dev/null
+++
b/dsl/camel-xml-io-dsl/src/test/resources/org/apache/camel/dsl/xml/io/blueprintRests.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.osgi.org/xmlns/blueprint/v1.0.0
https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+ <camelContext id="myCamel"
xmlns="http://camel.apache.org/schema/blueprint">
+ <rest path="/user" consumes="application/json"
produces="application/json">
+ <get path="/{id}">
+ <param name="id" type="path" description="The id of the user
to get" dataType="integer"/>
+ <responseMessage message="The user that was found"/>
+ <responseMessage code="404" message="User not found"/>
+ <to uri="direct:getUser"/>
+ </get>
+ <put>
+ <param name="body" type="body" description="The user to update
or create"/>
+ <to uri="stub:userService?method=updateUser"/>
+ </put>
+ <get path="/findAll">
+ <responseMessage message="All the users"/>
+ <to uri="stub:userService?method=listUsers"/>
+ </get>
+ </rest>
+
+ <rest path="/echo">
+ <get path="/ping">
+ <to uri="direct:echo"/>
+ </get>
+ </rest>
+
+ <route>
+ <from uri="direct:getUser"/>
+ <to uri="stub:userService?method=getUser(${header.id})"/>
+ <filter>
+ <simple>${body} == null</simple>
+ <setHeader name="Exchange.HTTP_RESPONSE_CODE">
+ <constant>404</constant>
+ </setHeader>
+ </filter>
+ </route>
+ <route>
+ <from uri="direct:echo"/>
+ <setBody>
+ <constant>pong</constant>
+ </setBody>
+ </route>
+
+ </camelContext>
+
+</blueprint>