[BUG] [JAVA] OneOf polymorphism code wasn't generated correctly
Created by: swrnm
Bug Report Checklist
-
Have you provided a full/minimal spec to reproduce the issue? -
Have you validated the input using an OpenAPI validator (example)? -
Have you tested with the latest master to confirm the issue still exists? -
Have you searched for related issues/PRs? -
What's the actual output vs expected output? -
[Optional] Sponsorship to speed up the bug fix or feature request (example)
Description
I used open-api generator for creating Java client. In one of the endpoint, I used oneOf
which must follow polymorphism property to generate codes. It generated a OneOfBody
empty interface and two classes ObjectA
and ObjectB
which implements OneOfBody
. So ideally the endpoint's method should expect the OneOfBody
parameter but it expects a Body
parameter which is an empty class implementing OneOfBody
. So this way, passing ObjectA
OR ObjectB
seems impossible.
openapi-generator version
4.3.1
OpenAPI declaration file content or url
https://gist.github.com/swarnim-sib/94a6ad4b31f63d1c6ad45b8de5961333
Generation Details
openapi-generator generate -i ~/Documents/Project/api/client/file.yml -g java -o ~/JavaClient
Steps to reproduce
- Take any yml file, for example Swagger Petstore example and add configurations mentioned here (related to oneOf)
- Run openapi-generator script mentioned above to generate Java client
- Check files,
OneOfBody.java
, possiblyBody.java
, and API class mentioned in above endpoint
Related issues/PRs
Suggest a fix
- If we could tell the API classes to accept
OneOfBody
parameters instead ofBody
parameters thenObjectA
andObjectB
could be type casted toOneOfBody
and the API class would process the passed parameters OR - If we could define a method in
OneOfBody
interface which could be used for typecasting betweenObjectA/ObjectB
andBody
then too the API method could accept the parameter and would process it