swagger-codegen icon indicating copy to clipboard operation
swagger-codegen copied to clipboard

[JAVASpring] Incorrect model classnames but only in lists?

Open RHinderiks opened this issue 1 year ago • 0 comments

Description

Since our main.yaml was getting oversized way too quickly we decided to split the file up in separate files and $ref them in the main.yaml. However when using the following code

 details:
    type: array
    items:
      $ref: './DetailDto.yaml'

The DetailDto is generated correctly but the details list will look for the following class SchemasDetailDtoYaml.java which seems to be the path. When everything was in a single file and we referenced #/components/schemas/DetailDto everything was fine.

Swagger-codegen version

3.0.55, also broken in 3.0.52. Haven't used any other version yet

Swagger declaration file content or url

Main.yaml

    DataDto:
      $ref: './schemas/DataDto.yaml'

    DetailDto:
      $ref: './schemas/DetailDto.yaml'

Data.yaml

    type: object
    properties:
        details:
            type: array
            items:
                $ref: './DetailDto.yaml'
Command line used for generation

<plugin> <groupId>io.swagger.codegen.v3</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>3.0.52</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/api/main.yaml</inputSpec> <!-- allows you to generate a list of configuration options, won't generate code if enabled --> <!-- <configHelp>true</configHelp>--> <output>src/main/java</output> <templateDirectory>${project.basedir}/templates</templateDirectory> <language>spring</language> <modelPackage>org.joorz.project.dto.generated</modelPackage> <apiPackage>org.joorz.project.service.generated</apiPackage> <configOptions> <interfaceOnly>true</interfaceOnly> <hideGenerationTimestamp>true</hideGenerationTimestamp> <dateLibrary>java8</dateLibrary> <sourceFolder>/</sourceFolder> </configOptions> </configuration> </execution> </executions> </plugin>

Steps to reproduce
  1. Create the yaml files like mentioned above
  2. Execute maven build command
  3. Get compile errors

RHinderiks avatar May 06 '24 14:05 RHinderiks