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] [VertX] Handle hyphen-separated security schemes in input spec #18630

Conversation

rohitsanj
Copy link
Contributor

resolves #18629

Add lambda call to camelcase to correctly handle hyphen separated security schemes when generating the AuthInfo class in Java vertx client.

Steps to validate this branch:

  1. Checkout to this branch locally and build the JAR: ./mvnw clean package
  2. Run the following command:
    java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar \
    generate \
    -g java \
    --library vertx \
    -o /var/tmp/java-vertx-client-test \
    -i https://gist.githubusercontent.com/rohitsanj/bd1f1f6747c41299bf4ce714ec2cda80/raw/6d46a2cfe8cf2dc173099e2b041af4dccb29c54a/openapi.yaml
  3. After generating the project with the steps above, navigate to src/main/java/org/openapitools/client/ApiClient.java and verify that there are no syntax errors in the AuthInfo class.

I've also added a unit test to prove the fix.

Tagging openapi-generator Java committee explicitly (as mentioned in the PR checklist): @martin-mfg

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.

@@ -680,54 +680,54 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {

private final Map<String, Authentication> authentications = new LinkedHashMap<>();{{#authMethods}}{{#isBasic}}{{#isBasicBasic}}

public void add{{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}Authentication(String username, String password) {
public void add{{#lambda.titlecase}}{{#lambda.camelcase}}{{name}}{{/lambda.camelcase}}{{/lambda.titlecase}}Authentication(String username, String password) {
Copy link
Member

Choose a reason for hiding this comment

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

thanks for the PR. we can go with this fix to start with

ideally, we should use a pascalcase lambda to avoid using double lambda.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah, I figured there was a single lambda I could use but I didn't look hard enough. Thank you for reviewing!

Copy link
Member

Choose a reason for hiding this comment

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

do you mind filing a follow-up PR to update it with pascalcase lambda?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sure, coming right up.

Copy link
Member

Choose a reason for hiding this comment

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

thanks, you can add the pascalcase lambda based onhttps://github.com/OpenAPITools/openapi-generator/blob/edbb021aadae47dcfe690313ce5119faf77f800d/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/CamelCaseLambda.java

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hmm, are you sure we need a new class? It looks like we use an instance of CamelCaseAndSanitizeLambda as pascalcase. See this commit.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Perhaps you were not asking me to add a new class, and I misunderstood. Never mind!

Copy link
Member

Choose a reason for hiding this comment

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

ah right. I forgot about that one.

no need to add a new class then. sorry for the confusion.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@wing328 wing328 merged commit b23dcbd into OpenAPITools:master May 13, 2024
62 checks passed
@wing328 wing328 added this to the 7.6.0 milestone May 13, 2024
renatomameli pushed a commit to renatomameli/openapi-generator that referenced this pull request May 17, 2024
@rohitsanj rohitsanj deleted the fix-vertx-authinfo-hyphen-separated-security-scheme branch May 17, 2024 18:40
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] [vertx] ApiClient.AuthInfo breaks on hyphen-separated security schemes
2 participants