diff --git a/docs/docs/tasks/5-generate-entry-point.md b/docs/docs/tasks/5-generate-entry-point.md index 3faa51aa..973a3d5c 100644 --- a/docs/docs/tasks/5-generate-entry-point.md +++ b/docs/docs/tasks/5-generate-entry-point.md @@ -13,18 +13,18 @@ Whether you'll use generic one also parameter `name` is required. gradle gep --type [entryPointType] ``` -| Reference for **entryPointType** | Name | Additional Options | -|----------------------------------|----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------| -| generic | Empty Entry Point | --name [name] | -| asynceventhandler | Async Event Handler | --eda [true-false] --tech [rabbitmq-kafka-rabbitmq,kafka] Default: rabbitmq | -| graphql | API GraphQL | --pathgql [name path] default /graphql | -| kafka | Kafka Consumer | | -| mq | JMS MQ Client to listen messages | | -| restmvc | API REST (Spring Boot Starter Web) | --server [serverOption] default undertow --authorization [true,false] --from-swagger swagger.yaml | -| rsocket | Rsocket Controller Entry Point | | -| sqs | SQS Listener | | -| webflux | API REST (Spring Boot Starter WebFlux) | --router [true, false] default true --authorization [true,false] --from-swagger swagger.yaml --versioning [HEADER, PATH,NONE] default NONE | -| kafkastrimzi | Kafka Strimzi Consumer Entry Point | --name [name] --topicConsumer [topicName] (optional, for default 'test-with-registries') | +| Reference for **entryPointType** | Name | Additional Options | +|----------------------------------|----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| generic | Empty Entry Point | --name [name] | +| asynceventhandler | Async Event Handler | --eda [true-false] --tech [rabbitmq-kafka-rabbitmq,kafka] Default: rabbitmq | +| graphql | API GraphQL | --pathgql [name path] default /graphql | +| kafka | Kafka Consumer | | +| mq | JMS MQ Client to listen messages | | +| restmvc | API REST (Spring Boot Starter Web) | --server [serverOption] default undertow --authorization [true,false] --from-swagger swagger.yaml --swagger [true,false] | +| rsocket | Rsocket Controller Entry Point | | +| sqs | SQS Listener | | +| webflux | API REST (Spring Boot Starter WebFlux) | --router [true, false] default true --authorization [true,false] --from-swagger swagger.yaml --versioning [HEADER, PATH,NONE] default NONE --swagger [true,false] | +| kafkastrimzi | Kafka Strimzi Consumer Entry Point | --name [name] --topicConsumer [topicName] (optional, for default 'test-with-registries') | Additionally, if you'll use a restmvc, you can specify the web server on which the application will run. By default, undertow. diff --git a/src/main/java/co/com/bancolombia/Constants.java b/src/main/java/co/com/bancolombia/Constants.java index 989f9e5a..835119d4 100644 --- a/src/main/java/co/com/bancolombia/Constants.java +++ b/src/main/java/co/com/bancolombia/Constants.java @@ -24,7 +24,7 @@ public final class Constants { public static final String OKHTTP_VERSION = "5.1.0"; public static final String RESILIENCE_4J_VERSION = "2.3.0"; public static final String BIN_STASH_VERSION = "1.3.2"; - public static final String SPRING_DOC_OPENAPI_VERSION = "2.8.13"; + public static final String SPRING_DOC_OPENAPI_VERSION = "2.8.14"; public static final String CLOUD_EVENTS_VERSION = "4.0.1"; // gradle plugins public static final String JACOCO_VERSION = "0.8.13"; diff --git a/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointRestMvc.java b/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointRestMvc.java index d8ca378b..1f654f6d 100644 --- a/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointRestMvc.java +++ b/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointRestMvc.java @@ -23,7 +23,11 @@ public void buildModule(ModuleBuilder builder) throws IOException, CleanExceptio if (Boolean.TRUE.equals(builder.getBooleanParam("include-swagger"))) { builder.addParam("module", "api-rest"); - builder.setupFromTemplate("entry-point/swagger"); + builder + .appendToProperties("springdoc") + .put("swagger-ui.path", "/v3/swagger-ui.html") + .put("api-docs.path", "/v3/api-docs") + .put("show-actuator", true); } if (builder.withMetrics()) { builder diff --git a/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointWebflux.java b/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointWebflux.java index b2839d86..b4b86d81 100644 --- a/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointWebflux.java +++ b/src/main/java/co/com/bancolombia/factory/entrypoints/EntryPointWebflux.java @@ -20,16 +20,19 @@ public void buildModule(ModuleBuilder builder) throws IOException, CleanExceptio builder.runValidations(ReactiveTypeValidation.class); if (Boolean.TRUE.equals(builder.getBooleanParam("task-param-router"))) { setupTemplate(builder, versioningStrategy); - } else { builder.setupFromTemplate("entry-point/rest-webflux"); // to run archunit validations builder.appendDependencyToModule( APP_SERVICE, buildTestImplementation("org.springframework:spring-web")); - if (Boolean.TRUE.equals(builder.getBooleanParam("include-swagger"))) { - builder.addParam("module", "reactive-web"); - builder.setupFromTemplate("entry-point/swagger"); - } + } + if (Boolean.TRUE.equals(builder.getBooleanParam("include-swagger"))) { + builder.addParam("module", "reactive-web"); + builder + .appendToProperties("springdoc") + .put("swagger-ui.path", "/v3/swagger-ui.html") + .put("api-docs.path", "/v3/api-docs") + .put("show-actuator", true); } if (Boolean.TRUE.equals(builder.getBooleanParam("task-param-authorize"))) { diff --git a/src/main/resources/entry-point/rest-webflux/router-functions/router.java.mustache b/src/main/resources/entry-point/rest-webflux/router-functions/router.java.mustache index 59c817cb..62bc7d87 100644 --- a/src/main/resources/entry-point/rest-webflux/router-functions/router.java.mustache +++ b/src/main/resources/entry-point/rest-webflux/router-functions/router.java.mustache @@ -1,5 +1,9 @@ package {{package}}.api; +{{#include-swagger}} +import org.springdoc.core.annotations.RouterOperation; +import org.springdoc.core.annotations.RouterOperations; +{{/include-swagger}} import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.reactive.function.server.RouterFunction; @@ -11,6 +15,11 @@ import static org.springframework.web.reactive.function.server.RouterFunctions.r @Configuration public class RouterRest { +{{#include-swagger}} + @RouterOperations({ @RouterOperation(path = "/api/usecase/path", beanClass = Handler.class, beanMethod = "listenGETUseCase"), + @RouterOperation(path = "/api/usecase/otherpath", beanClass = Handler.class, beanMethod = "listenPOSTUseCase"), + @RouterOperation(path = "/api/otherusercase/path", beanClass = Handler.class, beanMethod = "listenGETOtherUseCase") }) +{{/include-swagger}} @Bean public RouterFunction routerFunction(Handler handler) { return route(GET("/api/usecase/path"), handler::listenGETUseCase) diff --git a/src/main/resources/entry-point/swagger/definition.json b/src/main/resources/entry-point/swagger/definition.json deleted file mode 100644 index 1fdfc088..00000000 --- a/src/main/resources/entry-point/swagger/definition.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "folders": [ - ], - "files": { - "entry-point/swagger/spring-fox-config.java.mustache": "infrastructure/entry-points/{{module}}/src/main/java/{{packagePath}}/config/SpringFoxConfig.java" - } -} diff --git a/src/main/resources/entry-point/swagger/spring-fox-config.java.mustache b/src/main/resources/entry-point/swagger/spring-fox-config.java.mustache deleted file mode 100644 index 633a79d3..00000000 --- a/src/main/resources/entry-point/swagger/spring-fox-config.java.mustache +++ /dev/null @@ -1,21 +0,0 @@ -package {{package}}.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; - -@Configuration -public class SpringFoxConfig { - - @Bean - public Docket api() { - return new Docket(DocumentationType.SWAGGER_2) - .select() - .apis(RequestHandlerSelectors.any()) - .paths(PathSelectors.any()) - .build(); - } -} \ No newline at end of file diff --git a/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskImperativeTest.java b/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskImperativeTest.java index 1eacbe84..91f970aa 100644 --- a/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskImperativeTest.java +++ b/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskImperativeTest.java @@ -141,8 +141,7 @@ void generateEntryPointApiRestWithDefaultServerAndSwagger() throws IOException, TEST_DIR + "/infrastructure/entry-points/api-rest/", "build.gradle", "src/main/java/co/com/bancolombia/api/ApiRest.java", - "src/test/java/co/com/bancolombia/api", - "src/main/java/co/com/bancolombia/config/SpringFoxConfig.java"); + "src/test/java/co/com/bancolombia/api"); } @Test diff --git a/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskReactiveTest.java b/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskReactiveTest.java index ee9e4cf0..b3a2dcb6 100644 --- a/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskReactiveTest.java +++ b/src/test/java/co/com/bancolombia/task/GenerateEntryPointTaskReactiveTest.java @@ -123,8 +123,7 @@ void generateEntryPointReactiveWebWithoutRouterFunctionsAndSwagger() TEST_DIR + "/infrastructure/entry-points/reactive-web", "build.gradle", "src/main/java/co/com/bancolombia/api/ApiRest.java", - "src/test/java/co/com/bancolombia/api/ApiRestTest.java", - "src/main/java/co/com/bancolombia/config/SpringFoxConfig.java"); + "src/test/java/co/com/bancolombia/api/ApiRestTest.java"); } @Test