Skip to content

[BUG][JAVA] Problem generating model where default value is specified for date property #7038

@seantreg

Description

@seantreg
Description

Model properties that are dates generate invalid Java code where a default value is specified.

openapi-generator version

v5.0.0-beta

OpenAPI declaration file content or url
{
    "openapi": "3.0.1",
    "info": {
        "title": "Test",
        "version": "1.0"
      },
    "paths": {},
    "components": {
        "schemas": {
            "Request": {
                "type": "object",
                "properties": {
                    "endDate": {
                        "type": "string",
                        "format": "date",
                        "default": "1900-01-01"
                    },
                    "startDate": {
                        "type": "string",
                        "format": "date"
                    }
                }
            }
        }
    }
}
Command line used for generation

java -jar openapi-generator-cli-5.0.0-beta.jar generate -i test.json -g java -o .\output --additional-properties dateLibrary=java8-localdatetime

Steps to reproduce

Run the command above;
View generated Request.java which contains the following invalid variable initialization:

@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2020-07-24T10:22:22.238+10:00[Australia/Sydney]")
public class Request {
  public static final String SERIALIZED_NAME_END_DATE = "endDate";
  @SerializedName(SERIALIZED_NAME_END_DATE)
  private LocalDate endDate = 1900-01-01; // <--- Type mismatch: cannot convert from int to LocalDate

  public static final String SERIALIZED_NAME_START_DATE = "startDate";
  @SerializedName(SERIALIZED_NAME_START_DATE)
  private LocalDate startDate;
  ...
Related issues/PRs

None known.

Suggest a fix

In the toDefaultValue(Schema) method of org.openapitools.codegen.languages.AbstractJavaCodegen the default value for a date is returned as a String representation of the date, but should probably be a call to LocalDate.parse or similar.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions