Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • O openapi-generator
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 3,476
    • Issues 3,476
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 402
    • Merge requests 402
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • OpenAPI Tools
  • openapi-generator
  • Merge requests
  • !11384

Add in `Optional` handling for SpringBoot POJOs

  • Review changes

  • Download
  • Email patches
  • Plain diff
Closed Administrator requested to merge github/fork/welshm/spring_oas3_nullability into master Jan 23, 2022
  • Overview 0
  • Commits 33
  • Pipelines 0
  • Changes 176

Created by: welshm

Modified pojo.mustache to have Optional be used on POJOs

  • Added spring-boot-oas3-nullable.yaml to generate nullable examples to validate against
  • Added spring-boot-oas3-nullable-disabled.yaml to generate optional behaviour when nullable is disabled
  • https://github.com/OpenAPITools/openapi-generator/issues/11383

NOTE: This is a breaking change for anyone with useOptional enabled.

PR checklist

  • Read the contribution guidelines.
  • Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
  • Run the following to build the project and update samples:
    ./mvnw clean package 
    ./bin/generate-samples.sh
    ./bin/utils/export_docs_generators.sh
    Commit all changed files. This is important, as CI jobs will verify all generator outputs of your HEAD commit as it would merge with master. These must match the expectations made by your contribution. You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example ./bin/generate-samples.sh bin/configs/java*.
  • File the PR against the correct branch: master (5.3.0), 6.0.x
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

Spec that shows the use case

ApiDefault:
  type: object
  required:
    - requiredMessage
    - requiredNullableMessage
  properties:
    message:
      type: string
      description: A message
    nullableMessage:
      type: string
      description: A nullable message
      nullable: true
    requiredMessage:
      type: string
      description: A required message
    requiredNullableMessage:
      type: string
      description: A required nullable message
      nullable: true

Output

useOptional: false
openApiNullable: false

private String message;
private String nullableMessage
private String requiredMessage;
private String requiredNullableMessage;
useOptional: true
openApiNullable: false

private Optional<String> message;
private Optional<String> nullableMessage
private String requiredMessage;
private String requiredNullableMessage;
useOptional: false
openApiNullable: true

private String message;
private JsonNullable<String> nullableMessage
private String requiredMessage;
private JsonNullable<String> requiredNullableMessage;
useOptional: true
openApiNullable: true

private Optional<String> message;
private JsonNullable<String> nullableMessage
private String requiredMessage;
private JsonNullable<String> requiredNullableMessage;
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: github/fork/welshm/spring_oas3_nullability