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] Support cookie-based security schemas in Java clients #4155

Merged
merged 6 commits into from
Oct 19, 2019

Conversation

atsharp
Copy link
Contributor

@atsharp atsharp commented Oct 14, 2019

This PR provides Java support for cookie-based security schemas as described in the OpenAPI spec here. Where easily possible, existing clients were amended to include the addition of cookie parameters as well (which is also part of the OpenAPI spec here).

Certain clients (such as feign) do not provide explicit support for cookies, in which case a Cookie header was included to support this feature. Likewise, certain clients (such as `native) were excluded from this PR as they appear to lack support for authentication schemas altogether.

It is likely additional changes should be introduced to provide comprehensive support for cookie-based security schemas and parameters, however, these changes should allow cookie-based security schemas to be used in the majority of Java clients.

CC: @bbdouglas @sreeshas @jfiala @lukoyanov @cbornet @jeff9finger @karismann @Zomzog

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.1.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@wing328
Copy link
Member

wing328 commented Oct 17, 2019

CI reports the following errors:

[ERROR] COMPILATION ERROR : 
[ERROR] /home/circleci/OpenAPITools/openapi-generator/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java:[21,13] method applyToParams in class org.openapitools.client.auth.ApiKeyAuth cannot be applied to given types;
  required: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>
  found: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>
  reason: actual and formal argument lists differ in length
[ERROR] /home/circleci/OpenAPITools/openapi-generator/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java:[40,13] method applyToParams in class org.openapitools.client.auth.ApiKeyAuth cannot be applied to given types;
  required: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>
  found: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>
  reason: actual and formal argument lists differ in length
[ERROR] /home/circleci/OpenAPITools/openapi-generator/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java:[28,13] method applyToParams in class org.openapitools.client.auth.HttpBasicAuth cannot be applied to given types;
  required: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>
  found: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>
  reason: actual and formal argument lists differ in length
[ERROR] /home/circleci/OpenAPITools/openapi-generator/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java:[39,13] method applyToParams in class org.openapitools.client.auth.HttpBasicAuth cannot be applied to given types;
  required: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>
  found: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>
  reason: actual and formal argument lists differ in length
[ERROR] /home/circleci/OpenAPITools/openapi-generator/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java:[47,13] method applyToParams in class org.openapitools.client.auth.HttpBasicAuth cannot be applied to given types;
  required: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>
  found: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>
  reason: actual and formal argument lists differ in length
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:testCompile (default-testCompile) on project petstore-java-client-jersey1: Compilation failure: Compilation failure:
[ERROR] /home/circleci/OpenAPITools/openapi-generator/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java:[21,13] method applyToParams in class org.openapitools.client.auth.ApiKeyAuth cannot be applied to given types;
[ERROR] required: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>
[ERROR] found: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>
[ERROR] reason: actual and formal argument lists differ in length
[ERROR] /home/circleci/OpenAPITools/openapi-generator/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/ApiKeyAuthTest.java:[40,13] method applyToParams in class org.openapitools.client.auth.ApiKeyAuth cannot be applied to given types;
[ERROR] required: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>
[ERROR] found: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>
[ERROR] reason: actual and formal argument lists differ in length
[ERROR] /home/circleci/OpenAPITools/openapi-generator/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java:[28,13] method applyToParams in class org.openapitools.client.auth.HttpBasicAuth cannot be applied to given types;
[ERROR] required: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>
[ERROR] found: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>
[ERROR] reason: actual and formal argument lists differ in length
[ERROR] /home/circleci/OpenAPITools/openapi-generator/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java:[39,13] method applyToParams in class org.openapitools.client.auth.HttpBasicAuth cannot be applied to given types;
[ERROR] required: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>
[ERROR] found: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>
[ERROR] reason: actual and formal argument lists differ in length
[ERROR] /home/circleci/OpenAPITools/openapi-generator/samples/client/petstore/java/jersey1/src/test/java/org/openapitools/client/auth/HttpBasicAuthTest.java:[47,13] method applyToParams in class org.openapitools.client.auth.HttpBasicAuth cannot be applied to given types;
[ERROR] required: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>,java.util.Map<java.lang.String,java.lang.String>
[ERROR] found: java.util.List<org.openapitools.client.Pair>,java.util.Map<java.lang.String,java.lang.String>
[ERROR] reason: actual and formal argument lists differ in length

Ref: https://circleci.com/gh/OpenAPITools/openapi-generator/9622

Please take a look when you've time.

Thanks a lot for adding cookie support to all Java client generators

@atsharp
Copy link
Contributor Author

atsharp commented Oct 17, 2019

Whoops. Will take a look. Thanks!

@atsharp
Copy link
Contributor Author

atsharp commented Oct 17, 2019

@wing328, seems like there's some issue running Circle CI. Would you mind restarting it for me? Thanks

@wing328
Copy link
Member

wing328 commented Oct 18, 2019

@atsharp can you please merge the latest master of the official repo to your branch as CircleCI has made some changes and we've fixed the issue by updating the config file?

@atsharp
Copy link
Contributor Author

atsharp commented Oct 18, 2019

@wing328 is there a way to get more details on the test failures in the above build? Not seeing any failures when running locally but CI is reporting something. Thanks

@wing328
Copy link
Member

wing328 commented Oct 18, 2019

Just restarted both. Let's see how it goes

@wing328
Copy link
Member

wing328 commented Oct 19, 2019

@atsharp all tests passed. Nice work!

@wing328 wing328 merged commit d75d089 into OpenAPITools:master Oct 19, 2019
@atsharp
Copy link
Contributor Author

atsharp commented Oct 20, 2019

Thanks :)

@wing328
Copy link
Member

wing328 commented Oct 31, 2019

@atsharp thanks for the PR, which has been included in v4.2.0 release: https://twitter.com/oas_generator/status/1189824932345069569

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