-
-
Notifications
You must be signed in to change notification settings - Fork 6.2k
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
Fix the Java generator to generate valid @RequestMappings where the produce
field takes list of string parameters instead of a single comma-separated string
#18092
Conversation
… a String array instead of a comma-separated string, and fixed api.mustache so the @RequestMapping annotation generated produces for x-accepts as a parameter list instead of a (single) string.
… of a comma-separated list.
…single String or a String[].
import org.openapitools.codegen.*; | ||
import org.openapitools.codegen.languages.AbstractJavaCodegen; | ||
import org.openapitools.codegen.utils.ModelUtils; | ||
import org.testng.Assert; | ||
import org.testng.annotations.Test; | ||
|
||
import javax.validation.constraints.AssertTrue; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you need this import? I guess you have organize the imports again
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you need this import? I guess you have organize the imports again
Yes, I saw that IntelliJ had reorganized the imports and that the import you mentioned could be removed as well. :)
…turns a String array.
…ns.x-accepts being a string array instead of a comma-separated string.
…generate-samples.sh ./bin/configs/*.yaml`
produce
field takes list of string parameters instead of a single comma-separated stringproduce
field takes list of string parameters instead of a single comma-separated string
sb.append(produce); | ||
} | ||
return sb.toString(); | ||
return new LinkedHashSet<>(producesInfo).toArray(new String[] {}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not directly producesInfo.toArray?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did it to guarantee the sort order as I saw the output for the produces
field was output in another order when generating all the scripts. But it seems like this is not the case (anymore). So I have updated the code to follow your suggestion. :)
Looks good, thanks :) |
can you please resolve the merge conflicts when you've time? then i will merge thanks for the PR |
…g conflicts on GitHub
… redundant accept with @HttpExchange with the PetApi.java, StoreApi.java, and UserApi.java.
You are welcome. I am glad that I can give contribute back to the community when I am a big fan of the OpenAPI generator. 😄 I have fixed the merge conflict, and also made a minor bugfix that caused some checks to fail. We should be good to go now. |
Thanks for contributing back 👍 |
produce
field takes list of string parameters instead of a single comma-separated stringproduce
field takes list of string parameters instead of a single comma-separated string
Fix AbstractJavaCodegen.getAccepts() so it returns a String[] instead of a comma-separated string, and fixed api.mustache so the @RequestMapping annotation generates the
produce
field for x-accepts to take a list of string parameters (valid) instead of a single comma-separated string (invalid).Before this change, the spring generator generated this invalid
@RequestMapping
:The issue here is that the @RequestMapping annotation does not accept a comma-separated list with the
produces
parameter.It needs to be generated as a list of strings like this:
@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) @martin-mfg (2023/08)
PR checklist
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*
.IMPORTANT: Do NOT purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
master
(upcoming 7.1.0 minor release - breaking changes with fallbacks),8.0.x
(breaking changes without fallbacks)to fix #18058