Skip to content

[BUG][SPRING]compilation errors due to different request body type in api and apiDelegate files #3905

Open
@anuhyapolisetti

Description

@anuhyapolisetti

Bug Report Checklist

  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • What's the version of OpenAPI Generator used?
  • Have you search for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Bounty to sponsor the fix (example)
Description

We have encountered this problem
generated Api and ApiDelegate files have different request body types (Resource/MultipartFile), which is resulting in compilation errors.

Issue seemed to have addressed in v4.0.0-beta3 version, but issue still persists when we tried with the cli version of v4.0.0-beta3.

openapi-generator version

v4.0.2

OpenAPI declaration file content or url
openapi: 3.0.1
info:
  title: testapp
  version: 0.0.1
servers:
  - url: 'http://localhost:8081/api'
    description: Development server
paths:
  '/foo':
    post:
      operationId: foo
      requestBody:
        content:
          image/png:
            schema:
              type: string
              format: binary
      responses:
        default:
          description: successful operation
Command line used for generation

java -jar openapi-generator-cli.jar generate -g spring -i api.yml -o ./out --additional-properties delegatePattern=true

Steps to reproduce
  1. Run the command above with provided api.yml.
  2. Open out/src/main/java/org/openapitools/api/FooApi.java, look at generated foo method
    default ResponseEntity<Void> foo(@ApiParam(value = ""  )  @Valid @RequestBody Resource body) {
        return getDelegate().foo(body);
    }
  1. Open out/src/main/java/org/openapitools/api/FooApiDelegate.java, look at generated apiDelegate method
    default ResponseEntity<Void> foo(MultipartFile body) {
        return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
    }

foo from FooApiDelegate consumes MultipartFile whereas FooApi passes Resource as request body type.

Related issues/PRs
  1. [Spring] fix datatype for non-multipart file request body #2271

Issue seemed to have addressed in v4.0.0-beta3 version per above PR, but issue still persists when we tried with the cli version of v4.0.0-beta3.

  1. [BUG][Java][Server:Spring-boot] File upload spec (application/octet-stream) generates MultiPartFile Delegate #2191
Suggest a fix

Use either Multipartfile or Resource in both api and apidelegate

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions