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
  • !5826

Update AbstractJavaCodegen to support generating code with immutable guava collections.

  • Review changes

  • Download
  • Email patches
  • Plain diff
Open Administrator requested to merge github/fork/jvandort/support-immutable-collections-java into master Apr 05, 2020
  • Overview 0
  • Commits 1
  • Pipelines 1
  • Changes 1

Created by: jvandort

This code is probably not ready to merge yet, but I was not too sure of a better way to spark regarding adding better support for immutable generated code. This PR adds support for generating code with immutable guava collections as opposed to the standard java collections. There may still need to be changes to the pom.xml mustache files to get the jaxrs codegen ready to use, but since it seems each version of some language templates each have their own version of some files, I was curious if there was a streamlined method of updating templates across languages.

There is a lot of special cases where this does not work -- for example some of the return types in in the java language generators are explicitly checking the returnType for List and Map, which does not match ImmutableList and ImmutableMap. (See postProcessOperationsWithModels in JavaPlayFrameworkCodegen.java.) With all of the special cases that individually handle collections, and all of the hard-coded Lists and Maps in the the mustache files, it is not feasible to support immutable collections for all language without a lot more code changes. These changes do however seem to work well with the jaxrs language types. Perhaps there is a way to enable this feature only for those language generators.

I re-ran (locally) all sample jaxrs and java generators in the bin folder, and the changes in the PR produce no changes to the generated code with the flag disabled.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: github/fork/jvandort/support-immutable-collections-java