swagger-api / swagger-api/swagger-codegen
Syntax error in generated code for retrofit2 class auth.OAuth since v3.0.52
Nobody has claimed this yet.
- Dominant language
- Mustache
- Stars
- 17.8k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
Description
Swagger is generating a file with syntax errors when retrofit2 is used since v3.0.52.
This seems to be caused by a duplicated if statement:
// 401/403 most likely indicates that access token has expired. Unless it happens two times in a row.
if ( response != null && (response.code() == HTTP_UNAUTHORIZED || response.code() == HTTP_FORBIDDEN) && updateTokenAndRetryOnAuthorizationFailure ) {
if ( response != null && (response.code() == HTTP_UNAUTHORIZED || response.code() == HTTP_FORBIDDEN) && updateTokenAndRetryOnAuthorizationFailure ) {
try {
The second if should not have been inserted, so the { has no matching }.
Attempting to compile this file will print this error:
test\auth\OAuth.java:136: error: illegal start of expression
public synchronized boolean updateAccessToken(String requestAccessToken) throws IOException {
^
1 error
Because of this error, I am unable to use the generated code. Mitigation: staying in v3.0.51
Swagger-codegen version
Works in v3.0.51, fails in both v3.0.52 and in v3.0.62-20240826.194328-3 (latest snapshot, I think).
Swagger declaration file content or url
Issue can be replicated with:
openapi: 3.0.1
info:
title: OpenAPI definition
paths:
'/foo':
get:
description: 'Foo'
operationId: foo
Command line used for generation
java -jar <swagger-codegen-cli-jar-path> generate --model-package=test.models --api-package=test.api --library=retrofit2 -l java -o dist/ -i schema.yaml
Steps to reproduce
Run the command above.
Inspect generated dist/src/main/java/test/auth/OAuth.java
Expected: file has no syntax errors
Actual: an if statement appears twice, leading to a syntax error.
Related issues/PRs
I couldn't find anything.
Suggest a fix/enhancement
Remove the duplicated if. I have no idea what puts it there.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Run the reported swagger-codegen CLI command with the provided schema and inspect dist/src/main/java/test/auth/OAuth.java. Trace that generated class back to the retrofit2 Java template, remove the duplicated conditional, and verify that the generated file compiles without the reported syntax error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java, openapi
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100