Skip to content

(Spring) SubClass annotations are missing from the base class  #4606

@eamon316

Description

@eamon316
Description

Applying fix for #2449 to JavaSpring

In order for jackson ObjectMapper to deserialize correctly a base class to its subclasses, we need to include annotations defining all expected subclasses in the parent class.
The codegen currently does not generate those annotations.
For this example YAML:

definitions:
Base:
type: object
discriminator: disc
properties:
disc:
type: string
required:
- disc
SubClass:
allOf:
- $ref: '#/definitions/Base'
required:
- field
properties:
field:
type: string

Jackson expects these annotations to be produced, but they are not:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "disc")
@JsonSubTypes({ @type(value = SubClass.class, name = "SubClass") })
public class Base {
}

Swagger-codegen version

2.2.2-SNAPSHOT

Swagger declaration file content or url
Command line used for generation

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate
-i modules/swagger-codegen/src/test/resources/2_0/allOfTest.yaml
-l spring
-o /tmp/java_spring

Steps to reproduce

Run the above command.
The following annotations are not included
@JsonTypeInfo
@JsonSubTypes

Related issues

#2449

Suggest a Fix

I have submitted a pull request

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions