swagger-api / swagger-api/swagger-codegen

Syntax error in generated code for retrofit2 class auth.OAuth since v3.0.52

Open
#12,458 2 comments 1 reaction 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.