diff --git a/.gitignore b/.gitignore index 1644461681c..e71c4e4eaa9 100644 --- a/.gitignore +++ b/.gitignore @@ -5,7 +5,7 @@ out/ *.iws classpath.txt version.properties -!modules/swagger-codegen-cli/src/main/resources/version.properties +!modules/swagger-codegen/src/main/resources/version.properties .project .classpath lib/* diff --git a/modules/swagger-codegen-cli/pom.xml b/modules/swagger-codegen-cli/pom.xml index 87780115964..15252492dfe 100644 --- a/modules/swagger-codegen-cli/pom.xml +++ b/modules/swagger-codegen-cli/pom.xml @@ -18,7 +18,6 @@ src/main/resources - true logback.xml @@ -79,17 +78,6 @@ swagger-codegen ${project.version} - - - io.airlift - airline - 0.7 - - - com.googlecode.lambdaj - lambdaj - 2.3.3 - org.slf4j slf4j-simple diff --git a/modules/swagger-codegen-cli/src/main/resources/version.properties b/modules/swagger-codegen-cli/src/main/resources/version.properties deleted file mode 100644 index 410af8cc687..00000000000 --- a/modules/swagger-codegen-cli/src/main/resources/version.properties +++ /dev/null @@ -1 +0,0 @@ -version = ${project.version} diff --git a/modules/swagger-codegen/pom.xml b/modules/swagger-codegen/pom.xml index 658e8524fa4..58e49257f6e 100644 --- a/modules/swagger-codegen/pom.xml +++ b/modules/swagger-codegen/pom.xml @@ -16,6 +16,7 @@ src/main/resources + true logback.xml @@ -249,6 +250,16 @@ commons-cli ${commons-cli-version} + + io.airlift + airline + 0.7 + + + com.googlecode.lambdaj + lambdaj + 2.3.3 + org.testng testng diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java index 728b9578897..158a27aadd9 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java @@ -2,6 +2,7 @@ package io.swagger.codegen; import com.samskivert.mustache.Mustache; import com.samskivert.mustache.Template; +import io.swagger.codegen.cmd.Version; import io.swagger.codegen.ignore.CodegenIgnoreProcessor; import io.swagger.models.*; import io.swagger.models.auth.OAuth2Definition; @@ -10,6 +11,7 @@ import io.swagger.models.parameters.Parameter; import io.swagger.util.Json; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,8 +19,6 @@ import org.slf4j.LoggerFactory; import java.io.*; import java.util.*; -import org.apache.commons.lang3.StringUtils; - public class DefaultGenerator extends AbstractGenerator implements Generator { protected final Logger LOGGER = LoggerFactory.getLogger(DefaultGenerator.class); protected CodegenConfig config; @@ -127,8 +127,8 @@ public class DefaultGenerator extends AbstractGenerator implements Generator { config.processOpts(); config.preprocessSwagger(swagger); // TODO need to obtain version from a file instead of hardcoding it - config.additionalProperties().put("generatorVersion", "2.2.3-SNAPSHOT"); config.additionalProperties().put("generatedDate", DateTime.now().toString()); + config.additionalProperties().put("generatorVersion", Version.readVersionFromResources()); config.additionalProperties().put("generatorClass", config.getClass().getName()); config.additionalProperties().put("inputSpec", config.getInputSpec()); if (swagger.getVendorExtensions() != null) { diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/ConfigHelp.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/cmd/ConfigHelp.java similarity index 100% rename from modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/ConfigHelp.java rename to modules/swagger-codegen/src/main/java/io/swagger/codegen/cmd/ConfigHelp.java diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/cmd/Generate.java similarity index 100% rename from modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java rename to modules/swagger-codegen/src/main/java/io/swagger/codegen/cmd/Generate.java diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Langs.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/cmd/Langs.java similarity index 100% rename from modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Langs.java rename to modules/swagger-codegen/src/main/java/io/swagger/codegen/cmd/Langs.java diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/cmd/Meta.java similarity index 100% rename from modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Meta.java rename to modules/swagger-codegen/src/main/java/io/swagger/codegen/cmd/Meta.java diff --git a/modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Version.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/cmd/Version.java similarity index 100% rename from modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Version.java rename to modules/swagger-codegen/src/main/java/io/swagger/codegen/cmd/Version.java diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringCodegen.java index 28f16a0b1c6..5c0c8c0834c 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/SpringCodegen.java @@ -13,7 +13,6 @@ import java.io.IOException; import java.io.Writer; import java.util.*; import java.util.regex.Matcher; -import java.util.regex.Pattern; public class SpringCodegen extends AbstractJavaCodegen implements BeanValidationFeatures { diff --git a/modules/swagger-codegen/src/main/resources/JavaSpring/api.mustache b/modules/swagger-codegen/src/main/resources/JavaSpring/api.mustache index 0e23cd4f59b..961ccbb5806 100644 --- a/modules/swagger-codegen/src/main/resources/JavaSpring/api.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaSpring/api.mustache @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program ({{{generatorVersion}}}). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package {{package}}; {{#imports}}import {{import}}; diff --git a/modules/swagger-codegen/src/main/resources/JavaSpring/apiController.mustache b/modules/swagger-codegen/src/main/resources/JavaSpring/apiController.mustache index 83d5957d301..76c283a7678 100644 --- a/modules/swagger-codegen/src/main/resources/JavaSpring/apiController.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaSpring/apiController.mustache @@ -32,6 +32,12 @@ import javax.validation.Valid; @Controller {{#operations}} public class {{classname}}Controller implements {{classname}} { + private final ObjectMapper objectMapper; + + public {{classname}}Controller(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + {{#isDelegate}} private final {{classname}}Delegate delegate; @@ -49,11 +55,7 @@ public class {{classname}}Controller implements {{classname}} { {{^isDelegate}} {{^async}} {{#examples}} - {{#-first}} - - ObjectMapper objectMapper = new ObjectMapper(); - {{/-first}} if (accept != null && accept.contains("{{{contentType}}}")) { return new ResponseEntity<{{>returnTypes}}>(objectMapper.readValue("{{#lambdaRemoveLineBreak}}{{#lambdaEscapeDoubleQuote}}{{{example}}}{{/lambdaEscapeDoubleQuote}}{{/lambdaRemoveLineBreak}}", {{>exampleReturnTypes}}.class), HttpStatus.OK); } diff --git a/modules/swagger-codegen/src/main/resources/JavaSpring/libraries/spring-mvc/swaggerUiConfiguration.mustache b/modules/swagger-codegen/src/main/resources/JavaSpring/libraries/spring-mvc/swaggerUiConfiguration.mustache index 0f9c1183c55..563a76915f8 100644 --- a/modules/swagger-codegen/src/main/resources/JavaSpring/libraries/spring-mvc/swaggerUiConfiguration.mustache +++ b/modules/swagger-codegen/src/main/resources/JavaSpring/libraries/spring-mvc/swaggerUiConfiguration.mustache @@ -9,6 +9,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Bean; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; @@ -66,21 +67,23 @@ public class SwaggerUiConfiguration extends WebMvcConfigurerAdapter { } } + @Bean + public Jackson2ObjectMapperBuilder builder() { + Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder() + .indentOutput(true) + .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + .dateFormat(new RFC3339DateFormat()); + return builder; + } + @Override public void configureMessageConverters(List> converters) { - ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json() - .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) - .dateFormat(new RFC3339DateFormat()) - .build(); - {{#threetenbp}} - ThreeTenModule module = new ThreeTenModule(); - module.addDeserializer(Instant.class, CustomInstantDeserializer.INSTANT); - module.addDeserializer(OffsetDateTime.class, CustomInstantDeserializer.OFFSET_DATE_TIME); - module.addDeserializer(ZonedDateTime.class, CustomInstantDeserializer.ZONED_DATE_TIME); - objectMapper.registerModule(module); - {{/threetenbp}} - converters.add(new MappingJackson2HttpMessageConverter(objectMapper)); + converters.add(new MappingJackson2HttpMessageConverter(objectMapper())); super.configureMessageConverters(converters); } + @Bean + public ObjectMapper objectMapper(){ + return builder().build(); + } } diff --git a/modules/swagger-codegen/src/main/resources/version.properties b/modules/swagger-codegen/src/main/resources/version.properties new file mode 100644 index 00000000000..713c915800a --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/version.properties @@ -0,0 +1 @@ +version = ${project.version} \ No newline at end of file diff --git a/samples/client/petstore-security-test/java/okhttp-gson/build.gradle b/samples/client/petstore-security-test/java/okhttp-gson/build.gradle index d7c6b63ea75..0f403ed63f3 100644 --- a/samples/client/petstore-security-test/java/okhttp-gson/build.gradle +++ b/samples/client/petstore-security-test/java/okhttp-gson/build.gradle @@ -9,8 +9,8 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.5.+' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3' + classpath 'com.android.tools.build:gradle:2.3.+' + classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' } } @@ -25,11 +25,11 @@ if(hasProperty('target') && target == 'android') { apply plugin: 'com.github.dcendents.android-maven' android { - compileSdkVersion 23 - buildToolsVersion '23.0.2' + compileSdkVersion 25 + buildToolsVersion '25.0.2' defaultConfig { minSdkVersion 14 - targetSdkVersion 23 + targetSdkVersion 25 } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeApi.java index 5dc9bce00ef..648845432ac 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeApi.java @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program (2.3.0-SNAPSHOT). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package io.swagger.api; import java.math.BigDecimal; diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeApiController.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeApiController.java index be29b9131ef..a104b82369c 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeApiController.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeApiController.java @@ -7,4 +7,10 @@ import javax.validation.Valid; @Controller public class FakeApiController implements FakeApi { + private final ObjectMapper objectMapper; + + public FakeApiController(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeClassnameTestApi.java index 83d788c8d8f..d8a55daf8d8 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeClassnameTestApi.java @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program (2.3.0-SNAPSHOT). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package io.swagger.api; import io.swagger.model.Client; diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeClassnameTestApiController.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeClassnameTestApiController.java index 1c08c783680..1c310fd7eaa 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeClassnameTestApiController.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/FakeClassnameTestApiController.java @@ -7,4 +7,10 @@ import javax.validation.Valid; @Controller public class FakeClassnameTestApiController implements FakeClassnameTestApi { + private final ObjectMapper objectMapper; + + public FakeClassnameTestApiController(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/PetApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/PetApi.java index 1c4d6eade78..07d6ae7c466 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/PetApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/PetApi.java @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program (2.3.0-SNAPSHOT). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package io.swagger.api; import io.swagger.model.ModelApiResponse; diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/PetApiController.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/PetApiController.java index b2774ec8115..80d34c1330b 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/PetApiController.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/PetApiController.java @@ -7,4 +7,10 @@ import javax.validation.Valid; @Controller public class PetApiController implements PetApi { + private final ObjectMapper objectMapper; + + public PetApiController(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/StoreApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/StoreApi.java index 3039796d0c5..fde44e19a0c 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/StoreApi.java @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program (2.3.0-SNAPSHOT). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package io.swagger.api; import java.util.Map; diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/StoreApiController.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/StoreApiController.java index b0bc99276d7..6df7665845d 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/StoreApiController.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/StoreApiController.java @@ -7,4 +7,10 @@ import javax.validation.Valid; @Controller public class StoreApiController implements StoreApi { + private final ObjectMapper objectMapper; + + public StoreApiController(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/UserApi.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/UserApi.java index 21aee4b1686..b7ec67d84b9 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/UserApi.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/UserApi.java @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program (2.3.0-SNAPSHOT). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package io.swagger.api; import java.util.List; diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/UserApiController.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/UserApiController.java index f266cc48616..b6cc5715e70 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/UserApiController.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/api/UserApiController.java @@ -7,4 +7,10 @@ import javax.validation.Valid; @Controller public class UserApiController implements UserApi { + private final ObjectMapper objectMapper; + + public UserApiController(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + } diff --git a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/configuration/SwaggerUiConfiguration.java b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/configuration/SwaggerUiConfiguration.java index bf86977cfda..af1f1da2b60 100644 --- a/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/configuration/SwaggerUiConfiguration.java +++ b/samples/server/petstore/spring-mvc-j8-async/src/main/java/io/swagger/configuration/SwaggerUiConfiguration.java @@ -6,6 +6,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Bean; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; @@ -58,14 +59,23 @@ public class SwaggerUiConfiguration extends WebMvcConfigurerAdapter { } } + @Bean + public Jackson2ObjectMapperBuilder builder() { + Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder() + .indentOutput(true) + .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + .dateFormat(new RFC3339DateFormat()); + return builder; + } + @Override public void configureMessageConverters(List> converters) { - ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json() - .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) - .dateFormat(new RFC3339DateFormat()) - .build(); - converters.add(new MappingJackson2HttpMessageConverter(objectMapper)); + converters.add(new MappingJackson2HttpMessageConverter(objectMapper())); super.configureMessageConverters(converters); } + @Bean + public ObjectMapper objectMapper(){ + return builder().build(); + } } diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeApi.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeApi.java index f6093ba101c..54071980c1a 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeApi.java @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program (2.3.0-SNAPSHOT). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package io.swagger.api; import java.math.BigDecimal; diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeApiController.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeApiController.java index dc01cc55727..5e7502a8e28 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeApiController.java @@ -26,11 +26,15 @@ import javax.validation.Valid; @Controller public class FakeApiController implements FakeApi { + private final ObjectMapper objectMapper; + + public FakeApiController(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + public ResponseEntity testClientModel(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body, @RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/json")) { return new ResponseEntity(objectMapper.readValue("{ \"client\" : \"aeiou\"}", Client.class), HttpStatus.OK); diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeClassnameTestApi.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeClassnameTestApi.java index bd3568f20e1..2a0c521a6a0 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeClassnameTestApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeClassnameTestApi.java @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program (2.3.0-SNAPSHOT). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package io.swagger.api; import io.swagger.model.Client; diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeClassnameTestApiController.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeClassnameTestApiController.java index 4c37c7a71de..6826ed0998a 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeClassnameTestApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/FakeClassnameTestApiController.java @@ -23,11 +23,15 @@ import javax.validation.Valid; @Controller public class FakeClassnameTestApiController implements FakeClassnameTestApi { + private final ObjectMapper objectMapper; + + public FakeClassnameTestApiController(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + public ResponseEntity testClassname(@ApiParam(value = "client model" ,required=true ) @Valid @RequestBody Client body, @RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/json")) { return new ResponseEntity(objectMapper.readValue("{ \"client\" : \"aeiou\"}", Client.class), HttpStatus.OK); diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/PetApi.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/PetApi.java index 1227aedbbd7..a5603c245f0 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/PetApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/PetApi.java @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program (2.3.0-SNAPSHOT). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package io.swagger.api; import io.swagger.model.ModelApiResponse; diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/PetApiController.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/PetApiController.java index 7fc193be9c5..7bf9498f0ef 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/PetApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/PetApiController.java @@ -25,6 +25,12 @@ import javax.validation.Valid; @Controller public class PetApiController implements PetApi { + private final ObjectMapper objectMapper; + + public PetApiController(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + public ResponseEntity addPet(@ApiParam(value = "Pet object that needs to be added to the store" ,required=true ) @Valid @RequestBody Pet body, @RequestHeader("Accept") String accept) { // do some magic! @@ -41,13 +47,12 @@ public class PetApiController implements PetApi { public ResponseEntity> findPetsByStatus( @NotNull@ApiParam(value = "Status values that need to be considered for filter", required = true, allowableValues = "available, pending, sold") @RequestParam(value = "status", required = true) List status, @RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/xml")) { return new ResponseEntity>(objectMapper.readValue(" 123456789 doggie aeiou aeiou", List.class), HttpStatus.OK); } + if (accept != null && accept.contains("application/json")) { return new ResponseEntity>(objectMapper.readValue("[ { \"photoUrls\" : [ \"aeiou\" ], \"name\" : \"doggie\", \"id\" : 0, \"category\" : { \"name\" : \"aeiou\", \"id\" : 6 }, \"tags\" : [ { \"name\" : \"aeiou\", \"id\" : 1 } ], \"status\" : \"available\"} ]", List.class), HttpStatus.OK); } @@ -58,13 +63,12 @@ public class PetApiController implements PetApi { public ResponseEntity> findPetsByTags( @NotNull@ApiParam(value = "Tags to filter by", required = true) @RequestParam(value = "tags", required = true) List tags, @RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/xml")) { return new ResponseEntity>(objectMapper.readValue(" 123456789 doggie aeiou aeiou", List.class), HttpStatus.OK); } + if (accept != null && accept.contains("application/json")) { return new ResponseEntity>(objectMapper.readValue("[ { \"photoUrls\" : [ \"aeiou\" ], \"name\" : \"doggie\", \"id\" : 0, \"category\" : { \"name\" : \"aeiou\", \"id\" : 6 }, \"tags\" : [ { \"name\" : \"aeiou\", \"id\" : 1 } ], \"status\" : \"available\"} ]", List.class), HttpStatus.OK); } @@ -75,13 +79,12 @@ public class PetApiController implements PetApi { public ResponseEntity getPetById(@ApiParam(value = "ID of pet to return",required=true ) @PathVariable("petId") Long petId, @RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/xml")) { return new ResponseEntity(objectMapper.readValue(" 123456789 doggie aeiou aeiou", Pet.class), HttpStatus.OK); } + if (accept != null && accept.contains("application/json")) { return new ResponseEntity(objectMapper.readValue("{ \"photoUrls\" : [ \"aeiou\" ], \"name\" : \"doggie\", \"id\" : 0, \"category\" : { \"name\" : \"aeiou\", \"id\" : 6 }, \"tags\" : [ { \"name\" : \"aeiou\", \"id\" : 1 } ], \"status\" : \"available\"}", Pet.class), HttpStatus.OK); } @@ -108,8 +111,6 @@ public class PetApiController implements PetApi { @ApiParam(value = "file detail") @RequestPart("file") MultipartFile file, @RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/json")) { return new ResponseEntity(objectMapper.readValue("{ \"code\" : 0, \"type\" : \"aeiou\", \"message\" : \"aeiou\"}", ModelApiResponse.class), HttpStatus.OK); diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/StoreApi.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/StoreApi.java index fb8f3d706f5..0ae995657ab 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/StoreApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/StoreApi.java @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program (2.3.0-SNAPSHOT). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package io.swagger.api; import java.util.Map; diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/StoreApiController.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/StoreApiController.java index 3eb23194cb1..b05a6c92bbf 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/StoreApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/StoreApiController.java @@ -24,6 +24,12 @@ import javax.validation.Valid; @Controller public class StoreApiController implements StoreApi { + private final ObjectMapper objectMapper; + + public StoreApiController(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + public ResponseEntity deleteOrder(@ApiParam(value = "ID of the order that needs to be deleted",required=true ) @PathVariable("order_id") String orderId, @RequestHeader("Accept") String accept) { // do some magic! @@ -32,8 +38,6 @@ public class StoreApiController implements StoreApi { public ResponseEntity> getInventory(@RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/json")) { return new ResponseEntity>(objectMapper.readValue("{ \"key\" : 0}", Map.class), HttpStatus.OK); @@ -45,13 +49,12 @@ public class StoreApiController implements StoreApi { public ResponseEntity getOrderById( @Min(1) @Max(5)@ApiParam(value = "ID of pet that needs to be fetched",required=true ) @PathVariable("order_id") Long orderId, @RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/xml")) { return new ResponseEntity(objectMapper.readValue(" 123456789 123456789 123 2000-01-23T04:56:07.000Z aeiou true", Order.class), HttpStatus.OK); } + if (accept != null && accept.contains("application/json")) { return new ResponseEntity(objectMapper.readValue("{ \"petId\" : 6, \"quantity\" : 1, \"id\" : 0, \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\", \"complete\" : false, \"status\" : \"placed\"}", Order.class), HttpStatus.OK); } @@ -62,13 +65,12 @@ public class StoreApiController implements StoreApi { public ResponseEntity placeOrder(@ApiParam(value = "order placed for purchasing the pet" ,required=true ) @Valid @RequestBody Order body, @RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/xml")) { return new ResponseEntity(objectMapper.readValue(" 123456789 123456789 123 2000-01-23T04:56:07.000Z aeiou true", Order.class), HttpStatus.OK); } + if (accept != null && accept.contains("application/json")) { return new ResponseEntity(objectMapper.readValue("{ \"petId\" : 6, \"quantity\" : 1, \"id\" : 0, \"shipDate\" : \"2000-01-23T04:56:07.000+00:00\", \"complete\" : false, \"status\" : \"placed\"}", Order.class), HttpStatus.OK); } diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/UserApi.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/UserApi.java index adc0d21d30b..58193093aa3 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/UserApi.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/UserApi.java @@ -1,3 +1,9 @@ +/** + * NOTE: This class is auto generated by the swagger code generator program (2.3.0-SNAPSHOT). + * https://github.com/swagger-api/swagger-codegen + * Do not edit the class manually. + */ + package io.swagger.api; import java.util.List; diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/UserApiController.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/UserApiController.java index 8188aeaeb8d..b9c71138aa9 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/UserApiController.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/api/UserApiController.java @@ -24,6 +24,12 @@ import javax.validation.Valid; @Controller public class UserApiController implements UserApi { + private final ObjectMapper objectMapper; + + public UserApiController(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + public ResponseEntity createUser(@ApiParam(value = "Created user object" ,required=true ) @Valid @RequestBody User body, @RequestHeader("Accept") String accept) { // do some magic! @@ -51,13 +57,12 @@ public class UserApiController implements UserApi { public ResponseEntity getUserByName(@ApiParam(value = "The name that needs to be fetched. Use user1 for testing. ",required=true ) @PathVariable("username") String username, @RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/xml")) { return new ResponseEntity(objectMapper.readValue(" 123456789 aeiou aeiou aeiou aeiou aeiou aeiou 123", User.class), HttpStatus.OK); } + if (accept != null && accept.contains("application/json")) { return new ResponseEntity(objectMapper.readValue("{ \"firstName\" : \"aeiou\", \"lastName\" : \"aeiou\", \"password\" : \"aeiou\", \"userStatus\" : 6, \"phone\" : \"aeiou\", \"id\" : 0, \"email\" : \"aeiou\", \"username\" : \"aeiou\"}", User.class), HttpStatus.OK); } @@ -69,13 +74,12 @@ public class UserApiController implements UserApi { @NotNull@ApiParam(value = "The password for login in clear text", required = true) @RequestParam(value = "password", required = true) String password, @RequestHeader("Accept") String accept) throws IOException { // do some magic! - - ObjectMapper objectMapper = new ObjectMapper(); if (accept != null && accept.contains("application/xml")) { return new ResponseEntity(objectMapper.readValue("aeiou", String.class), HttpStatus.OK); } + if (accept != null && accept.contains("application/json")) { return new ResponseEntity(objectMapper.readValue("\"aeiou\"", String.class), HttpStatus.OK); } diff --git a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/configuration/SwaggerUiConfiguration.java b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/configuration/SwaggerUiConfiguration.java index 2c9fc48a5a7..223bb2ab874 100644 --- a/samples/server/petstore/spring-mvc/src/main/java/io/swagger/configuration/SwaggerUiConfiguration.java +++ b/samples/server/petstore/spring-mvc/src/main/java/io/swagger/configuration/SwaggerUiConfiguration.java @@ -7,6 +7,7 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.Bean; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; @@ -62,19 +63,23 @@ public class SwaggerUiConfiguration extends WebMvcConfigurerAdapter { } } + @Bean + public Jackson2ObjectMapperBuilder builder() { + Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder() + .indentOutput(true) + .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + .dateFormat(new RFC3339DateFormat()); + return builder; + } + @Override public void configureMessageConverters(List> converters) { - ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json() - .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) - .dateFormat(new RFC3339DateFormat()) - .build(); - ThreeTenModule module = new ThreeTenModule(); - module.addDeserializer(Instant.class, CustomInstantDeserializer.INSTANT); - module.addDeserializer(OffsetDateTime.class, CustomInstantDeserializer.OFFSET_DATE_TIME); - module.addDeserializer(ZonedDateTime.class, CustomInstantDeserializer.ZONED_DATE_TIME); - objectMapper.registerModule(module); - converters.add(new MappingJackson2HttpMessageConverter(objectMapper)); + converters.add(new MappingJackson2HttpMessageConverter(objectMapper())); super.configureMessageConverters(converters); } + @Bean + public ObjectMapper objectMapper(){ + return builder().build(); + } }