Please find the schemas in my contract yaml file :
Foo:
allOf:
- $ref: "#/components/schemas/Bar"
properties:
ancestors:
items:
$ref: "#/components/schemas/Bar"
type: array
description:
type: object
additionalProperties:
type: string
id:
description: id
type: string
type: object
Bar:
properties:
accessAllowed:
items:
type: string
type: array
catalog:
type: boolean
children:
items:
$ref: "#/components/schemas/Bar"
type: array
While using swagger 2, the generated class Foo extends Bar. But after using openAPI 3 Foo isn't extending Bar when using allOf
. All it is doing is copying all the properties of Bar to Foo class.
Although now that Foo class will contain all the properties of Bar, Foo isn't actually inheriting when we look at the java code side. Is there any way to generate the class Foo extending Bar when using OpenAPI 3 as there are many cases where one need to generate classes that inherit a parent class.
You need to add:
...
Bar:
...
discriminator:
propertyName: barType
mapping:
foo: "#/components/schemas/Foo"
...
...
Complete example:
Foo:
allOf:
- $ref: "#/components/schemas/Bar"
properties:
ancestors:
items:
$ref: "#/components/schemas/Bar"
type: array
description:
type: object
additionalProperties:
type: string
id:
description: id
type: string
type: object
Bar:
discriminator:
propertyName: barType
mapping:
foo: "#/components/schemas/Foo"
properties:
accessAllowed:
items:
type: string
type: array
catalog:
type: boolean
children:
items:
$ref: "#/components/schemas/Bar"
type: array