Simple Discrimination
I am using `editor.swagger.io` to generate a java client. In that client, I am directly using the `JSON` class to deserialize a very simple JSON string, and to see what Swagger does. The challenge I am giving Swagger is simple discrimination. Here is my Swagger YAML. (Note this may not be a useful Swagger schema. It is just for experimentation)
swagger: "2.0" info: title: "Minimal Example" version: "0.0.1" tags: [] paths: {} definitions: Decorator: type: object required: - type properties: type: type: string OinkDecorator: allOf: - $ref: '#/definitions/Decorator' - type: object required: - oink properties: oink: type: string FooDecorator: allOf: - $ref: '#/definitions/Decorator' - type: object required: - foo properties: foo: type: string FieldModel: type: object properties: decorators: type: array items: $ref: '#/definitions/OinkDecorator'
And the JSON I am trying to deserialize:
{ "type" : "asdasd", "decorators" : [{ "type":"asqqweqwe", "oink": "adfasdf"}] }
More info: So, I am trying to deserialize this JSON as a FieldModel. If I were to change the Swagger schema to NOT have two possible child fields (Oink and Foo), the deserialization happens as expected (e.g. I get a FieldModel which contains and Oink. However, as it appears above (even with a discriminator), what I can't seem to avoid is getting a FieldModel with a simple Map representation of the child.
Does discrimination work in deserialization? Am I not employing it correctly? Any ideas are appreciated. Please and thank you.
Hi mcostantini there are issues on codegen related to your unexpected behavior, right now schemas listed on `oneOf`, `anyOf`, `allOf` are not being handled property. I'll be working on this issue and keep you updated about that.