From ff1178ad7eff374ec644db5b07abbd1d3b0947d1 Mon Sep 17 00:00:00 2001 From: Adam Conway Date: Thu, 22 Feb 2018 18:02:38 +0200 Subject: [PATCH] [Java][Spring] fix optional query params missing in generated swagger (#7607) * Added genericModelSubstitutes if using Optional As per https://github.com/springfox/springfox/issues/1848 Doesn't seem to fix the problem, but is what springfox recommends so might be aprt of it. * Added config package to scans If you have defined apiPackage and basepackage (e.g. as com.example.api) but not defined configPackage then config is still in io.swagger.config and is not included in the component scan. This means the config is not used when generating the swagger definition from the code. Fixed by including configPackage also in the scan. * Ran spring-all-pestore.sh update script * Converted tabs to spaces * Ran spring-all-pestore.sh update script --- .../libraries/spring-boot/swagger2SpringBoot.mustache | 2 +- .../JavaSpring/swaggerDocumentationConfig.mustache | 6 ++++++ .../src/main/java/io/swagger/Swagger2SpringBoot.java | 2 +- .../src/main/java/io/swagger/Swagger2SpringBoot.java | 2 +- .../src/main/java/io/swagger/Swagger2SpringBoot.java | 2 +- .../src/main/java/io/swagger/Swagger2SpringBoot.java | 2 +- .../src/main/java/io/swagger/Swagger2SpringBoot.java | 2 +- .../swagger/configuration/SwaggerDocumentationConfig.java | 2 ++ .../src/main/java/io/swagger/Swagger2SpringBoot.java | 2 +- 9 files changed, 15 insertions(+), 7 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/JavaSpring/libraries/spring-boot/swagger2SpringBoot.mustache b/modules/swagger-codegen/src/main/resources/JavaSpring/libraries/spring-boot/swagger2SpringBoot.mustache index 0045ba159bc..d329e337fb5 100644 --- a/modules/swagger-codegen/src/main/resources/JavaSpring/libraries/spring-boot/swagger2SpringBoot.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaSpring/libraries/spring-boot/swagger2SpringBoot.mustache @@ -10,7 +10,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @EnableSwagger2 -@ComponentScan(basePackages = { "{{basePackage}}", "{{apiPackage}}" }) +@ComponentScan(basePackages = { "{{basePackage}}", "{{apiPackage}}" , "{{configPackage}}"}) public class Swagger2SpringBoot implements CommandLineRunner { @Override diff --git a/modules/swagger-codegen/src/main/resources/JavaSpring/swaggerDocumentationConfig.mustache b/modules/swagger-codegen/src/main/resources/JavaSpring/swaggerDocumentationConfig.mustache index a0099256420..a0b2cded91a 100644 --- a/modules/swagger-codegen/src/main/resources/JavaSpring/swaggerDocumentationConfig.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaSpring/swaggerDocumentationConfig.mustache @@ -9,6 +9,9 @@ import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; +{{#useOptional}} +import java.util.Optional; +{{/useOptional}} {{>generatedAnnotation}} @Configuration @@ -44,6 +47,9 @@ public class SwaggerDocumentationConfig { .directModelSubstitute(org.threeten.bp.LocalDate.class, java.sql.Date.class) .directModelSubstitute(org.threeten.bp.OffsetDateTime.class, java.util.Date.class) {{/threetenbp}} + {{#useOptional}} + .genericModelSubstitutes(Optional.class) + {{/useOptional}} .apiInfo(apiInfo()); } diff --git a/samples/server/petstore/springboot-beanvalidation/src/main/java/io/swagger/Swagger2SpringBoot.java b/samples/server/petstore/springboot-beanvalidation/src/main/java/io/swagger/Swagger2SpringBoot.java index b7b7bb3370c..b6aaf2b800a 100644 --- a/samples/server/petstore/springboot-beanvalidation/src/main/java/io/swagger/Swagger2SpringBoot.java +++ b/samples/server/petstore/springboot-beanvalidation/src/main/java/io/swagger/Swagger2SpringBoot.java @@ -10,7 +10,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @EnableSwagger2 -@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" }) +@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" , "io.swagger.configuration"}) public class Swagger2SpringBoot implements CommandLineRunner { @Override diff --git a/samples/server/petstore/springboot-delegate-j8/src/main/java/io/swagger/Swagger2SpringBoot.java b/samples/server/petstore/springboot-delegate-j8/src/main/java/io/swagger/Swagger2SpringBoot.java index b7b7bb3370c..b6aaf2b800a 100644 --- a/samples/server/petstore/springboot-delegate-j8/src/main/java/io/swagger/Swagger2SpringBoot.java +++ b/samples/server/petstore/springboot-delegate-j8/src/main/java/io/swagger/Swagger2SpringBoot.java @@ -10,7 +10,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @EnableSwagger2 -@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" }) +@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" , "io.swagger.configuration"}) public class Swagger2SpringBoot implements CommandLineRunner { @Override diff --git a/samples/server/petstore/springboot-delegate/src/main/java/io/swagger/Swagger2SpringBoot.java b/samples/server/petstore/springboot-delegate/src/main/java/io/swagger/Swagger2SpringBoot.java index b7b7bb3370c..b6aaf2b800a 100644 --- a/samples/server/petstore/springboot-delegate/src/main/java/io/swagger/Swagger2SpringBoot.java +++ b/samples/server/petstore/springboot-delegate/src/main/java/io/swagger/Swagger2SpringBoot.java @@ -10,7 +10,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @EnableSwagger2 -@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" }) +@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" , "io.swagger.configuration"}) public class Swagger2SpringBoot implements CommandLineRunner { @Override diff --git a/samples/server/petstore/springboot-implicitHeaders/src/main/java/io/swagger/Swagger2SpringBoot.java b/samples/server/petstore/springboot-implicitHeaders/src/main/java/io/swagger/Swagger2SpringBoot.java index b7b7bb3370c..b6aaf2b800a 100644 --- a/samples/server/petstore/springboot-implicitHeaders/src/main/java/io/swagger/Swagger2SpringBoot.java +++ b/samples/server/petstore/springboot-implicitHeaders/src/main/java/io/swagger/Swagger2SpringBoot.java @@ -10,7 +10,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @EnableSwagger2 -@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" }) +@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" , "io.swagger.configuration"}) public class Swagger2SpringBoot implements CommandLineRunner { @Override diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/io/swagger/Swagger2SpringBoot.java b/samples/server/petstore/springboot-useoptional/src/main/java/io/swagger/Swagger2SpringBoot.java index b7b7bb3370c..b6aaf2b800a 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/io/swagger/Swagger2SpringBoot.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/io/swagger/Swagger2SpringBoot.java @@ -10,7 +10,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @EnableSwagger2 -@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" }) +@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" , "io.swagger.configuration"}) public class Swagger2SpringBoot implements CommandLineRunner { @Override diff --git a/samples/server/petstore/springboot-useoptional/src/main/java/io/swagger/configuration/SwaggerDocumentationConfig.java b/samples/server/petstore/springboot-useoptional/src/main/java/io/swagger/configuration/SwaggerDocumentationConfig.java index 01bdae11a8e..2e6aee8ed8e 100644 --- a/samples/server/petstore/springboot-useoptional/src/main/java/io/swagger/configuration/SwaggerDocumentationConfig.java +++ b/samples/server/petstore/springboot-useoptional/src/main/java/io/swagger/configuration/SwaggerDocumentationConfig.java @@ -9,6 +9,7 @@ import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; +import java.util.Optional; @Configuration @@ -34,6 +35,7 @@ public class SwaggerDocumentationConfig { .build() .directModelSubstitute(org.threeten.bp.LocalDate.class, java.sql.Date.class) .directModelSubstitute(org.threeten.bp.OffsetDateTime.class, java.util.Date.class) + .genericModelSubstitutes(Optional.class) .apiInfo(apiInfo()); } diff --git a/samples/server/petstore/springboot/src/main/java/io/swagger/Swagger2SpringBoot.java b/samples/server/petstore/springboot/src/main/java/io/swagger/Swagger2SpringBoot.java index b7b7bb3370c..b6aaf2b800a 100644 --- a/samples/server/petstore/springboot/src/main/java/io/swagger/Swagger2SpringBoot.java +++ b/samples/server/petstore/springboot/src/main/java/io/swagger/Swagger2SpringBoot.java @@ -10,7 +10,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @EnableSwagger2 -@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" }) +@ComponentScan(basePackages = { "io.swagger", "io.swagger.api" , "io.swagger.configuration"}) public class Swagger2SpringBoot implements CommandLineRunner { @Override