* Update csharp oneOf and anyOf mustache templates to accept primitive, object, and array types when deserializing
Add bug openapi spec
Remove generated files
Add test endpoints
Generate base on spec
Remove issue spec as it is moved into sample test spec
Add back in number and int
Round trip anyOf/oneOf serialization tests
Generate classes with int/num types
Do through converter instead of object ctor
Regen models
Use convert methods
Regen models
Test data
Add enum
Remove enums
Regenned models
* update sha256
* use new spec
* skip tests
* update workflow
* fix
---------
Co-authored-by: Ruben Aguilar <ruben.aguilar@forgeglobal.com>
* feat(client): support ability to disable boxed models
Add new additional property `avoidBoxedModels` which can be configured to avoid `Box<..>` of models.
It's very nice to have such config, because it doesn't make a lot of sense for really simple models.
* test: rollback config of existed test
* fix(rust): discriminator mapping to serde rename
Discriminator mapping has been ignored in some cases.
Even existing samples had wrong definition in some cases
This PR addresses this
* fix(rust): `oneOf` generation for client
Solves #17869 and #17896 and also includes unmerged $17898
Unfortunately it affects quite a lot of code, but we can see that only client-side models were affected by re-generation.
I tried to split this PR to several, but they're really coupled and hard to create a chain of PRs.
* fix: indentation in `impl Default`
* missing fixes
* fix: correct typeDeclaration with unaliased schema
* style: improve indentation for models
* fix: user toModelName for aliases of oneOf
* refactor: unify `getTypeDeclaration` for rust
* cover the case when `mapping` has the same `ref` for different mapping names
* test: add test for previous change
* style: remove extra qualified path to models
* add some comments
* fix(build): use method of `List` instead of specific for `LinkedList`
* add feature to generate only interface files
* generate sample
* add workflow file foe go gin service
* add workflow file foe go gin service
* add workflow file foe go gin service
* update samples
* fix(rust): simplify None logic
Used to be a code path (where isFreeFormObject and something else) where we could end up with two `: None` `: None`'s
This does add the None for the !required && !isArray && !isMap && !isNullable case (where nothing would have been printed before.
Above for the type on the individual vars inside the struct definition the logic is simply if not required then it's optional.
If it's optional we want a None when creating a new struct.
* ci: add tests for failure
Even though `title` is technically for the title of the API itself,
it's possible to set it for properties as well.
Right now, the `title` property is available in templates for regular properties,
but for ref-properties it gets lost right here.
This seemed rather surprising to me, so I think it's better to fix.
* [rust] basic oneOf support
Suport oneOf as a rust struct enum.
Details:
Enum without a discriminator is untagged being
"untagged" simply means serde won't attempt to
store the name of the enum inside the serialized
object. See
https://serde.rs/enum-representations.html#untagged
for more
Also check to make sure the mapping values
are not an empty object (aka null).
Co-authored-by: Nikita Puzankov <git@bshn.rs>
* refactor: fix clippy lints
No longer needed as of reqwest 0.10, it now takes the response as owned instead of mut ref.
Is not empty is more clear
* fix: discriminator and oneof case
Will show as a struct enum when there are additional fields, otherwise will be a tuple enum.
not sure the purpose of x-mapped-models, perhaps legacy code? mappedModels appears to do the same thing.
Also add default implementation for quality of life
* chore: update samples
---------
Co-authored-by: Nikita Puzankov <git@bshn.rs>
* Update model_generic.mustache, tuple notation breaks when there is only one element in the tuple
In this excerpt of the mustache template, the matching behaviour is bugged when there is only one element in the tuple notation. A single string with the tuple notation, e.g., `("string")`, will result in a string, and when values are compared with the string, it will do a `contains` match instead of an exact match, which is unintended behaviour.
* Update with samples, step 3
* Add test spec and regenerate samples
* Update samples
* Update spec and samples
* update samples
---------
Co-authored-by: Edmund Loo <edmundloo@users.noreply.github.com>
Co-authored-by: Edmund Loo <github.yn0u9@simplelogin.com>
* fix: handle variables that have items that contain a complexType of `time.Time` properly
Signed-off-by: Paul Horton <phorton@sonatype.com>
* chore: trigger new CI runs
Signed-off-by: Paul Horton <phorton@sonatype.com>
* test: added test change an regenerated samples
Signed-off-by: Paul Horton <phorton@sonatype.com>
* resolved merge issues with upstream main
Signed-off-by: Paul Horton <phorton@sonatype.com>
* regenerated samples
Signed-off-by: Paul Horton <phorton@sonatype.com>
---------
Signed-off-by: Paul Horton <phorton@sonatype.com>
* add lombok model support on spring
* use regex to adapt annotation with parenthesis
* add ut case
* add samples
* add samples
* fix github workflow
* fix github workflow
* Fixed invalid extraction of response body in kotlin-client jvm-spring-*
* Generated echo-api for kotlin-jvm-spring-3-restclient
* Specific echo-api for Kotlin without allOf/anyOf
* Specific echo-api for Kotlin without allOf/anyOf
* Generated all samples
* Added kotlin-jvm-spring-3-restclient sample to workflow
* Fixed syntax problem
The DefaultCodegen now iterates through all api operations.
This allows to access different examples based on the response per status code and content type.
When an example was specified for a property with the `date` format, it's example would be generated to something like `2024-01-01T00:00:00.000+00:00` or `Sat Jan 30 01:00:00 CET 2021`.
It's because the resolved type for a Date example is a DateSchema, and a DateSchema uses `java.util.Date` to represents the Date. Which gets printed using .toString() not in the YYYY-MM-dd format.
Fixes#17494#15342
* fix: ExampleGenerator correctly generates allOf composed schemas
Changes the previous behavior of generating `null` examples for allOf composed schemas.
Fixes#17497
* fix: ExampleGenerator correctly generates anyOf and oneOf composed schemas
Changes the previous behavior of generating `null` examples for anyOf and oneOf composed schemas.
To generate a oneOf/anyOf example, we generate the example using the first valid schema available. In case of a $ref, we use the first valid reference.
Fixes#17497