Skip to content

Conversation

@ind1go
Copy link
Contributor

@ind1go ind1go commented Jan 31, 2020

Fixes #4866.

PR #3703 introduced a change to the Java jersey2 generator that dealt with errors that were occurring in the case where no body is supplied. It short-circuits with the empty JSON object as the body:

-    Entity<?> entity = serialize(body, formParams, contentType);
+    Entity<?> entity = (body == null) ? Entity.json("") : serialize(body, formParams, contentType);
  • As [BUG][JAVA][JAX-RS Jersey 2] Generated api for a Post with multipart/form-data is not able to upload file #4866 discovered, when there is no body supplied but there are form parameters (it's multipart/form-data or application/x-www-form-urlencoded), the above logic skips the creation of a body from the form parts. This pull request changes the logic to not miss the form parameter body construction.
  • I suspect from the commentary on the previous pull request and issue that Entity.json("") was not intended (which results in the empty JSON object, {}, being used as body), and instead it was supposed to be Entity.text("") - i.e. the empty string. This pull request changes the entity in the case where there is no body (and it's not a form) to be the empty string.

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. @bbdouglas @sreeshas @jfiala @lukoyanov @cbornet @jeff9finger @karismann @Zomzog @lwlee2608 @bkabrda, also @jmini

@wing328
Copy link
Member

wing328 commented Jan 31, 2020

FYI. I've canceled some of the build jobs to give priorities to the v4.2.3 release.

I'll restart the build jobs for this PR after the release.

@ind1go
Copy link
Contributor Author

ind1go commented Jan 31, 2020

No problem @wing328! Is it OK for them to be restarted now?

@wing328 wing328 closed this Feb 1, 2020
@wing328 wing328 reopened this Feb 1, 2020
@wing328 wing328 added this to the 4.3.0 milestone Feb 3, 2020
@wing328
Copy link
Member

wing328 commented Feb 3, 2020

Let's go with this fix to see how it goes.

@wing328 wing328 merged commit fbcb8e0 into OpenAPITools:master Feb 3, 2020
@ind1go ind1go deleted the jersey2-serialize-form-when-no-body branch February 3, 2020 09:13
@wing328
Copy link
Member

wing328 commented Mar 27, 2020

@ind1go thanks for the PR, which has been included in the 4.3.0 release: https://twitter.com/oas_generator/status/1243455743937789952

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.

[BUG][JAVA][JAX-RS Jersey 2] Generated api for a Post with multipart/form-data is not able to upload file

2 participants