This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 9c5ba6b CAMEL-16685: camel-openapi-restdsl-generator - Split
generated route builder into smaller code blocks
9c5ba6b is described below
commit 9c5ba6bf16b0ac1bd4216e94aa1c34c4771a5402
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Jun 4 10:35:36 2021 +0200
CAMEL-16685: camel-openapi-restdsl-generator - Split generated route
builder into smaller code blocks
---
.../openapi/MethodBodySourceCodeEmitter.java | 9 +++-
.../openapi/RestDslSourceCodeGenerator.java | 34 ++++++++++++--
.../openapi/MethodBodySourceCodeEmitterTest.java | 3 ++
.../generator/openapi/RestDslGeneratorV3Test.java | 1 -
.../src/test/resources/MyRestRoute.txt | 54 ++++++++++++++++------
.../src/test/resources/MyRestRouteFilter.txt | 14 ++++--
.../src/test/resources/MyRestRouteFilterV3.txt | 14 ++++--
.../src/test/resources/MyRestRouteV3.txt | 54 ++++++++++++++++------
.../src/test/resources/OpenApiPetstore.txt | 54 ++++++++++++++++------
.../resources/OpenApiPetstoreWithRestComponent.txt | 53 +++++++++++++++------
.../src/test/resources/OpenApiV3Petstore.txt | 54 ++++++++++++++++------
.../OpenApiV3PetstoreWithRestComponent.txt | 53 +++++++++++++++------
12 files changed, 306 insertions(+), 91 deletions(-)
diff --git
a/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/MethodBodySourceCodeEmitter.java
b/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/MethodBodySourceCodeEmitter.java
index 17e1150..6cc8e14 100644
---
a/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/MethodBodySourceCodeEmitter.java
+++
b/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/MethodBodySourceCodeEmitter.java
@@ -50,7 +50,7 @@ class MethodBodySourceCodeEmitter implements
CodeEmitter<MethodSpec> {
final int indent = indentLevelOf(method);
- if (!first) {
+ if (!first || indent == 0) {
builder.addCode("\n");
}
@@ -74,10 +74,15 @@ class MethodBodySourceCodeEmitter implements
CodeEmitter<MethodSpec> {
return this;
}
+ public void endEmit() {
+ builder.addCode(";\n");
+ first = true;
+ }
+
@Override
public MethodSpec result() {
builder.addCode(String.join("",
Collections.nCopies(indentStack.peek(), "$<")));
- builder.addCode(";\n");
+ builder.addCode("\n");
return builder.build();
}
diff --git
a/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/RestDslSourceCodeGenerator.java
b/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/RestDslSourceCodeGenerator.java
index 2bf76b1..7333308 100644
---
a/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/RestDslSourceCodeGenerator.java
+++
b/tooling/openapi-rest-dsl-generator/src/main/java/org/apache/camel/generator/openapi/RestDslSourceCodeGenerator.java
@@ -18,6 +18,8 @@ package org.apache.camel.generator.openapi;
import java.io.IOException;
import java.time.Instant;
+import java.util.ArrayList;
+import java.util.List;
import java.util.function.Function;
import java.util.stream.Collector;
@@ -109,13 +111,26 @@ public abstract class RestDslSourceCodeGenerator<T>
extends RestDslGenerator<Res
if (ObjectHelper.isNotEmpty(apiContextPath)) {
configure.addCode(".apiContextPath(\"" + apiContextPath +
"\")");
}
- configure.addCode(";\n\n");
+ configure.addCode(";\n");
}
final String basePath =
RestDslGenerator.determineBasePathFrom(this.basePath, document);
-
- final PathVisitor<MethodSpec> restDslStatement = new
PathVisitor<>(basePath, emitter, filter, destinationGenerator());
- document.paths.getItems().forEach(restDslStatement::visit);
+ document.paths.getItems().forEach(s -> {
+ // there must be at least one verb
+ if (s.get != null || s.delete != null || s.head != null ||
s.options != null || s.put != null || s.patch != null
+ || s.post != null) {
+ // there must be at least one operation accepted by the filter
(otherwise we generate empty rest methods)
+ boolean anyAccepted = filter == null || ofNullable(s.get,
s.delete, s.head, s.options, s.put, s.patch, s.post)
+ .stream().anyMatch(o -> filter.accept(o.operationId));
+ if (anyAccepted) {
+ // create new rest statement per path to avoid a giant
chained single method
+ PathVisitor<MethodSpec> restDslStatement
+ = new PathVisitor<>(basePath, emitter, filter,
destinationGenerator());
+ restDslStatement.visit(s);
+ emitter.endEmit();
+ }
+ }
+ });
return emitter.result();
}
@@ -204,4 +219,15 @@ public abstract class RestDslSourceCodeGenerator<T>
extends RestDslGenerator<Res
return DEFAULT_PACKAGE_NAME;
}
+
+ private static <T> List<T> ofNullable(T... t) {
+ List<T> list = new ArrayList<>();
+ for (T o : t) {
+ if (o != null) {
+ list.add(o);
+ }
+ }
+ return list;
+ }
+
}
diff --git
a/tooling/openapi-rest-dsl-generator/src/test/java/org/apache/camel/generator/openapi/MethodBodySourceCodeEmitterTest.java
b/tooling/openapi-rest-dsl-generator/src/test/java/org/apache/camel/generator/openapi/MethodBodySourceCodeEmitterTest.java
index de90194..f6a6025 100644
---
a/tooling/openapi-rest-dsl-generator/src/test/java/org/apache/camel/generator/openapi/MethodBodySourceCodeEmitterTest.java
+++
b/tooling/openapi-rest-dsl-generator/src/test/java/org/apache/camel/generator/openapi/MethodBodySourceCodeEmitterTest.java
@@ -40,8 +40,10 @@ public class MethodBodySourceCodeEmitterTest {
emitter.emit("type", RestParamType.body);
emitter.emit("required", true);
emitter.emit("endParam");
+ emitter.endEmit();
assertThat(emitter.result().toString()).isEqualTo("void configure()
{\n"//
+ + "\n"//
+ " rest()\n"//
+ "
.put(\"/pet\")\n"//
+ "
.consumes(\"application/json,application/xml\")\n"//
@@ -51,6 +53,7 @@ public class MethodBodySourceCodeEmitterTest {
+ "
.type(org.apache.camel.model.rest.RestParamType.body)\n"//
+ "
.required(true)\n"//
+ "
.endParam();\n"//
+ + "\n"//
+ "}\n");
}
}
diff --git
a/tooling/openapi-rest-dsl-generator/src/test/java/org/apache/camel/generator/openapi/RestDslGeneratorV3Test.java
b/tooling/openapi-rest-dsl-generator/src/test/java/org/apache/camel/generator/openapi/RestDslGeneratorV3Test.java
index 0fa636b..301e1f3 100644
---
a/tooling/openapi-rest-dsl-generator/src/test/java/org/apache/camel/generator/openapi/RestDslGeneratorV3Test.java
+++
b/tooling/openapi-rest-dsl-generator/src/test/java/org/apache/camel/generator/openapi/RestDslGeneratorV3Test.java
@@ -62,7 +62,6 @@ public class RestDslGeneratorV3Test {
final URI file =
RestDslGeneratorV3Test.class.getResource("/OpenApiV3Petstore.txt").toURI();
final String expectedContent = new
String(Files.readAllBytes(Paths.get(file)), StandardCharsets.UTF_8);
assertThat(code.toString()).isEqualTo(expectedContent);
-
}
@Test
diff --git
a/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRoute.txt
b/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRoute.txt
index d08f3b5..e26f036 100644
--- a/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRoute.txt
+++ b/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRoute.txt
@@ -17,6 +17,7 @@ public final class MyRestRoute extends RouteBuilder {
* Defines Apache Camel routes using REST DSL fluent API.
*/
public void configure() {
+
rest("/v2")
.put("/pet")
.id("updatePet")
@@ -47,7 +48,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(false)
.description("Verbose data")
.endParam()
- .to("direct:rest-addPet")
+ .to("direct:rest-addPet");
+
+ rest("/v2")
.get("/pet/findByStatus")
.id("findPetsByStatus")
.description("Multiple status values can be
provided with comma separated strings")
@@ -61,7 +64,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Status values that need
to be considered for filter")
.endParam()
- .to("direct:rest-findPetsByStatus")
+ .to("direct:rest-findPetsByStatus");
+
+ rest("/v2")
.get("/pet/findByTags")
.id("findPetsByTags")
.description("Muliple tags can be provided with
comma separated strings. Use tag1, tag2, tag3 for testing.")
@@ -75,7 +80,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Tags to filter by")
.endParam()
- .to("direct:rest-findPetsByTags")
+ .to("direct:rest-findPetsByTags");
+
+ rest("/v2")
.get("/pet/{petId}")
.id("getPetById")
.description("Returns a single pet")
@@ -130,7 +137,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Pet id to delete")
.endParam()
- .to("direct:rest-deletePet")
+ .to("direct:rest-deletePet");
+
+ rest("/v2")
.post("/pet/{petId}/uploadImage")
.id("uploadFile")
.consumes("multipart/form-data")
@@ -156,12 +165,16 @@ public final class MyRestRoute extends RouteBuilder {
.required(false)
.description("file to upload")
.endParam()
- .to("direct:rest-uploadFile")
+ .to("direct:rest-uploadFile");
+
+ rest("/v2")
.get("/store/inventory")
.id("getInventory")
.description("Returns a map of status codes to
quantities")
.produces("application/json")
- .to("direct:rest-getInventory")
+ .to("direct:rest-getInventory");
+
+ rest("/v2")
.post("/store/order")
.id("placeOrder")
.produces("application/xml,application/json")
@@ -171,7 +184,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("order placed for
purchasing the pet")
.endParam()
- .to("direct:rest-placeOrder")
+ .to("direct:rest-placeOrder");
+
+ rest("/v2")
.get("/store/order/{orderId}")
.id("getOrderById")
.description("For valid response try integer
IDs with value >= 1 and <= 10. Other values will generated exceptions")
@@ -195,7 +210,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("ID of the order that
needs to be deleted")
.endParam()
- .to("direct:rest-deleteOrder")
+ .to("direct:rest-deleteOrder");
+
+ rest("/v2")
.post("/user")
.id("createUser")
.description("This can only be done by the
logged in user.")
@@ -206,7 +223,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Created user object")
.endParam()
- .to("direct:rest-createUser")
+ .to("direct:rest-createUser");
+
+ rest("/v2")
.post("/user/createWithArray")
.id("createUsersWithArrayInput")
.produces("application/xml,application/json")
@@ -216,7 +235,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:rest-createUsersWithArrayInput")
+ .to("direct:rest-createUsersWithArrayInput");
+
+ rest("/v2")
.post("/user/createWithList")
.id("createUsersWithListInput")
.produces("application/xml,application/json")
@@ -226,7 +247,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:rest-createUsersWithListInput")
+ .to("direct:rest-createUsersWithListInput");
+
+ rest("/v2")
.get("/user/login")
.id("loginUser")
.produces("application/xml,application/json")
@@ -244,11 +267,15 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("The password for login in
clear text")
.endParam()
- .to("direct:rest-loginUser")
+ .to("direct:rest-loginUser");
+
+ rest("/v2")
.get("/user/logout")
.id("logoutUser")
.produces("application/xml,application/json")
- .to("direct:rest-logoutUser")
+ .to("direct:rest-logoutUser");
+
+ rest("/v2")
.get("/user/{username}")
.id("getUserByName")
.produces("application/xml,application/json")
@@ -290,5 +317,6 @@ public final class MyRestRoute extends RouteBuilder {
.description("The name that needs to be
deleted")
.endParam()
.to("direct:rest-deleteUser");
+
}
}
diff --git
a/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteFilter.txt
b/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteFilter.txt
index 27547a6..c42d971 100644
---
a/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteFilter.txt
+++
b/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteFilter.txt
@@ -17,6 +17,7 @@ public final class MyRestRoute extends RouteBuilder {
* Defines Apache Camel routes using REST DSL fluent API.
*/
public void configure() {
+
rest("/v2")
.put("/pet")
.id("updatePet")
@@ -28,7 +29,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Pet object that needs to
be added to the store")
.endParam()
- .to("direct:rest-updatePet")
+ .to("direct:rest-updatePet");
+
+ rest("/v2")
.get("/pet/findByStatus")
.id("findPetsByStatus")
.description("Multiple status values can be
provided with comma separated strings")
@@ -42,7 +45,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Status values that need
to be considered for filter")
.endParam()
- .to("direct:rest-findPetsByStatus")
+ .to("direct:rest-findPetsByStatus");
+
+ rest("/v2")
.get("/pet/findByTags")
.id("findPetsByTags")
.description("Muliple tags can be provided with
comma separated strings. Use tag1, tag2, tag3 for testing.")
@@ -56,7 +61,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Tags to filter by")
.endParam()
- .to("direct:rest-findPetsByTags")
+ .to("direct:rest-findPetsByTags");
+
+ rest("/v2")
.delete("/pet/{petId}")
.id("deletePet")
.produces("application/xml,application/json")
@@ -74,5 +81,6 @@ public final class MyRestRoute extends RouteBuilder {
.description("Pet id to delete")
.endParam()
.to("direct:rest-deletePet");
+
}
}
diff --git
a/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteFilterV3.txt
b/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteFilterV3.txt
index 473210d..74ecc2c 100644
---
a/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteFilterV3.txt
+++
b/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteFilterV3.txt
@@ -17,6 +17,7 @@ public final class MyRestRoute extends RouteBuilder {
* Defines Apache Camel routes using REST DSL fluent API.
*/
public void configure() {
+
rest("/api/v3")
.put("/pet")
.id("updatePet")
@@ -27,7 +28,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Pet object that needs to
be added to the store")
.endParam()
- .to("direct:rest-updatePet")
+ .to("direct:rest-updatePet");
+
+ rest("/api/v3")
.get("/pet/findByStatus")
.id("findPetsByStatus")
.description("Multiple status values can be
provided with comma separated strings")
@@ -41,7 +44,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Status values that need
to be considered for filter")
.endParam()
- .to("direct:rest-findPetsByStatus")
+ .to("direct:rest-findPetsByStatus");
+
+ rest("/api/v3")
.get("/pet/findByTags")
.id("findPetsByTags")
.description("Muliple tags can be provided with
comma separated strings. Use tag1, tag2, tag3 for testing.")
@@ -55,7 +60,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Tags to filter by")
.endParam()
- .to("direct:rest-findPetsByTags")
+ .to("direct:rest-findPetsByTags");
+
+ rest("/api/v3")
.delete("/pet/{petId}")
.id("deletePet")
.param()
@@ -72,5 +79,6 @@ public final class MyRestRoute extends RouteBuilder {
.description("Pet id to delete")
.endParam()
.to("direct:rest-deletePet");
+
}
}
diff --git
a/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteV3.txt
b/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteV3.txt
index 1ec2154..9f4126c 100644
--- a/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteV3.txt
+++ b/tooling/openapi-rest-dsl-generator/src/test/resources/MyRestRouteV3.txt
@@ -17,6 +17,7 @@ public final class MyRestRoute extends RouteBuilder {
* Defines Apache Camel routes using REST DSL fluent API.
*/
public void configure() {
+
rest("/api/v3")
.put("/pet")
.id("updatePet")
@@ -45,7 +46,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Pet object that needs to
be added to the store")
.endParam()
- .to("direct:rest-addPet")
+ .to("direct:rest-addPet");
+
+ rest("/api/v3")
.get("/pet/findByStatus")
.id("findPetsByStatus")
.description("Multiple status values can be
provided with comma separated strings")
@@ -59,7 +62,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Status values that need
to be considered for filter")
.endParam()
- .to("direct:rest-findPetsByStatus")
+ .to("direct:rest-findPetsByStatus");
+
+ rest("/api/v3")
.get("/pet/findByTags")
.id("findPetsByTags")
.description("Muliple tags can be provided with
comma separated strings. Use tag1, tag2, tag3 for testing.")
@@ -73,7 +78,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Tags to filter by")
.endParam()
- .to("direct:rest-findPetsByTags")
+ .to("direct:rest-findPetsByTags");
+
+ rest("/api/v3")
.get("/pet/{petId}")
.id("getPetById")
.description("Returns a single pet")
@@ -126,7 +133,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Pet id to delete")
.endParam()
- .to("direct:rest-deletePet")
+ .to("direct:rest-deletePet");
+
+ rest("/api/v3")
.post("/pet/{petId}/uploadImage")
.id("uploadFile")
.consumes("multipart/form-data")
@@ -152,12 +161,16 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("file to upload")
.endParam()
- .to("direct:rest-uploadFile")
+ .to("direct:rest-uploadFile");
+
+ rest("/api/v3")
.get("/store/inventory")
.id("getInventory")
.description("Returns a map of status codes to
quantities")
.produces("application/json")
- .to("direct:rest-getInventory")
+ .to("direct:rest-getInventory");
+
+ rest("/api/v3")
.post("/store/order")
.id("placeOrder")
.consumes("*/*")
@@ -168,7 +181,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("order placed for
purchasing the pet")
.endParam()
- .to("direct:rest-placeOrder")
+ .to("direct:rest-placeOrder");
+
+ rest("/api/v3")
.get("/store/order/{orderId}")
.id("getOrderById")
.description("For valid response try integer
IDs with value >= 1 and <= 10. Other values will generated exceptions")
@@ -191,7 +206,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("ID of the order that
needs to be deleted")
.endParam()
- .to("direct:rest-deleteOrder")
+ .to("direct:rest-deleteOrder");
+
+ rest("/api/v3")
.post("/user")
.id("createUser")
.description("This can only be done by the
logged in user.")
@@ -202,7 +219,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("Created user object")
.endParam()
- .to("direct:rest-createUser")
+ .to("direct:rest-createUser");
+
+ rest("/api/v3")
.post("/user/createWithArray")
.id("createUsersWithArrayInput")
.consumes("*/*")
@@ -212,7 +231,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:rest-createUsersWithArrayInput")
+ .to("direct:rest-createUsersWithArrayInput");
+
+ rest("/api/v3")
.post("/user/createWithList")
.id("createUsersWithListInput")
.consumes("*/*")
@@ -222,7 +243,9 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:rest-createUsersWithListInput")
+ .to("direct:rest-createUsersWithListInput");
+
+ rest("/api/v3")
.get("/user/login")
.id("loginUser")
.produces("application/xml,application/json")
@@ -240,10 +263,14 @@ public final class MyRestRoute extends RouteBuilder {
.required(true)
.description("The password for login in
clear text")
.endParam()
- .to("direct:rest-loginUser")
+ .to("direct:rest-loginUser");
+
+ rest("/api/v3")
.get("/user/logout")
.id("logoutUser")
- .to("direct:rest-logoutUser")
+ .to("direct:rest-logoutUser");
+
+ rest("/api/v3")
.get("/user/{username}")
.id("getUserByName")
.produces("application/xml,application/json")
@@ -284,5 +311,6 @@ public final class MyRestRoute extends RouteBuilder {
.description("The name that needs to be
deleted")
.endParam()
.to("direct:rest-deleteUser");
+
}
}
diff --git
a/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiPetstore.txt
b/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiPetstore.txt
index c3334f7..bdb3929 100644
--- a/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiPetstore.txt
+++ b/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiPetstore.txt
@@ -14,6 +14,7 @@ public final class OpenApiPetstore extends RouteBuilder {
* Defines Apache Camel routes using REST DSL fluent API.
*/
public void configure() {
+
rest("/v2")
.put("/pet")
.id("updatePet")
@@ -44,7 +45,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(false)
.description("Verbose data")
.endParam()
- .to("direct:addPet")
+ .to("direct:addPet");
+
+ rest("/v2")
.get("/pet/findByStatus")
.id("findPetsByStatus")
.description("Multiple status values can be provided with
comma separated strings")
@@ -58,7 +61,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Status values that need to be considered for
filter")
.endParam()
- .to("direct:findPetsByStatus")
+ .to("direct:findPetsByStatus");
+
+ rest("/v2")
.get("/pet/findByTags")
.id("findPetsByTags")
.description("Muliple tags can be provided with comma
separated strings. Use tag1, tag2, tag3 for testing.")
@@ -72,7 +77,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Tags to filter by")
.endParam()
- .to("direct:findPetsByTags")
+ .to("direct:findPetsByTags");
+
+ rest("/v2")
.get("/pet/{petId}")
.id("getPetById")
.description("Returns a single pet")
@@ -127,7 +134,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Pet id to delete")
.endParam()
- .to("direct:deletePet")
+ .to("direct:deletePet");
+
+ rest("/v2")
.post("/pet/{petId}/uploadImage")
.id("uploadFile")
.consumes("multipart/form-data")
@@ -153,12 +162,16 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(false)
.description("file to upload")
.endParam()
- .to("direct:uploadFile")
+ .to("direct:uploadFile");
+
+ rest("/v2")
.get("/store/inventory")
.id("getInventory")
.description("Returns a map of status codes to quantities")
.produces("application/json")
- .to("direct:getInventory")
+ .to("direct:getInventory");
+
+ rest("/v2")
.post("/store/order")
.id("placeOrder")
.produces("application/xml,application/json")
@@ -168,7 +181,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("order placed for purchasing the pet")
.endParam()
- .to("direct:placeOrder")
+ .to("direct:placeOrder");
+
+ rest("/v2")
.get("/store/order/{orderId}")
.id("getOrderById")
.description("For valid response try integer IDs with value >=
1 and <= 10. Other values will generated exceptions")
@@ -192,7 +207,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("ID of the order that needs to be deleted")
.endParam()
- .to("direct:deleteOrder")
+ .to("direct:deleteOrder");
+
+ rest("/v2")
.post("/user")
.id("createUser")
.description("This can only be done by the logged in user.")
@@ -203,7 +220,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Created user object")
.endParam()
- .to("direct:createUser")
+ .to("direct:createUser");
+
+ rest("/v2")
.post("/user/createWithArray")
.id("createUsersWithArrayInput")
.produces("application/xml,application/json")
@@ -213,7 +232,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:createUsersWithArrayInput")
+ .to("direct:createUsersWithArrayInput");
+
+ rest("/v2")
.post("/user/createWithList")
.id("createUsersWithListInput")
.produces("application/xml,application/json")
@@ -223,7 +244,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:createUsersWithListInput")
+ .to("direct:createUsersWithListInput");
+
+ rest("/v2")
.get("/user/login")
.id("loginUser")
.produces("application/xml,application/json")
@@ -241,11 +264,15 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("The password for login in clear text")
.endParam()
- .to("direct:loginUser")
+ .to("direct:loginUser");
+
+ rest("/v2")
.get("/user/logout")
.id("logoutUser")
.produces("application/xml,application/json")
- .to("direct:logoutUser")
+ .to("direct:logoutUser");
+
+ rest("/v2")
.get("/user/{username}")
.id("getUserByName")
.produces("application/xml,application/json")
@@ -287,5 +314,6 @@ public final class OpenApiPetstore extends RouteBuilder {
.description("The name that needs to be deleted")
.endParam()
.to("direct:deleteUser");
+
}
}
diff --git
a/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiPetstoreWithRestComponent.txt
b/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiPetstoreWithRestComponent.txt
index 657025f..5f42d8a 100644
---
a/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiPetstoreWithRestComponent.txt
+++
b/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiPetstoreWithRestComponent.txt
@@ -47,7 +47,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(false)
.description("Verbose data")
.endParam()
- .to("direct:addPet")
+ .to("direct:addPet");
+
+ rest("/v2")
.get("/pet/findByStatus")
.id("findPetsByStatus")
.description("Multiple status values can be provided with
comma separated strings")
@@ -61,7 +63,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Status values that need to be considered for
filter")
.endParam()
- .to("direct:findPetsByStatus")
+ .to("direct:findPetsByStatus");
+
+ rest("/v2")
.get("/pet/findByTags")
.id("findPetsByTags")
.description("Muliple tags can be provided with comma
separated strings. Use tag1, tag2, tag3 for testing.")
@@ -75,7 +79,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Tags to filter by")
.endParam()
- .to("direct:findPetsByTags")
+ .to("direct:findPetsByTags");
+
+ rest("/v2")
.get("/pet/{petId}")
.id("getPetById")
.description("Returns a single pet")
@@ -130,7 +136,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Pet id to delete")
.endParam()
- .to("direct:deletePet")
+ .to("direct:deletePet");
+
+ rest("/v2")
.post("/pet/{petId}/uploadImage")
.id("uploadFile")
.consumes("multipart/form-data")
@@ -156,12 +164,16 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(false)
.description("file to upload")
.endParam()
- .to("direct:uploadFile")
+ .to("direct:uploadFile");
+
+ rest("/v2")
.get("/store/inventory")
.id("getInventory")
.description("Returns a map of status codes to quantities")
.produces("application/json")
- .to("direct:getInventory")
+ .to("direct:getInventory");
+
+ rest("/v2")
.post("/store/order")
.id("placeOrder")
.produces("application/xml,application/json")
@@ -171,7 +183,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("order placed for purchasing the pet")
.endParam()
- .to("direct:placeOrder")
+ .to("direct:placeOrder");
+
+ rest("/v2")
.get("/store/order/{orderId}")
.id("getOrderById")
.description("For valid response try integer IDs with value >=
1 and <= 10. Other values will generated exceptions")
@@ -195,7 +209,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("ID of the order that needs to be deleted")
.endParam()
- .to("direct:deleteOrder")
+ .to("direct:deleteOrder");
+
+ rest("/v2")
.post("/user")
.id("createUser")
.description("This can only be done by the logged in user.")
@@ -206,7 +222,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Created user object")
.endParam()
- .to("direct:createUser")
+ .to("direct:createUser");
+
+ rest("/v2")
.post("/user/createWithArray")
.id("createUsersWithArrayInput")
.produces("application/xml,application/json")
@@ -216,7 +234,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:createUsersWithArrayInput")
+ .to("direct:createUsersWithArrayInput");
+
+ rest("/v2")
.post("/user/createWithList")
.id("createUsersWithListInput")
.produces("application/xml,application/json")
@@ -226,7 +246,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:createUsersWithListInput")
+ .to("direct:createUsersWithListInput");
+
+ rest("/v2")
.get("/user/login")
.id("loginUser")
.produces("application/xml,application/json")
@@ -244,11 +266,15 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("The password for login in clear text")
.endParam()
- .to("direct:loginUser")
+ .to("direct:loginUser");
+
+ rest("/v2")
.get("/user/logout")
.id("logoutUser")
.produces("application/xml,application/json")
- .to("direct:logoutUser")
+ .to("direct:logoutUser");
+
+ rest("/v2")
.get("/user/{username}")
.id("getUserByName")
.produces("application/xml,application/json")
@@ -290,5 +316,6 @@ public final class OpenApiPetstore extends RouteBuilder {
.description("The name that needs to be deleted")
.endParam()
.to("direct:deleteUser");
+
}
}
diff --git
a/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiV3Petstore.txt
b/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiV3Petstore.txt
index 239990e..4a61b58 100644
---
a/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiV3Petstore.txt
+++
b/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiV3Petstore.txt
@@ -14,6 +14,7 @@ public final class OpenApiPetstore extends RouteBuilder {
* Defines Apache Camel routes using REST DSL fluent API.
*/
public void configure() {
+
rest("/api/v3")
.put("/pet")
.id("updatePet")
@@ -42,7 +43,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Pet object that needs to be added to the
store")
.endParam()
- .to("direct:addPet")
+ .to("direct:addPet");
+
+ rest("/api/v3")
.get("/pet/findByStatus")
.id("findPetsByStatus")
.description("Multiple status values can be provided with
comma separated strings")
@@ -56,7 +59,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Status values that need to be considered for
filter")
.endParam()
- .to("direct:findPetsByStatus")
+ .to("direct:findPetsByStatus");
+
+ rest("/api/v3")
.get("/pet/findByTags")
.id("findPetsByTags")
.description("Muliple tags can be provided with comma
separated strings. Use tag1, tag2, tag3 for testing.")
@@ -70,7 +75,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Tags to filter by")
.endParam()
- .to("direct:findPetsByTags")
+ .to("direct:findPetsByTags");
+
+ rest("/api/v3")
.get("/pet/{petId}")
.id("getPetById")
.description("Returns a single pet")
@@ -123,7 +130,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Pet id to delete")
.endParam()
- .to("direct:deletePet")
+ .to("direct:deletePet");
+
+ rest("/api/v3")
.post("/pet/{petId}/uploadImage")
.id("uploadFile")
.consumes("multipart/form-data")
@@ -149,12 +158,16 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("file to upload")
.endParam()
- .to("direct:uploadFile")
+ .to("direct:uploadFile");
+
+ rest("/api/v3")
.get("/store/inventory")
.id("getInventory")
.description("Returns a map of status codes to quantities")
.produces("application/json")
- .to("direct:getInventory")
+ .to("direct:getInventory");
+
+ rest("/api/v3")
.post("/store/order")
.id("placeOrder")
.consumes("*/*")
@@ -165,7 +178,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("order placed for purchasing the pet")
.endParam()
- .to("direct:placeOrder")
+ .to("direct:placeOrder");
+
+ rest("/api/v3")
.get("/store/order/{orderId}")
.id("getOrderById")
.description("For valid response try integer IDs with value >=
1 and <= 10. Other values will generated exceptions")
@@ -188,7 +203,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("ID of the order that needs to be deleted")
.endParam()
- .to("direct:deleteOrder")
+ .to("direct:deleteOrder");
+
+ rest("/api/v3")
.post("/user")
.id("createUser")
.description("This can only be done by the logged in user.")
@@ -199,7 +216,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Created user object")
.endParam()
- .to("direct:createUser")
+ .to("direct:createUser");
+
+ rest("/api/v3")
.post("/user/createWithArray")
.id("createUsersWithArrayInput")
.consumes("*/*")
@@ -209,7 +228,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:createUsersWithArrayInput")
+ .to("direct:createUsersWithArrayInput");
+
+ rest("/api/v3")
.post("/user/createWithList")
.id("createUsersWithListInput")
.consumes("*/*")
@@ -219,7 +240,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:createUsersWithListInput")
+ .to("direct:createUsersWithListInput");
+
+ rest("/api/v3")
.get("/user/login")
.id("loginUser")
.produces("application/xml,application/json")
@@ -237,10 +260,14 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("The password for login in clear text")
.endParam()
- .to("direct:loginUser")
+ .to("direct:loginUser");
+
+ rest("/api/v3")
.get("/user/logout")
.id("logoutUser")
- .to("direct:logoutUser")
+ .to("direct:logoutUser");
+
+ rest("/api/v3")
.get("/user/{username}")
.id("getUserByName")
.produces("application/xml,application/json")
@@ -281,5 +308,6 @@ public final class OpenApiPetstore extends RouteBuilder {
.description("The name that needs to be deleted")
.endParam()
.to("direct:deleteUser");
+
}
}
diff --git
a/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiV3PetstoreWithRestComponent.txt
b/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiV3PetstoreWithRestComponent.txt
index 614fd01..18fa1e7 100644
---
a/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiV3PetstoreWithRestComponent.txt
+++
b/tooling/openapi-rest-dsl-generator/src/test/resources/OpenApiV3PetstoreWithRestComponent.txt
@@ -45,7 +45,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Pet object that needs to be added to the
store")
.endParam()
- .to("direct:addPet")
+ .to("direct:addPet");
+
+ rest("/api/v3")
.get("/pet/findByStatus")
.id("findPetsByStatus")
.description("Multiple status values can be provided with
comma separated strings")
@@ -59,7 +61,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Status values that need to be considered for
filter")
.endParam()
- .to("direct:findPetsByStatus")
+ .to("direct:findPetsByStatus");
+
+ rest("/api/v3")
.get("/pet/findByTags")
.id("findPetsByTags")
.description("Muliple tags can be provided with comma
separated strings. Use tag1, tag2, tag3 for testing.")
@@ -73,7 +77,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Tags to filter by")
.endParam()
- .to("direct:findPetsByTags")
+ .to("direct:findPetsByTags");
+
+ rest("/api/v3")
.get("/pet/{petId}")
.id("getPetById")
.description("Returns a single pet")
@@ -126,7 +132,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Pet id to delete")
.endParam()
- .to("direct:deletePet")
+ .to("direct:deletePet");
+
+ rest("/api/v3")
.post("/pet/{petId}/uploadImage")
.id("uploadFile")
.consumes("multipart/form-data")
@@ -152,12 +160,16 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("file to upload")
.endParam()
- .to("direct:uploadFile")
+ .to("direct:uploadFile");
+
+ rest("/api/v3")
.get("/store/inventory")
.id("getInventory")
.description("Returns a map of status codes to quantities")
.produces("application/json")
- .to("direct:getInventory")
+ .to("direct:getInventory");
+
+ rest("/api/v3")
.post("/store/order")
.id("placeOrder")
.consumes("*/*")
@@ -168,7 +180,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("order placed for purchasing the pet")
.endParam()
- .to("direct:placeOrder")
+ .to("direct:placeOrder");
+
+ rest("/api/v3")
.get("/store/order/{orderId}")
.id("getOrderById")
.description("For valid response try integer IDs with value >=
1 and <= 10. Other values will generated exceptions")
@@ -191,7 +205,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("ID of the order that needs to be deleted")
.endParam()
- .to("direct:deleteOrder")
+ .to("direct:deleteOrder");
+
+ rest("/api/v3")
.post("/user")
.id("createUser")
.description("This can only be done by the logged in user.")
@@ -202,7 +218,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("Created user object")
.endParam()
- .to("direct:createUser")
+ .to("direct:createUser");
+
+ rest("/api/v3")
.post("/user/createWithArray")
.id("createUsersWithArrayInput")
.consumes("*/*")
@@ -212,7 +230,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:createUsersWithArrayInput")
+ .to("direct:createUsersWithArrayInput");
+
+ rest("/api/v3")
.post("/user/createWithList")
.id("createUsersWithListInput")
.consumes("*/*")
@@ -222,7 +242,9 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("List of user object")
.endParam()
- .to("direct:createUsersWithListInput")
+ .to("direct:createUsersWithListInput");
+
+ rest("/api/v3")
.get("/user/login")
.id("loginUser")
.produces("application/xml,application/json")
@@ -240,10 +262,14 @@ public final class OpenApiPetstore extends RouteBuilder {
.required(true)
.description("The password for login in clear text")
.endParam()
- .to("direct:loginUser")
+ .to("direct:loginUser");
+
+ rest("/api/v3")
.get("/user/logout")
.id("logoutUser")
- .to("direct:logoutUser")
+ .to("direct:logoutUser");
+
+ rest("/api/v3")
.get("/user/{username}")
.id("getUserByName")
.produces("application/xml,application/json")
@@ -284,5 +310,6 @@ public final class OpenApiPetstore extends RouteBuilder {
.description("The name that needs to be deleted")
.endParam()
.to("direct:deleteUser");
+
}
}