3

I am trying get ZonedDateTime in my generated code from OpenApi. There is a If-Modified-Since header that OpenApi generates on my endpoint but it's in the type of LocalDateTime. This is causing issues on my integration tests.

task buildEndpointsFromYAML(type: 
org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
generatorName = "spring"
inputSpec = acquirerYML
outputDir = "$buildDir/generated".toString()

groupId = "$project.group"
id = "$project.name-java-client"
version = "$project.version"
apiPackage = "com.abc.xyz.apiEndpoints"
modelPackage = "com.abc.xyz.apiModels"
enablePostProcessFile = true
skipOverwrite = false
typeMappings = [
        OffsetDateTime: "ZonedDateTime"
]
importMappings = [
        "java.time.OffsetDateTime" : "java.time.ZonedDateTime"
]
configOptions = [
        configPackage       : "com.abc.xyz.apiEndpoints.config",
        java11              : "true",
        dateLibrary         : "java8-localdatetime",
        serializationLibrary: "jackson",
        library             : "spring-boot",
        useBeanValidation   : "true",
        interfaceOnly       : "true",
        serializableModel   : "true",
        useTags             : "true"
]
}

I've tried to some of the suggestions here too: Use java.time.Instant to represent DateTime instead of OffsetDateTime

but either it resulted in compilation errors or the type would go from LocalDateTime to Object as opposed to ZonedDAteTime.

This is part of the swagger.yaml:

parameters:
    - name: If-Modified-Since
      in: header
      description: If-Modified-Since
      required: false
      type: string
      format: date-time
  • It really doesn't make sense to use a local time to express `If-Modified-Since`. Do you have influence on the provider of the API? It should be expressed as UTC. – observer Mar 29 '22 at 10:02
  • change the dateLibrary to just "java8" without the localdatetime – AchoVasilev Apr 20 '23 at 07:48

0 Answers0