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 RESTEasy client] added filename directive for Java RESTEasy file uploads (#17367) #17435

Merged
merged 2 commits into from
Dec 21, 2023
Merged

Conversation

miladhub
Copy link
Contributor

The Java RESTEasy generated client omitted the "filename" directive when performing file uploads, see #17367.

To fix this, I've changed the mustache template to add the parameter when invoking method addFormData on the MultipartFormDataOutput object.

I've added both a unit test and an integration test; the latter uses the echo service to run.

I've run the following on my machine:

$ asdf shell java adoptopenjdk-11.0.21+9
$ export JAVA_HOME=`asdf where java`
$ ./mvnw clean install
$ ./mvnw integration-test -f samples/client/petstore/java/resteasy-echo/pom.xml

The echo server was started like this:

$ git clone https://github.com/wing328/http-echo-server -b openapi-generator-test-server
$ cd http-echo-server
$ npm install
$ npm start

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/configs/*.yaml
    ./bin/utils/export_docs_generators.sh
    
    (For Windows users, please run the script in Git BASH)
    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.
  • File the PR against the correct branch: master (upcoming 7.1.0 minor release - breaking changes with fallbacks), 8.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.

Mentioning Java committee:
@bbdouglas @sreeshas @jfiala @lukoyanov @cbornet @jeff9finger @karismann @Zomzog @lwlee2608 @martin-mfg

type: object
properties:
string:
$ref: '#/components/schemas/Foo'
Copy link
Member

@wing328 wing328 Dec 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not required as part of this PR.

instead of creating this petstore-echo spec, what about using echo apec instead: https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/echo_api.yaml#L397 ?

The client can be found in samples/client/petstore/java/resteasy-echo. You will need to copy the Echo server respone parser from other Java echo API clients.

can you migrate the test to use the Echo API later after this PR is merged?

@wing328
Copy link
Member

wing328 commented Dec 21, 2023

looks good. thanks for the fix

let me know if you can work on updating the tests to use the Java resteasy echo api client instead.

happy holidays

@wing328 wing328 merged commit 1060479 into OpenAPITools:master Dec 21, 2023
60 checks passed
@miladhub miladhub deleted the fix_issue17367 branch December 21, 2023 12:47
@miladhub
Copy link
Contributor Author

miladhub commented Dec 21, 2023

Hi, awesome thanks!

I've tried to use the echo_api.yaml spec (removing the old generated client at "samples/client/petstore/java/resteasy-echo"), but I see that this spec does not have an api of type "multipart/form-data" accepting a single file, it only has one accepting a list of files, and I found out that in this case the client puts the name of the parameter ("files", in this case) as the value of the "filename" directive.

I don't know if this is correct, but this surely doesn't let me test the issue that I fixed (I actually debugged and it takes another branch in an IF statement).

Shall I add an endpoint that accepts a single file?

edit: just for clarity, the client at "samples/client/petstore/java/resteasy-echo" was generated by me while fixing the issue

@miladhub
Copy link
Contributor Author

hi @wing328, I've created a PR to do what you were mentioning (using echo_api.yaml): #17470

happy holidays!

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