willi1s
5 years agoNew Member
[Java] How to get oneOf data from responses
This may be a limitation of my Java knowledge.
I am trying to work out how to get the correct oneOf data back from a GET request
Given the simple swagger definition:
openapi: 3.0.1
info:
title: Inheritance
description: A description
contact:
email: me@example.com
version: 0.0.0
paths:
/pets:
get:
responses:
'200':
description: Updated
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/Cat'
- $ref: '#/components/schemas/Dog'
discriminator:
propertyName: petType
components:
schemas:
Pet:
type: object
required:
- petType
properties:
petType:
type: string
discriminator:
propertyName: petType
Dog: # "Dog" is a value for the pet_type property (the discriminator value)
allOf: # Combines the main `Pet` schema with `Dog`-specific properties
- $ref: '#/components/schemas/Pet'
- type: object
# all other properties specific to a `Dog`
properties:
bark:
type: boolean
breed:
type: string
enum: [Dingo, Husky, Retriever, Shepherd]
Cat: # "Cat" is a value for the pet_type property (the discriminator value)
allOf: # Combines the main `Pet` schema with `Cat`-specific properties
- $ref: '#/components/schemas/Pet'
- type: object
# all other properties specific to a `Cat`
properties:
hunts:
type: boolean
age:
type: integer
Using the java generator (3.0.19) to generate the client api, I am provided with the petsGet() function, which I can use as follows:
DefaultApi defaultApi = new DefaultApi();
try {
InlineResponse200 response = defaultApi.petsGet();
} catch (ApiException e)
{
...
}
My question is, how do I convert the response object to either a Cat or a Dog?