-
-
Notifications
You must be signed in to change notification settings - Fork 7.4k
Open
Labels
Description
Bug Report Checklist
- Have you provided a full/minimal spec to reproduce the issue?
- Have you validated the input using an OpenAPI validator (example)?
- Have you tested with the latest master to confirm the issue still exists?
- Have you searched for related issues/PRs?
- What's the actual output vs expected output?
- [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description
I want to limit the possible entries for the discriminator using oneOf. Therefore i want to set the discriminator as enum (See OpenAPI declaration file) below.
The openapi-generator-maven-plugin says:
[WARNING] 'cargoParent' defines discriminator 'unit', but the referenced schema 'TONS' is incorrect. invalid type for unit, set it to string
and the code finally fails to compile.
The Problem is that the generator creates the method
public TonsUnitEnum getUnit() {
return unit;
}in the TONS.java class. But the CargoParents requires a method returning String:
public interface CargoParent {
String getUnit();
}openapi-generator version
openapi-generator-maven-plugin 7.7.0
OpenAPI declaration file content or url
openapi: 3.0.3
info:
title: test
contact:
email: support@company.de
license:
name: company Licence
url: https://company.de/
version: 0.1.1
servers:
- url: https://webservice.company.org
paths:
/doSomething:
post:
summary: test
description: description for test operation
operationId: doSomething
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/doSomethingRequest'
required: true
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/doSomethingResponse'
components:
schemas:
doSomethingRequest:
title: doSomethingRequest
type: object
properties:
cargo:
$ref: '#/components/schemas/cargoParent'
required:
- cargo
doSomethingResponse:
title: doSomethingResponse
type: object
TonsUnitEnum:
type: string
enum:
- Tons
TONS:
title: TONS
type: object
properties:
unit:
$ref: '#/components/schemas/TonsUnitEnum'
amount:
type: number
format: double
example: 40
minimum: 0
required:
- unit
- amount
KILOGRAMS:
title: KILOGRAMS
type: object
properties:
unit:
type: string
pattern: ^KILOGRAMS$
example: KILOGRAMS
amount:
type: number
format: double
example: 1000
minimum: 0
required:
- unit
- amount
cargoParent:
title: cargoParent
type: object
oneOf:
- $ref: '#/components/schemas/TONS'
- $ref: '#/components/schemas/KILOGRAMS'
discriminator:
propertyName: unit
mapping:
TONS: '#/components/schemas/TONS'
KILOGRAMS: '#/components/schemas/KILOGRAMS'
Related issues/PRs
Reactions are currently unavailable