Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Java] Array default value requires import of java.util.Arrays #16246

Merged
merged 1 commit into from
Aug 17, 2023

Conversation

Perdjesk
Copy link
Contributor

@Perdjesk Perdjesk commented Aug 3, 2023

Likely since 6.3.0 and introduction of default value for arrays in Java. #14130

In Java codegen a default value for the container type array will use java.util.Arrays to set the default value, however the required import is not added automatically.
Issue reproduced at least with jaxrs-spec, jaxrs-jersey and spring generators.

}
return String.format(Locale.ROOT, "new ArrayList<>(Arrays.asList(%s))", defaultValue);
} else if (cp.isArray && cp.getUniqueItems()) { // set
// TODO

This PR contains:

  • Test reproducing the issue.
  • ⚠️ Possible fix by importing required class whenever array container type is found. With this approach the import could be superfluous when the array container doesn't specify a default value. There are as well a lot of changes in samples and introduce duplicate imports in some cases (maybe because some template as well specify this import).

⚠️ The samples were not added yet to the PR as better approach for the resolution should be found from review by someone with a better understanding of the code base.

Handling of duplicates relates maybe to:

// Remove imports of List, ArrayList, Map and HashMap as they are
// imported in the template already.
List<Map<String, String>> imports = objs.getImports();
Pattern pattern = Pattern.compile("java\\.util\\.(List|ArrayList|Map|HashMap)");

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.
  • ⚠️ See comment above. 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*.
    For Windows users, please run the script in Git BASH.
  • In case you are adding a new generator, run the following additional script :
    ./bin/utils/ensure-up-to-date
    
    Commit all changed files.
  • File the PR against the correct branch: master (6.3.0) (minor release - breaking changes with fallbacks), 7.0.x (breaking changes without fallbacks)
  • If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.

@bbdouglas (2017/07) @sreeshas (2017/08) @jfiala (2017/08) @lukoyanov (2017/09) @cbornet (2017/09) @jeff9finger (2018/01) @karismann (2019/03) @Zomzog (2019/04) @lwlee2608 (2019/10)

@wing328
Copy link
Member

wing328 commented Aug 8, 2023

@Perdjesk thanks for the PR. May I know if you can share a spec to more easily reproduce the issue to confirm the fix?

@Perdjesk
Copy link
Contributor Author

Perdjesk commented Aug 8, 2023

May I know if you can share a spec to more easily reproduce the issue to confirm the fix?

There is one reproducing the issue in the PR here https://github.com/OpenAPITools/openapi-generator/pull/16246/files#diff-73cc72442bdc5c0fb060d8c01a41099ec9e6d04cb6e7a9c090e9fb8f379e516c

In tests done as well with the CLI version of OpenAPI-generator this example is enough to trigger the behavior described in this PR.

@wing328
Copy link
Member

wing328 commented Aug 10, 2023

Ah ok. Sorry I missed that. Will use for testing to confirm the fix.

@wing328
Copy link
Member

wing328 commented Aug 15, 2023

thanks again for the PR. Can you please PM via Slack when you've time?

@wing328
Copy link
Member

wing328 commented Aug 17, 2023

tests with updated samples passed via #16339

@wing328 wing328 merged commit a9a4aa4 into OpenAPITools:master Aug 17, 2023
@wing328
Copy link
Member

wing328 commented Aug 17, 2023

Thanks for the fix, which has been merged.

I'll later file another PR to remove the duplicated import of Arrays.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants