-
-
Notifications
You must be signed in to change notification settings - Fork 6.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] [spring][server] oneOf Polymorphism support for spring boot #5381
Comments
👍 Thanks for opening this issue! The team will review the labels and make any necessary changes. |
Line it's failing on DefaultCodegen.java#L5404 @bkabrda Any pointers on possible fix here? I assume SpringCodegen needs to postProcess the model in some way to configure the Base interface/class to use for each anyOf schema? Line 585 in ea55968
|
@dkirrane hey 👋 so in order to use the whole oneOf machinery I implemented, you'll need to do couple of things (your previous comment says "anyOf", but I think that's a typo and should have been "oneOf" - what I did only supports oneOf right now):
Let me know if this helps. Thanks! |
copy methods from OpenAPITools#5120 (oneOf support for jackson clients) to implement same in spring
generate oneOf Class that has all properties from inherited classes
fix property name of inherited model for oneOf fix imports for oneOf
create oneOf stuff only if useOneOfInterfaces is setted
catch NPE if no OneOf Schemas is setted
catch NPE if no OneOf Schemas is setted. merged from 5.0 branch [Rust Server] Support header objects (OpenAPITools#5337) [Rust Server] Support header objects Support operations with objects in the header [Rust Server] Support objects as query parameters (OpenAPITools#5338) - Support objects as query parameters - Update samples [Rust Server] Add support for untyped properties and models (OpenAPITools#5339) * [Rust Server] Add support for untyped properties * [Rust Server] Improve support for untyped data * Update samples [Rust Server] Support RFC 7807 (OpenAPITools#5407) * Support RFC 7807 - Problem Details for HTTP APIs * Add test for RFC 7807 * Update samples [Rust Server] Nullable fixes (OpenAPITools#5408) * [Rust Server] Nullable fixes * [Rust Server] Add tests for nullable cases * Update samples [Rust Server] Handle numeric response description (OpenAPITools#5452) * [Rust Server] Handle response descriptions which start with a number. * [Rust Server] Add test for numeric response descriptions * Update samples [Rust Server] Support numeric operation IDs (OpenAPITools#5453) * [Rust Server] Support operation IDs which begin with a number * [Rust Server] Add test for a numeric operation ID * Update samples [Rust Server] Support RFC 7386 (OpenAPITools#5454) * [Rust Server] Support RFC 7386 Support application/merge-patch+json as defined by RFC 7386 - https://tools.ietf.org/html/rfc7386 Handle exactly the same as application/json. * [Rust Server] Add test for RFC 7386 * Update samples [Rust Server] Suffix reserved words with _ (OpenAPITools#5455) * [Rust Server] Suffix reserved words with _ Suffix reserved words with an underscore instead of prefixing them. This follows convention in the Rust community, as prefixing with an underscore indicates an unused variable in Rust. * Update samples [Rust Server] Don't change API version (OpenAPITools#5458) Don't change the API version which is exposed in `crate::API_VERSION`. - If the API version isn't set, we don't expose it. - If it is set, we leave it well alone. - Always pass a package version: - Pass in the passed package version by preference - Pass in the API version if it's not. - If the API version isn't set, we use 1.0.0 - If it is set, and isn't a valid semver, we append .0 such that we have something with three digits (so that an API version of 1 works). [Rust Server] Support OpenAPI v3 callbacks (OpenAPITools#5405) * [Rust Server] Support Callbacks * [Rust Server] Support callbacks in the examples * [Rust Server] Update features documentation * [Rust Server] Mark as supporting callbacks * Update samples * [Rust Server] Add tests for callbacks * [Rust Server] Fix README Don't suggest examples which don't exist [Rust Server] Test allOf objects including base properties (OpenAPITools#5457) * [Rust Server] Add operationIds for rust-server-test * [Rust Server] Add test for allOf * Update samples [Rust Server] Make parse error Display-able (OpenAPITools#5490) * [Rust Server] Make parse error displayable Change error type to be displayable to prevent compile errors * [Rust Server] Add test for enum in path * Update samples
copy methods from OpenAPITools#5120 (oneOf support for jackson clients) to implement same in spring generate oneOf Class that has all properties from inherited classes fix property name of inherited model for oneOf fix imports for oneOf create oneOf stuff only if useOneOfInterfaces is setted
fixed format
added x-is-one-of-interface extension for oneOf interface in mustache template
fixed name of model from UNKNOWN_BASE_TYPE to right one in api: operationId + OneOf Fix OpenAPITools#5381 parcelableModel is not required
removed not needed methods
catch NPE cases in preprocessOpenAPI updated samples
fixed generation of oneOf Models
addOneOfInterfaceModel only for cases when useOneOfInterfaces is true and for spring
NPE fix
spring: fixed use of oneOf Models in API
implementing oneOf for spring lib overriding methods with different behavior from default
added x-is-one-of-interface extension for oneOf interface in mustache template
fixed name of model from UNKNOWN_BASE_TYPE to right one in api: operationId + OneOf Fix OpenAPITools#5381 removed not needed methods Fix OpenAPITools#5381 fixed generation of oneOf Models Fix OpenAPITools#5381 addOneOfInterfaceModel only for cases when useOneOfInterfaces is true and for spring Fix OpenAPITools#5381 NPE fix for tests
fixed handing of composed schema with array
fixed NPE in addOneOfInterfaceModel
fixed generation of oneOf models with descriminator
@bkabrda Hey! Do you know if there are any updates on this issue? It would be really nice to have this feature :) |
Hello @bkabrda !! Would be great if your java client oneOf interface behaviour is extended to all java generators ... |
Description
Currently, openapi-generator doesn't support
oneOf
. It currently generates the following broken code, outputtingUNKNOWN_BASE_TYPE
rather thanPet
for the example below.The code is broken with or without the
discriminator
in the Spec.openapi-generator version
pom.xml
OpenAPI Spec
api.yaml
Command line used for generation
Steps to reproduce
pom.xml
with openapi-generator-maven-plugin 4.2.3api.yaml
file abovemvn clean compile
\target\generated-sources\openapi\src\gen\java\main\org\openapitools\api\PetsApi.java
Related issues/PRs
This bug is related to the Server side Java code (SpringBoot)
@bkabrda has already merged PR for client Jackson Client side: #5120
Suggest a fix
Try apply client side fix from #5120 to server side.
The text was updated successfully, but these errors were encountered: