swagger-api / swagger-api/swagger-codegen

Spring Model POJOs not being generated for matching schemas with different titles.

Open
#5,171 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

General: Question help wanted Server: Spring
Dominant language
Mustache
Stars
17.8k
Forks
6k
PR merge metrics
No merged PRs in 30d

Description

Description

Not sure why, but when I create two path that have identical structures other than the name of the title, only the first titled object is generated.

Swagger-codegen version

Codegen 2.2.2:

Swagger declaration file content or url

swagger: '2.0'

info:
  title: API
  version: "0.0.1"

paths:
  /app/alive:
    get:
      responses:
        '200':
          description: OK
          schema:
            title: AppHealthCheckResult
            properties:
              header:
                $ref: '#/definitions/ResponseHeader'
              result:
                $ref: '#/definitions/GenericKeyValue'


  /app/config:
    get:
      responses:
        '200':
          description: OK
          schema:
            title: GetAppConfigKeyResponse
            properties:
              header:
                $ref: '#/definitions/ResponseHeader'
              result:
                $ref: '#/definitions/GenericKeyValue'

definitions:

  ResponseHeader:
    type: object
    properties:
      request-id:
        type: string
        description: Header for all response

  GenericKeyValue:
    type: object
    properties:
      name:
        type: string
        description: something
Command line used for generation
java -jar ../tools/swagger-codegen-cli-2.2.2.jar generate -i missing-models.yaml -l spring
Steps to reproduce

Using above the following is rendered...

I would also expect a model for GetAppConfigKeyResponse.java to be created.

[main] INFO io.swagger.parser.Swagger20Parser - reading from missing-models.yaml
[main] WARN io.swagger.codegen.ignore.CodegenIgnoreProcessor - Directory does not exist, or is inaccessible. No file will be evaluated.
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/model/AppHealthCheckResult.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/model/GenericKeyValue.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/model/ResponseHeader.java
[main] WARN io.swagger.codegen.DefaultCodegen - Empty operationId found for path: get /app/alive. Renamed to auto-generated operationId: appAliveGet
[main] WARN io.swagger.codegen.DefaultCodegen - Empty operationId found for path: get /app/config. Renamed to auto-generated operationId: appConfigGet
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/api/AppApiController.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/api/AppApi.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/pom.xml
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/README.md
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/configuration/HomeController.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/Swagger2SpringBoot.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/RFC3339DateFormat.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/resources/application.properties
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/api/ApiException.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/api/ApiResponseMessage.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/api/NotFoundException.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/api/ApiOriginFilter.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/src/main/java/io/swagger/configuration/SwaggerDocumentationConfig.java
[main] INFO io.swagger.codegen.AbstractGenerator - writing file /Users/roberhr/demo/codegen-bug/target/.swagger-codegen-ignore


##### Suggest a Fix
I'm not sure but it seems to me like there is a map collision or something.

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 supplied missing-models.yaml example with swagger-codegen-cli-2.2.2 and the generate -l spring command, then inspect the model-generation entry point; no source file or test is named in the issue. Done means the generated Spring output contains both AppHealthCheckResult.java and GetAppConfigKeyResponse.java, along with the shared models.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, spring
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.