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

[JavaSpring] Usage of Array-Type leads to syntax error in generated coding

Open hdva2502 opened this issue 4 years ago • 0 comments

Hi,

when generating based on yamls like this (simplified):

openapi: 3.0.1
info:
  title: Test for Array Issue
  description: Test for Array Issue
  version: 1.0.0
servers:
- url: /test/array/issue
paths:
  /array/issue:
    get:
      summary: Provoke Array Issue
      operationId: getProvokeArrayIssue
      responses:
        200:
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorInformation'
components:
  schemas:
    MessageText:
      type: string
      description: Message Text
    Message:
      required:
        - text
      type: object
      properties:
        text:
          $ref: '#/components/schemas/MessageText'
      description: Message
    Messages:
      minItems: 1
      type: array
      description: Messages
      items:
        $ref: '#/components/schemas/Message'
    ErrorInformation:
      type: object
      required:
        - messages
      properties:
        messages:
          $ref: '#/components/schemas/Messages'
      description: Error Information

with maven plugin setting like

			<plugin>
				<groupId>io.swagger.codegen.v3</groupId>
				<artifactId>swagger-codegen-maven-plugin</artifactId>
				<version>3.0.30</version>
				<executions>
					<execution>
						<id>code-gen-swagger-test-array-isssue</id>
						<goals>
							<goal>generate</goal>
						</goals>
						<configuration>
							<addCompileSourceRoot>true</addCompileSourceRoot>
							<modelPackage>com.test.array.issue.model</modelPackage>
							<apiPackage>com.test.issue.api</apiPackage>
							<inputSpec>ArrayIssueTest.yaml</inputSpec>
							<generateApiTests>false</generateApiTests>
							<language>spring</language>
							<configOptions>
								<java8>true</java8>
								<fullJavaUtil>true</fullJavaUtil>
								<dateLibrary>java8</dateLibrary>
							</configOptions>
						</configuration>
					</execution>
				</executions>
			</plugin>

this leads to generated code like

...
public class Messages extends java.util.ArrayList<Message>  {
...

and

...
public class ErrorInformation   {
  @JsonProperty("messages")
  private Messages messages = new java.util.ArrayList<>();
...

where private Messages messages = new java.util.ArrayList<>(); is syntactically not correct.

Please have a look.

Thanks in advance, Andreas

hdva2502 avatar Dec 20 '21 16:12 hdva2502