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
Description
Applying fix for #2449 to JavaSpring
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@JsonSubTypesRelated issues
#2449
Suggest a Fix
I have submitted a pull request