Compare commits

..

345 Commits

Author SHA1 Message Date
William Cheng
19eeebf083 add refresh token setting, use oauth_client_secret instead 2022-08-15 02:11:45 +08:00
William Cheng
c4dd42e7a0 fix r model validations, add tests (#13181) 2022-08-15 00:27:10 +08:00
William Cheng
9e20b01b12 [R] allow oauth scopes customization, remove unused import (#13179)
* add oauth scopes, remove unused import

* fix null check
2022-08-14 22:50:36 +08:00
William Cheng
1f42b09b33 fix issues reported by roxygen in r client (#13176) 2022-08-13 12:23:49 +08:00
William Cheng
123f92d136 add validations to R models (#13157) 2022-08-12 17:09:36 +08:00
William Cheng
456d7d0159 Add tests to Rust (hyper, reqwest) clients (#13165)
* add tests to rust clients

* add new file
2022-08-12 13:50:32 +08:00
Justin Black
8cd0d38446 Adds $ref data to schema classes (#13163)
* Adds getRef/setRef

* Adds ref to CodegenModel

* Adds ref to CodegenProperty

* Adds ref to CodegenParameter

* Adds ref to CodegenResponse

* Sets ref on CodegenModel and CodegenProperty

* Samples regenerated
2022-08-11 12:57:00 -07:00
Elric Milon
7fede83a56 Fix template for nullable models in rust new() fns (#10778)
Co-authored-by: Elric Milon <whirm@gmx.com>
2022-08-12 00:38:51 +08:00
Ewoud Kohl van Wijngaarden
9abaa53db1 Replace use of deprecated Faraday::UploadIO (#13127)
Faraday 0.16.0 added Faraday::FilePart as an alias to Faraday::UploadIO
and deprecated Faraday::UploadIO. In Faraday 2.0 the deprecated UploadIO
was removed.

Fixes: e12100b033
2022-08-11 15:18:39 +08:00
Jacob Peterson
c987e75f92 Fix missing import in api.mustache for Typescript generator (#13105)
* Fix missing import in `api.mustache` for Typescript generator

This fixes issue OpenAPITools/openapi-generator#11288.

* Generate samples
2022-08-11 08:27:52 +02:00
William Cheng
c5a0374d2b [Ruby] add useAutoload option to use autoload instead of require (#13153)
* [Ruby] Use Ruby autoload to lower memory usage and load times

Fixes #12648

Requiring all models up front can be very expensive in both time and
memory if there are many models. In an example client with 6000 models,
this would consume nearly 400MB of memory and take about 7 seconds to
load. This is mostly unnecessary as most users of the client library
will only actually use a small percentage of the library.

The changes in this commit use Ruby's autoload capability to defer the
loading until the constant is actually used. In that same example client
with 6000 models, when initially requiring the library, the memory
usage dropped to ~20MB and loaded in 0.3 seconds. As the constants are
loaded on-demand, the memory would increase towards that 400MB ceiling,
but if only a few constants are actually used, then memory will never
actually hit that ceiling.

An additional side effect of using Ruby's autoload is that the order of
declaring the constants is not important, as Ruby will naturally load
them in the correct order when they are needed. Thus, this commit obviates
PR #9103 and fixes #4690.

* add option to use autoload in ruby client

* test ruby clients only

* add tests

* update samples

* Revert "test ruby clients only"

This reverts commit 0aaf71cd4c.

* update doc

Co-authored-by: Jason Frey <fryguy9@gmail.com>
2022-08-11 12:45:13 +08:00
William Cheng
5662d6136f update samples 2022-08-11 10:39:34 +08:00
thrykol
e58b8b14c3 Cleaned up cargo clippy warnings (#13011)
* Cleaned up cargo clippy warnings

* Re-add clippy allow statements; don't lowercase variable names
2022-08-11 10:29:08 +08:00
shubham-lakhiwal
91e8fcbd38 [Typescript-axios] Dot prefix on every query parameter (#13149)
* [#12887] dot prefix fixed for pr #13051

* [#12887] dot prefix fixed for pr #13051

* [#12887] review comment incorporated #13051
2022-08-10 22:04:46 +02:00
shubham-lakhiwal
d547a89f4e [#12887] typescript-axios: nested object as query parameter (#13051)
* [#12887] typescript-axios: object as query parameter resolved

* Added samples for typescript-axios

* minor variable name change

* minor indentation fixes

* [OpenAPITools#12887] typescript-axios: backward compantiability maintained

* [OpenAPITools#12887] typescript-axios: backward compantiability maintained

* [OpenAPITools#12887] typescript-axios: backward compantiability maintained

* [#12887] Review comments incorporated

Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>

* Review comment incorporated

Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>

* [#12887] samples updated

Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>
2022-08-10 15:33:07 +02:00
William Cheng
1c0d6d84d8 [Go] Fix missing import for array/map of file (#13143)
* fix missing import for array/map of file in go client

* add new files
2022-08-10 16:26:10 +08:00
William Cheng
a6ce5f711b Better logic to handle duplicated properties in parent, child models (#13135)
* better logic to handle duplicated properties in child, parent models

* add tests, update samples
2022-08-10 14:15:25 +08:00
William Cheng
fd56b8f26b [Java] enum space value must not be generated as underscore (#13136)
* [Java] enum space value must not be generated as underscore

as this is invalid in Java 9

this closes #9607

* script changes

Co-authored-by: Sven Meier <sven@meiers.net>
2022-08-09 11:05:27 +08:00
Laurens-W
9a04113258 Allow useInlineModelResolver to be influenced by generator options (#13056)
* Move logic so that it can dynamically be influenced by opts

* Or should it be here?

* We handle the useInlineModelResolver logic in configureGeneratorProperties after processOpts

Co-authored-by: Westerlaken, H.L. (Laurens) <laurens.westerlaken@devolksbank.nl>
2022-08-08 16:04:13 -07:00
Justin Black
9610a81a13 Adds requiredVarsMap (#13117)
* Adds requiredVarsMap

* Fixes imports

* Adds requiredVarsMap to CodegenParameter

* Updates CodegenResponse

* Adds feature to codegenModel

* Fixes codegenProperty

* Switches to getRequiredVarsMap

* Uses curly braces for set definition

* Added blocked examples back n to test spec now that the required bug is fixed

* Sample regenerated

* Handles escaping required property names

* Fixes CI tests

* Samples regenerated

* Samples regnerated

* Fixes test
2022-08-08 09:47:43 -07:00
lsalgo
186ad25cee fix: [JAVA/SPRING] [#12692] fixed optional config property legacyDisc… (#12713)
* fix: [JAVA/SPRING] [#12692] fixed optional config property legacyDiscriminatorBehavior always being overwritten to false in spring codegen

* feat: [JAVA/SPRING] [#12692] spaces instead of tabs

* feat: [JAVA/SPRING] [#12692] spaces instead of tabs in test

* fix: [JAVA/SPRING] [#12692] added comment

* fix: [JAVA/SPRING] [#12692] spaces instead of tabs

* fix: [JAVA/SPRING] [#12692] spaces instead of tabs in test
2022-08-09 00:06:28 +08:00
fbl100
d3dd676960 Issue 13043: Improved handling of recursive schemas (#13109)
* Issue 13043: Improved handling of recursive schemas

Converted Exception to a warning when a Schema is doubly added to the includedSchemas list
Broke recursion in a more reasonable place when generating example values

* Addressed comments from PR
2022-08-08 08:39:17 -07:00
RomainPruvostMHH
032e1a42d6 [Spring] Fix generated api ignore basePath (#10573)
* remove @RequestMapping from the apiController.mustache file and add it
to the api.mustache file

* move the defaultBasePath.mustache file in src/main/resources/JavaSpring
so that it commun with all Spring server-side libraries (spring-boot,
spring-mvc). The value of default context path is the value of
contextPath variable.

* added a unit test to verify it

* update the outputDir variable to samples/server/petstore/spring-stubs in
the  bin/configs/spring-stubs.yaml file because it generates Spring
server-side classes. And not on the client-side as the output directory
seemed to suggest.

* Results of "generate-samples.sh bin/configs/spring*" command

* Remove default value of url in @FeignClient

* resolve conflicts with origin/master

* merge remote/master into branch

* fix samples after a merge with master

* delete the directory samples/client/petstore/spring-stubs because it
moved to samples/openapi3/...

* add samples/client/petstore/spring-stubs just for the CI build (normally
it is unnecessary))

* delete 3 kotlin class files commited by error in
samples/server/petstore/kotlin-springboot and
samples/server/petstore/kotlin-springboot-reactive

* Update the unit test SpringCodegenTest.doAnnotateDatesOnModelParameters
because one more annotation is generated (@RequestMapping)

Co-authored-by: rpruvost <rpruvost@ITEM-S78402.emea.msad.sopra>
Co-authored-by: rpruvost <rpruvost@ITEM-S78402>
Co-authored-by: rpruvost <rpruvost>
2022-08-08 15:43:23 +08:00
William Cheng
3c4948ac08 skip client id, secret validation to allow multiple auth schemas (#13126) 2022-08-08 01:39:07 +08:00
William Cheng
fb29284a99 improve r regular expression handling (#13125) 2022-08-08 00:56:43 +08:00
William Cheng
f287dde875 [R][httr2] better support for OAuth authoriziation flows (#13123)
* better oauth support in r client

* better comment

* update samples

* remove commented code

* update samples

* fix mustache tag
2022-08-07 21:49:04 +08:00
y-tomida
5644e23128 [Kotlin] Add reserved word contract (#13108) 2022-08-07 09:50:47 +01:00
Linus Klöckner
fca13eb9e9 [csharp-netcore] Form data serialize non-primitive objects (#12967)
* csharp-netcore: serialize non-primitive objects in form-data

* csharp-netcore: update samples
2022-08-06 21:59:06 +08:00
William Cheng
d3a268924f better validation for r parameters (#13119) 2022-08-06 21:06:39 +08:00
AnaTofuZ
462f927b87 Fix Perl cannot string bind undef (#13114)
* fix and add perl client tests

* fixed undefined value in Perl

* update perl client sample

* fix test case
2022-08-06 21:05:37 +08:00
William Cheng
f73decb0f0 update test file sha256 2022-08-06 18:46:13 +08:00
William Cheng
35feca98cf fix test 2022-08-06 16:34:21 +08:00
Krzysztof Łabuś
641d5159eb C# API Client CancellationToken, Base Validation and Nullable/Required (#13049)
* Ensure CancellationTokenSource disposal in CSharp clients

* Fixed broken BaseValidate in CSharp models

* Ensure final CancellationToken is used in CSharp API clients

* Ensure EmitDefaultValue true for required properties in CSharp clients

* Regenerated samples

* Fixed broken C# ApiClient.ExecAsync disposable resources
2022-08-06 16:33:18 +08:00
William Cheng
f5900c7015 [R] fix auto-generated doc, add checks for bearer/access token (#13112)
* update readme to show bearer auth

* fix doc

* fix doc
2022-08-06 16:32:18 +08:00
William Cheng
247574aa0c fix assignment, clean up tests, use !!! operator (#13075) 2022-08-05 14:09:24 +08:00
Max K
a4a89caf73 Added parameter to add models in seperate project (#13044)
Samples and build for seperate model projects
2022-08-05 13:46:58 +08:00
Justin Black
aa1b0a15da [python-experimental] removes print (#13107)
* Removes print

* Samples regenerated
2022-08-04 17:04:03 -07:00
Justin Black
8c3a734c64 [python-experimental] moves model and api docs into subfolders (#13106)
* Regens docs in new locations, adds endpoint anchors

* Updates readme links and top of page link

* Model updates so the readme links work

* Samples regenerated

* Adds missing module names to apis and models
2022-08-04 14:03:21 -07:00
Justin Black
69121a9b8f 3.0.3 spec updated with json schema tags (#13104)
* Spec updated with json schema tags

* Samples regenerated
2022-08-04 12:14:06 -07:00
William Cheng
cdc9683331 [jaxrs-spec] to fix default values for array (#13076)
* fix 13025 with correct default values for array

* fix missing curly bracket
2022-08-05 00:13:22 +08:00
Justin Black
a3490d7379 Revert "Issue 13043: converted an exception to a warning" (#13074)
* Revert "Issue 13043: converted an exception to a warning for doubly adding schemas to the includedSchemas list (#13070)"

This reverts commit bbf463f727.

* Samples regen
2022-08-03 13:22:32 -07:00
William Cheng
0d50b4044f fix TS model tests in Windows (#13072) 2022-08-04 01:24:15 +08:00
plotbox-io
4fa427c653 Update php-symfony/model_variables.mustache to fix template bug (#13060) (#13061) 2022-08-04 01:12:40 +08:00
jiangyuan
72991e6be3 [Java] apache-httpclient serialize support custom contentType (#13058)
* java http-client multiPartBuilder support custom contentType for textBody

* java apache-httpclient serialize support custom contentType

* modify getContentType method
2022-08-04 00:41:18 +08:00
Thomas Hansen
1e3a39b460 [PHP] Add support for server variables in operations (#12982)
* [FEATURE] Support for server variables in operations

* [AUTOGENERATED] update samples

* [PHP] Added tests for server variables in operations
2022-08-04 00:15:51 +08:00
dependabot[bot]
c9c0b6267f Bump eventsource from 1.0.7 to 1.1.1 in /website (#12499)
Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.0.7 to 1.1.1.
- [Release notes](https://github.com/EventSource/eventsource/releases)
- [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
- [Commits](https://github.com/EventSource/eventsource/compare/v1.0.7...v1.1.1)

---
updated-dependencies:
- dependency-name: eventsource
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-04 00:13:53 +08:00
dependabot[bot]
ab9af4c7b2 Bump terser from 4.6.3 to 4.8.1 in /website (#12946)
Bumps [terser](https://github.com/terser/terser) from 4.6.3 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-04 00:13:38 +08:00
Flux Xu
6d1c51c95b [rust] fix incorrect Cargo.toml generated when supportAsync & withAWSV4Signature are both enabled. (#13015) 2022-08-04 00:11:08 +08:00
William Cheng
13d34b9b63 [R][httr2] Fix form parameter support (#13057)
* fix form parameter support in the r client

* fix query param

* fix form parameters
2022-08-03 23:45:12 +08:00
fbl100
bbf463f727 Issue 13043: converted an exception to a warning for doubly adding schemas to the includedSchemas list (#13070) 2022-08-03 08:18:03 -07:00
fbl100
4da8176b04 [python experimental] Issue 13043: fixes toExampleValueRecursive stackoverflow (#13062)
Fixes an issue in python-experimental that was causing a stackoverflow
error.

* Fixed by adding composed schemas to the list of 'includedSchemas'
* Fixed an additional issue that was causing a schema to be added to the
'includedSchemas' list
* Added a unit test with a minimal GeoJson spec to confirm results
2022-08-03 07:28:33 -07:00
William Cheng
aa1f6276f3 [R][httr2] fix HTTP header (#13066)
* add test for header parameters

* fix header parameter in r httr2 client
2022-08-03 15:05:39 +08:00
William Cheng
e0fca517cc update samples 2022-08-03 11:56:36 +08:00
William Cheng
d8771de9c1 fix query param, fix spec (#13065) 2022-08-03 11:49:34 +08:00
Marco Martinelli
1cf9d178d6 Update tsconfig.mustache (#12753)
Fix #12728
2022-08-02 12:26:00 +02:00
Justin Black
c959a6cf38 [python-experimental] Fixes issue 12986 (#13054)
* Adds fix for api names and tag names

* Removes sample spec

* Samples regenerated
2022-08-01 15:17:25 -07:00
Justin Black
68fb5a96c5 [python-experimental] consolidates endpoints into paths module (#13007)
* Adds endpoint creation in path modules

* REgens samples

* Adds BaseApi so there can be 2 class interfaces for http method and operationid

* Adds paths init

* Adds enum containing paths

* Uses path enum for endpoint paths

* Adds camel case to undersce converstion in to ineum var name

* Fixes path enum generation

* Moves path api combination module into apis

* Moves tag apis into a tags module

* Adds path_to_api

* Changes module path to paths

* Fixes tag api imports

* Fixes self type in endpoint methods

* Adds test changes

* Adds tag enum

* Adds tag_to_api

* Adds missing tag

* Fixes self types in endpoint methods

* Refactors java endpoint generation to be simpler

* Further refactors generateEndpoints

* Generates one test file per endpoint

* Updates v3 samples

* Fixes endpoint tests, all tests passing now

* Samples regenerated

* Fixes petstore tests

* Generates separate endpoint test methods on each endpoint

* Fixes api docs and enum string values in those docs

* Regenerates samples

* Removes pass to fix tests
2022-08-01 11:22:35 -07:00
William Cheng
4635dda518 [R] Add httr2 support (work in progress) (#13005)
* add httr2 support to r client gen

* fix headers

* add accepts, content-types

* update samples

* fix req

* update samples

* various fixes

* add data file test

* fix streaming, add tests
2022-08-01 00:58:19 +08:00
William Cheng
6b6403b2bf enhance api exception in r client (#13046) 2022-07-31 16:20:39 +08:00
William Cheng
054264df90 [R] refactor the client to prepare additional HTTP library support (#13045)
* remove httr functions from api files

* fix comments
2022-07-31 10:52:57 +08:00
Max K
c81a63fd7a [aspnetcore] Added parameter to generate models in a seperate csproj (#13024)
* Added parameter to add models in seperate project

* Update samples

* refactored ELSE
2022-07-30 15:35:56 +08:00
Yohei Kitamura
6a3226d004 [Ruby] Remove configuring verbose option from Faraday template (#13037) 2022-07-30 15:30:10 +08:00
HappyFeedFriends
79c5091de4 [Typescript] Fix generated type for files (#12831)
* fix file types

description problem in: https://github.com/OpenAPITools/openapi-generator/issues/12744

* fix: generate
2022-07-28 16:53:54 +02:00
William Cheng
e5e4e8fc07 throw exception if username, password is not set in http auth in r client (#13035) 2022-07-28 17:06:52 +08:00
William Cheng
c905760898 fix query, header params (#13034) 2022-07-28 16:31:12 +08:00
uesyn
bc65be4c9a [typescript] typescript client generator supports import mapping (#12957)
* support import mapping

* Remove unused imports

* Remove unused variable

* Not to clear importMapping

* Re-generate samples

* Use same model import path everywhere

* Move import mapping logic from toModelImport method

Co-authored-by: Bodo Graumann <mail@bodograumann.de>
2022-07-27 17:09:27 +02:00
Pierre-Quentin Warlot
6226dc2848 fix issue content-type default charset (#13009) 2022-07-27 19:01:45 +08:00
William Cheng
e811d6bbe2 prefix local variables in api functions in r client (#13018) 2022-07-26 19:20:23 +08:00
William Cheng
adf7062e63 add support for accept, content-type headers in r client (#13017) 2022-07-26 17:19:23 +08:00
Bruno Coelho
87dc75780a [kotlin][client] add support for unknown default case with Kotlinx Serialization (#12930)
* [kotlin][client] Kotlinx Serialization cleanup

* [kotlin][client] Kotlinx Serialization cleanup

* [kotlin][client] add support for unknown default case with Kotlinx Serialization

* [kotlin][client] add support for unknown default case with Kotlinx Serialization

* [kotlin][client] add support for unknown default case with Kotlinx Serialization

* [kotlin][client] improve Kotlinx Serialization naming

* [kotlin][client] improve Kotlinx Serialization naming
2022-07-26 09:42:19 +01:00
William Cheng
bc98014146 Add auto-generated .swiftformat to Swift clients (#13002)
* add .swfitformat to swift client

* minor format change
2022-07-26 11:21:53 +08:00
Justin Black
2b9a1ad0fc [python-experimental] Consolidates model tests into a subfolder (#13006)
* Consolidates model tests into a subfolder

* Regenerates samples
2022-07-24 14:02:34 -07:00
Justin Black
30f1f11205 [python-experimental] Adds response body tests for json content type (#12988)
* Tags renamed

* Spec updated to add response bodies

* Adds correct tag to response body routes

* Adds response body autogen tests

* Adds pos test cases, removes dead code

* Adds and uses api_test_partial

* Samples regenerated
2022-07-24 12:33:23 -07:00
Bogdan Ilchyshyn
96b7d35e97 fixing FetchError to be compatible with esnext (#13004)
closes #12927
2022-07-24 14:09:27 +02:00
William Cheng
b6ca40031a fix issue when discriminator property is an enum string (#13001) 2022-07-24 17:55:08 +08:00
y-tomida
3eb3337c2b [typescript] Don't throw exception when additionalProperties is set to true (#13003)
* use DefaultCodegen#getSchemaAdditionalProperties instead of Schema#getAdditionalProperties

* add testcase

* fix comment
2022-07-24 09:48:00 +02:00
William Cheng
7649f659c4 add model caching to php generators (#12997) 2022-07-24 09:20:31 +08:00
William Cheng
86882e01ee add model caching to kotlin generators (#12998) 2022-07-24 09:19:47 +08:00
William Cheng
3ac88e95ed Add option to customize operationId in R client (#13000)
* add option to customize operationId in r client

* update doc
2022-07-24 09:19:18 +08:00
Thomas Hansen
7c7ac2f0d3 [PHP] double curly braces bugfix (#12999)
* [PHP] Small bugfix: fix punctual double curly bracket usage, to make it consistent with the code around

* [AUTOGENERATED] update samples
2022-07-24 09:18:48 +08:00
Ruben Fiszel
0b31bd4705 [Typescript] Support text/plain by ObjectSerializer.parse (#12888)
* [Typescript] Support text/plain by ObjectSerializer.parse

* generate-samples

* update samples

* clean up spaces

Co-authored-by: William Cheng <wing328hk@gmail.com>
2022-07-23 20:38:36 +08:00
William Cheng
fe8fbaf923 [Rust Server] Generate operations where tags require sanitization (#12996)
* [Rust Server] Render operations for sanitized tags

* [Rust Server] Add test for sanitized tags

* Update samples

Co-authored-by: Richard Whitehouse <richard.whitehouse@metaswitch.com>
2022-07-23 14:25:05 +08:00
William Cheng
a87da6ad3c update undertow to newer version (#12994) 2022-07-23 14:07:15 +08:00
William Cheng
5cf1ba3841 add additonal dependencies for xml in resttemplate (#12995) 2022-07-23 14:06:09 +08:00
William Cheng
ee8566260c [JAVA] Generated api client doesn't work for plain text body types (#12993)
Co-authored-by: Ilya Kuchmin <kuchmin@haulmont.com>
2022-07-23 13:07:26 +08:00
Vladimir V. Bychkov
434464c898 dateLibrary java8 does works now with xml (#8444)
Co-authored-by: v.bychkov <v.bychkov@betterbits.de>
2022-07-23 12:39:28 +08:00
eoghanbdoyle
153cfeb7ae Fix crash in extractBodyContent when using large headers (#10636)
If you send a request with a body and a header greater than 255 characters long there will be an exception. The session->fetch will not return the body in the synchronous way expected.
2022-07-23 12:27:11 +08:00
Tristan Lins
2e6cdb5196 [typescript-fetch] Convert dates only if target type is a Date (#11685) 2022-07-23 11:45:36 +08:00
Mauro Valota
ea7a319a65 [java] fixed pojo template for nullable fields (#12630)
* [java] fixed pojo template for nullable fields

* regenerated samples
2022-07-23 11:19:48 +08:00
Oleh Kurpiak
9f2f36c4fb [Java][WebClient] return ResponseSpec to manually control response handling (#12843) 2022-07-23 10:20:06 +08:00
Thomas Hansen
c0ad6357df [PHP] ObjectSerializerTest: add tests for ObjectSerializer::deserialize() associative arrays bugfix (#12989)
* [PHP] ObjectSerializerTest.php: code cleanup

* [PHP] ObjectSerializerTest.php: added tests for ::deserialize() associative arrays bugfix - related to PR #12849
2022-07-23 10:07:21 +08:00
William Cheng
6c9cd65e73 add model caching in perl client gen (#12992) 2022-07-23 09:19:24 +08:00
Thomas Hansen
4c2fb932d0 Small adjustment to Contributing Guidelines (#12984) 2022-07-23 09:02:01 +08:00
William Cheng
00ef7a8590 add schema mapping support to perl (#12991) 2022-07-23 08:56:47 +08:00
Thomas Hansen
219b32b543 [PERL] Fix bug on test script (#12983) 2022-07-23 08:56:24 +08:00
Bruno Coelho
c03cf178c9 [swift][client] reduce unnecessary public api (#12975)
* [swift][client] reduce unnecessary public api

* [swift][client] reduce unnecessary public api
2022-07-23 08:39:34 +08:00
Max K
08c4a35162 [aspnetcore] Added dotnet outdated to READMEs (#12981)
* Added dotnet outdated to READMEs

* Update samples
2022-07-23 08:37:17 +08:00
RoccoShi
a4ea593c3f add a link to blog post (#12980)
I tried to write a minimal example of java client and server based on openapi-generator-maven-plugin.

[project](https://github.com/Lincest/openapi-generator-maven-plugin-demo) and [blog](https://blog.roccoshi.top/2022/java/openapi-generator%E7%9A%84%E4%BD%BF%E7%94%A8/)
2022-07-22 13:32:03 +08:00
William Cheng
e4b268613c [R] fix assignment, better doc (#12979)
* better code format

* fix doc comment, remove blank line

* ignore .lintr in rbuildignore
2022-07-22 13:08:01 +08:00
William Cheng
0ce606c7c5 add a link to blog post 2022-07-22 10:43:36 +08:00
William Cheng
6e6c2f9a0e add http basic test in r client (#12978) 2022-07-22 10:01:48 +08:00
William Cheng
f26985c239 add http bearer auth support to R client (#12974) 2022-07-22 09:44:05 +08:00
Justin Black
d1c2230709 v303 unit test spec, adds post json request bodies (#12875)
* Adds post request body routes and test data to spec

* Sample regenerated

* Adds tags and post endpoints

* Uses refs to tests examples in requestBodies

* Stops passing in test_examples into generate_operation

* Adds testCases to MediaType

* Adds refs to test cases in media type

* Adds post request body examples

* Fixes enum 1 ingestion of 1.0

* Only generates test examples when they exist

* Regenerates samples
2022-07-21 15:34:49 -07:00
Ry Bobko
1b6069f984 [Typescript-Angular] Handle runtime-generated injected BASE_PATH in Typescript-Angular services (#12936)
* handle array of strings for basePath

* handle string[] for basePath when generated from APP_INITIALIZER

* updated samples

* updated samples
2022-07-21 16:41:31 +02:00
Paul Hagedorn
298ccfcfd8 [typescript-nestjs] Upgrade to NestJS v8 (#12937)
* feat(typescript-nestjs): upgrade to nestjs v8

Set default nestVersion to 8.0.0

* chore(typescript-nestjs): create typescript-nestjs-v8-provided-in-root.yaml and add it to samples.json

* chore(typescript-nestjs): generate samples

* docs(typescript-nestjs): generate docs

* chore(typescript-nestjs): re-generate samples
2022-07-21 13:41:32 +02:00
William Cheng
eeb1711f9f Add support for string response deserialization (#12964) 2022-07-21 15:18:59 +08:00
William Cheng
17ba8304b6 Update swashbuckle version to 6.4.0 (#12965)
* update swashbuckle to newer version

* use newer version of swashbuckle for all aspnet versions
2022-07-21 15:10:32 +08:00
William Cheng
c26e19cbc0 Revert "Add support for string response deserialization (#12910)"
This reverts commit b8524bee23.
2022-07-21 12:58:46 +08:00
Emanuele Saccomandi
b8524bee23 Add support for string response deserialization (#12910)
* Add support for string response deserialization

* updated samples

* updated samples

* realigned to master

* fix: errors were not getting thrown

* updated samples

* fix: errors were not getting thrown

* updated samples
2022-07-21 12:45:50 +08:00
Martin Delille
cf58ac0583 [cpp-qt-client] Minor fixes (#12951)
* foreach => for

* Fix PetStore.pro

* Whitespace formatting
2022-07-21 12:03:22 +08:00
Max K
17c021df5b Added support for inheritance in Swashbuckle in ASP.NET Core (#12856)
* Added support for inheritance in Swashbuckle

* Updated to new API
2022-07-21 11:44:46 +08:00
William Cheng
2248baa5ea add schema mapping support to ruby client generator (#12962) 2022-07-21 11:38:27 +08:00
William Cheng
f898b072ba add model caching to ruby client generator (#12961) 2022-07-21 11:22:41 +08:00
Yohei Kitamura
9b154bb437 [Ruby] Enhance Faraday middleware support (#12873) 2022-07-21 11:01:14 +08:00
Paul Hagedorn
33ec914e6a fix(typescript-nestjs): initialize queryParameters in Service if auth uses apikey but has no other query parameters (#12940) 2022-07-20 19:33:09 +02:00
William Cheng
05f4792df7 [csharp-netcore] fix OAuth2 integration when using httpclient library (#12954)
* Update RestSharp to v108

* Add OAuth2 Application (client_credentials) authentication

* Run generators and fix typos

* Undo accidental python and rust changes

* Add documentation, fix authenticator bug, and fix user agent bug

* Fix tests

Missed some changes in the mustache templates.
Also had to update the `netcoreapp2.0` test project to `netcoreapp3.1` for compatibility with RestSharp

* Switch HttpUtility to WebUtility for compatibility

* skip oauth file generation for httpclient

* fix templates

* remove files, regenerate samples

* add reference to system.web

Co-authored-by: Jared Bates <Jared.Bates@sight-sound.com>
2022-07-20 20:30:56 +08:00
Jared Bates
2dcc319e13 [csharp-netcore] Update RestSharp and add client_credentials auth support (#12789)
* Update RestSharp to v108

* Add OAuth2 Application (client_credentials) authentication

* Run generators and fix typos

* Undo accidental python and rust changes

* Add documentation, fix authenticator bug, and fix user agent bug

* Fix tests

Missed some changes in the mustache templates.
Also had to update the `netcoreapp2.0` test project to `netcoreapp3.1` for compatibility with RestSharp

* Switch HttpUtility to WebUtility for compatibility
2022-07-20 19:25:29 +08:00
William Cheng
6d44f97d6c Add tests for spring boot with implicit headers but no annotation library (#12943)
* add tests for spring boot with implicit headers but no annotation library

* test in workflow

* update samples
2022-07-20 14:11:45 +08:00
Cédric Thireau
0a0a8cffd6 Fix spring implicitHeaders w/o annotationLibrary (#12921)
Fix erroneous code generation when `implicitHeaders=true` and `annotationLibrary=none`
2022-07-20 11:42:49 +08:00
William Cheng
322f617d33 add schema mapping to powershell generator (#12934) 2022-07-20 11:10:27 +08:00
William Cheng
e2b1ed3dfc add schema mapping to r client (#12933) 2022-07-20 11:09:56 +08:00
devhl-labs
92193f7159 Adds isInnerEnum to CodegenProperty (#12860)
* added nonNullableVars

* added return property to operation

* added return property to operation

* build samples

* added inner enum

* build samples

* added a comment
2022-07-20 01:41:17 +08:00
Bruno Coelho
8d62e597ae [kotlin][client] Kotlinx Serialization code formating (#12922)
* [kotlin][client] Kotlinx Serialization cleanup

* [kotlin][client] Kotlinx Serialization cleanup
2022-07-19 14:05:17 +01:00
Bruno Coelho
1a5b5924ed [Swift][client] update samples (#12923) 2022-07-19 14:03:12 +01:00
Marcus Handte
8fded5c47e Fix npe when unwrapping optional. (#12882) 2022-07-19 12:11:11 +01:00
stropho
f176716a61 [typescript-axios] avoid stringifying header string values (#12919)
* feat(typescript-axios) don't stringify string headers

* samples
2022-07-19 09:55:34 +02:00
William Cheng
b722fd9063 cache the model name for faster lookup in r client gen (#12918) 2022-07-19 14:12:55 +08:00
William Cheng
d2be711669 powershell: cache model name for faster lookup (#12917) 2022-07-19 14:12:36 +08:00
Akhil Nair
259221ab25 This PR adds memoization to Java **toModelName()** method. (#12909)
### PR checklist

- [x] Read the [contribution guidelines](https://github.com/openapitools/openapi-generator/blob/master/CONTRIBUTING.md).
- [x] Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
- [x] Run the following to [build the project](https://github.com/OpenAPITools/openapi-generator#14---build-projects) and update samples:
  ```
  ./mvnw clean package
  ./bin/generate-samples.sh
  ./bin/utils/export_docs_generators.sh
  ```
  Commit all changed files.
  This is important, as CI jobs will verify _all_ generator outputs of your HEAD commit as it would merge with master.
  These must match the expectations made by your contribution.
  You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example `./bin/generate-samples.sh bin/configs/java*`.
  For Windows users, please run the script in [Git BASH](https://gitforwindows.org/).
- [x] File the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master` (6.1.0) (minor release - breaking changes with fallbacks), `7.0.x` (breaking changes without fallbacks)
- [x] If your PR is targeting a particular programming language, @mention the [technical committee](https://github.com/openapitools/openapi-generator/#62---openapi-generator-technical-committee) members, so they are more likely to review the pull request.

This PR greatly reduces the time taken for Java code generation.
**toModelName()** method is invoked numerous times and it was accumulating a lot of time.

This has reduced the Java SDK generation time for our rather large open API spec from ~3h30m hours to 4 mins.

The generated code is the same as before.

spec: https://cdn.intersight.com/components/an-apidocs/1.0.11-7546/model/intersight-openapi-v3-1.0.11-7546.yaml

@wing328
2022-07-19 11:48:32 +08:00
William Cheng
b88666b87a add uuid test, better hyper test (#12916) 2022-07-19 11:22:29 +08:00
Taufik Rama
4ee336a9da [Rust] Changed 'UUID' handling into 'uuid' crate (#12895)
* [Rust] Changed 'UUID' handling into 'uuid' crate

* [Rust] updated 'samples/'
2022-07-19 11:03:53 +08:00
Jaemin Park
ed4ed3923f [cpp-ue4] Fix GET request writes body (OpenAPITools#12833) (#12904)
Co-authored-by: nullbus <nullbus@nm-fc.com>
2022-07-18 17:14:18 +08:00
William Cheng
2e0a121205 add decimal support to crystal cilent (#12899) 2022-07-18 17:01:36 +08:00
William Cheng
eb471db7c9 [R] fix a couple warnings reported by lintr (#12903)
* better code format in r client

* update code based on lintr

* update samples
2022-07-17 23:49:37 +08:00
William Cheng
da28e12017 update samples 2022-07-17 23:08:08 +08:00
William Cheng
e05b9746ea [R] Add lintr (#12902)
* add lintr

* update samples
2022-07-17 17:29:05 +08:00
William Cheng
7216899fe6 Add tests for aspnet core 6.0 pocoModels (#12900)
* add tests for aspnet core 6.0 pocoModels

* update workflow
2022-07-17 16:07:41 +08:00
Max K
d2294d2eca Updated mustache templates, generator and docs (#12848) 2022-07-17 15:51:05 +08:00
William Cheng
83473eb735 Test Perl client in Travis CI (#12898)
* test perl client in travis

* fix pom
2022-07-17 14:46:49 +08:00
William Cheng
f05dd12b43 add decimal mapping in perl client gen (#12897) 2022-07-17 13:10:53 +08:00
AnaTofuZ
75895e18bc Perl: Fix JSONization of ArrayObjects (#12896)
* Perl: fix object to json

* generate samples

* add test case
2022-07-17 12:50:39 +08:00
William Cheng
0b80444b56 fix circular reference in inline model (#12894) 2022-07-17 12:43:40 +08:00
William Cheng
bdd54dacad Fix parameter schema mapping (#12893)
* fix parameter schema mapping,refactor unaliasSchema

* minor code format change
2022-07-17 12:43:00 +08:00
AnaTofuZ
a9e63f4ce3 Perl: Type coercion for the JSON conversion part of Perl (#12891)
* Perl: separate date and DateTime

- Since the json values to be returned are different for date and DateTime, they are managed separately

* Per: Enforcing Perl types to openAPI types

Perl JSON values return different types depending on the context, so look at openapi's type and modify the type.

* generate samples

* generate docs

* add perl test (json types)
2022-07-16 22:18:51 +08:00
Thomas Hansen
e2b9f39b19 [PHP] ObjectSerializer::deserialize() associative arrays bugfix (#12849)
* [PHP] ObjectSerializer::deserialize(): fix bug with json_encode

* [AUTOGENERATED] update samples
2022-07-16 17:21:42 +08:00
Sascha Peilicke
bf604a08ab Java: Add toString method to ApiException (#12851)
Previously, only the class name appeared in stacktrace whereas now
relevant details are added. This applies to most Java-related
generators.
2022-07-16 17:20:30 +08:00
William Cheng
cb462851b5 Add documentations for schema mapping and inline schema naming (#12892) 2022-07-16 17:12:59 +08:00
William Cheng
40c87e125c fix stream_callback doc (#12879) 2022-07-16 16:33:41 +08:00
William Cheng
ed6280b0f7 add roxygen2 to workflow (#12880) 2022-07-16 16:33:23 +08:00
sebastien-allard
5fb40e571e [BUG][typescript] Unnecessary semicolon [sonar(typescript:S1116)] (#12863)
* [BUG][typescript] Unnecessary semicolon [sonar(typescript:S1116)]

Making generated stringEnum compliant with Sonar rule:
https://rules.sonarsource.com/typescript/RSPEC-1116

* [BUG][typescript] Unnecessary semicolon [sonar(typescript:S1116)]

Making generated stringEnum compliant with Sonar rule:
https://rules.sonarsource.com/typescript/RSPEC-1116
2022-07-15 17:25:54 +02:00
stropho
87aab5a1f3 [typescript-axios] discriminator type in template (#12878)
* feat(typescript-axios) discriminator type

* add samples
2022-07-15 11:39:26 +02:00
Ruben Fiszel
810a8b5937 [Typescript] Support text/plain by ObjectSerializer.stringify (#12799)
* [Typescript] Support text/plain by ObjectSerializer.stringify

* Update ObjectSerializer.mustache

* Update ObjectSerializer.mustache

* Update ObjectSerializer.ts

* generate samples

* generate samples

* update samples, remove trailing spaces

* Update modules/openapi-generator/src/main/resources/typescript/model/ObjectSerializer.mustache

Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>

* regenerate samples

* update samples

Co-authored-by: William Cheng <wing328hk@gmail.com>
Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>
Co-authored-by: Esteban Gehring <esteban.gehring@bithost.ch>
2022-07-15 11:35:34 +02:00
Clément Petit
f830adac5b Add Glovo to the list of companies (#12870) 2022-07-15 15:33:44 +08:00
William Cheng
a3269a0569 Add R GitHub action file (#12868)
* fix travis, update rbuildignore

* add comment
2022-07-15 15:31:22 +08:00
Justin Black
ca4a86ea55 Turns on json-schema python-exp anyOf + oneOf unit tests (#12864)
* Spec updated to anyof only

* All tests turned on

* Revert version file

* Adds oneOf tests also
2022-07-14 09:57:43 -07:00
William Cheng
28b74d79cb remove unused import in r package (#12867) 2022-07-14 16:23:02 +08:00
William Cheng
4dfac192f8 fix warning in rdoc due to missing @param (#12865) 2022-07-14 15:41:56 +08:00
Justin Black
01afbaecd8 [python-experimental] turns on allOf unit test cases (#12826)
* Spec regenerated with only allOf on

Sample regnerated

Fixes a bug where AnyType composed schemas omitted validations, Fixes a bug where properties in AnyType schemas were omitted, Stops storing multipleOf value in a list

Adds required variable info to AnyType classes

Samples regenerated

Turns all unit tests back on

* Samples regenerated

* Docs and models regenerated
2022-07-13 19:27:55 -07:00
Justin Black
c44fe8a04a Fixes fromProperty when property is required vs optional (#12858)
* Adds required boolean to fromProperty

* Adds required to other method signatures

* pythn-exp sample regenerated

* Samples regenerated

* Adds java test of fix
2022-07-13 18:17:33 -07:00
William Cheng
5aa0e0a456 update samples 2022-07-13 17:32:31 +08:00
devhl-labs
57bcb046d1 Adds return property to CodegenOperation (#12816)
* added nonNullableVars

* added return property to operation

* added return property to operation

* build samples

Co-authored-by: William Cheng <wing328hk@gmail.com>
2022-07-13 17:01:43 +08:00
justM4D
464da4a10f [csharp-netcore] Generic Host: Added port definion to the uriBuilder in API template (#12795)
* Added port definition to uriBuilder, since it was ignored before and couldn't be set even by supplying a custom client

* generated samples

* update samples

Co-authored-by: Matthias Lewen-Rieger | PROSPER X GmbH <matthias.lewen-rieger@prosper-x.de>
Co-authored-by: William Cheng <wing328hk@gmail.com>
2022-07-13 16:49:59 +08:00
devhl-labs
636820b541 Add nonNullableVars to CodegenModel (#12815)
* added nonNullableVars

* build samples
2022-07-13 16:48:23 +08:00
Linus Klöckner
57496ff0b0 [java][okhttp-gson] Complex values in form data get serialized as JSON instead of String (#12779)
* Java: fix complex object serialization in form-data

* Java: update samples
2022-07-13 15:47:39 +08:00
roedde
9e2b8a0ec1 #12844: copy skipOperationExample from builder to WorkflowSettings (#12845) 2022-07-13 11:16:44 +08:00
Oleh Kurpiak
2e2da7bc82 [Spring] fix deprecated generation (#12832) 2022-07-13 11:08:28 +08:00
Edward Poot
8025aa3bfa Fix: Always set jakarta_annotation_version (#12834)
Commit 1735ab9d27 added changes to set the `jakarta_annotation_version`.

I've recently noticed that when using retrofit2 library, the project builds fine with Maven but fails with Gradle.

The build fails due to `Could not get unknown property 'jakarta_annotation_version' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler`.

Digging into this, in the generated `build.gradle` the `jakarta_annotation_version` is never set.
Upon closer inspection, aforementioned commit seems to indeed set it differently for the Maven build configuration than the Gradle build configuration (same for SBT configuration) for that matter.

The issue is that due to human error the `jakarta_annotation_version` line is added within the `{{#usePlayWS}}` block, meaning it won't be generated when `usePlayWS` is false, even though it should.

This commit changes this to always generate it.
2022-07-13 11:05:35 +08:00
William Cheng
60c5875091 Custom Content type: better message and added tests (#12841)
* add tests for custom mime types

* better message for custom mime type example handling

* minor code format change
2022-07-12 18:32:15 +08:00
Akhil Nair
6dfbc58bb8 [custom_content_issue] (#12836)
This PR will fix issue: https://github.com/OpenAPITools/openapi-generator/issues/12835

Signed-off-by: the-akhil-nair <sam1232007@gmail.com>
2022-07-12 15:26:18 +08:00
William Cheng
8b58abfdf2 add schema mapping support to go generator (#12839) 2022-07-12 14:30:20 +08:00
William Cheng
00db9255c0 add schema mapping support in typescript client codegen (#12840) 2022-07-12 07:40:33 +02:00
Oleh Kurpiak
4bbfa01ba8 [Java] fix JsonCreator with JsonNullable (#12813) 2022-07-12 10:41:55 +08:00
Hans Nuttin
073a800464 [Typescript] support schemaMapping (#12803)
Co-authored-by: hansnuttin <hans.nuttin@aca-it.be>
2022-07-11 19:06:57 +02:00
William Cheng
244a459836 update samples 2022-07-12 00:15:58 +08:00
Felix König
9122b2a547 codegen: add <> -> 'Not_Equal' to specialCharReplacements (#12801)
This is a fairly common alternative to `!=`, e.g. in SQL or in DevExtreme filters.
Previously, if one of an enum's variant was just '<>', its entire name would be sanitized away,
resulting in an empty string as symbol name and therefore a syntax error.
2022-07-12 00:12:56 +08:00
Thomas Hansen
3e42a6eae0 [PHP] Allow strings with only whitespaces in enums (#12783) 2022-07-12 00:01:46 +08:00
Thomas Hansen
cd48db43b4 [PHP] Add support to nullable (based on #3493) (#12794)
* [PHP] Add support to nullable (based on PR 3493)

* [AUTOGENERATED] update samples
2022-07-12 00:00:39 +08:00
William Cheng
20420e5e14 [R] add streaming support (#12821)
* add streaming option to r client

* support callback function to process data stream

* add stream test, minor bug fixes

* fix api client

* return void earlier if streaming, add tests
2022-07-11 00:19:07 +08:00
Justin Black
84ac06abdc Fixes test folder cleaning in python-exp only (#12825)
* Adds test folder file removal in python-exp only

* Samples regnerated

* Removes unused code, tweaks unit test sample to test PR change

* Reverts spec change

* FIxes javadoc
2022-07-10 08:45:49 -04:00
William Cheng
574f6f3192 fix tests (#12820) 2022-07-10 17:16:45 +08:00
William Cheng
bf2083c22f add new rust test files 2022-07-10 16:14:44 +08:00
William Cheng
e93be506da upadte samples 2022-07-10 16:00:25 +08:00
William Cheng
82b7859c19 add tests for rust nullable required parameter (#12814) 2022-07-10 15:54:33 +08:00
William Cheng
9d6b12591e Fix set, map import (#12818)
* fix set, map import

* update samples

* update tests
2022-07-10 14:58:55 +08:00
William Cheng
f242b5e1dd Skip import of allOf composition schema (#12798)
* skip import of allOf composition schema

* update samples

* allow python generator to keep old behaviour

* update js import
2022-07-10 14:58:22 +08:00
Justin Black
d6b360d47f [python-experimental] Allow schema instances to be passed in and pass additional schema validations (#12758)
* Converts all schema instances back into primitives in cast_to_allowed_types, fixes test test_deserialize_oneof_reference

* Updates type hint

* Adds validated_path_to_schemas input

* Adds debugging, storess validated schemas in validated_path_to_schemas

* Adds __process_schema_classes

* Simplifies class creation for enums, True/False/None

* Removes unused methods

* Fixes two tests

* Removes unneeded method _enum_by_value

* Adds and uses validation_ran_earlier

* Skips running validation if already ran, base_classes changed to seen_classes

* Adds and uses validation_ran_earlier

* Simplifies __get_simple_class

* Casts None/True/False into NoneClass and BoolClass instances to make tpye checking and unique items checking simpler

* Always cast file input to FileIO, removes __get_simple_class

* Moves type checking to separate class

* Moves validation checking into a _validate method

* Moves enum value checking into SchemaEnumMaker's _validate method

* Fixes test_dict_validate_direct_instantiation_cast_item

* Removes spy_decorator

* Fixed test_dict_validate_direct_instantiation

* Fixes test_list_validate_direct_instantiation_cast_item

* Fixes test_list_validate_direct_instantiation

* Fixes test_list_validate_from_openai_data_instantiation

* Fixes test_dict_validate_from_openapi_data_instantiation

* Fixes test_upload_files

* Samples regenerated

* Reverts version file
2022-07-09 18:06:09 -04:00
Justin Black
35c31c129a Fixes rust sample so CI test will pass (#12817) 2022-07-09 17:32:11 -04:00
Mikka
447fc4a5e9 correct description for logToStderr configuration (#12806) 2022-07-09 22:29:52 +08:00
thrykol
a1892b1636 feat(rust): allow more granular Rust integer types and cleaned up clippy warnings (#12479)
* feat(rust): support various Rust integer types (#2)

* fix: Use ROOT locale

* fix: unsigned int bounds were incorrect

* fix: deal with potential null value
2022-07-09 20:37:16 +08:00
Mikka
d364daa5af Resolve language generator ambiguities (#12808)
* Resolve language vs. generator ambiguities

Since now "generatorName" is used instead of "language" to specifying what will be generated, some parts of the description were corrected, which were still using "language" instead of "generator".

* Update README.md
2022-07-09 16:10:23 +08:00
Mikka
dbee2c5a83 Fix small documentation errors (#12811)
* fix typo in openapi-generator-maven-plugin readme

* fix copy&paste error in spring example pom.xml

spring generator is used for java server side code generation, not for client code generation

* fixed copy&paste errors in kotlin example pom.xml

kotlin generator is not used to generate java client code, but kotlin client code.
2022-07-09 16:06:44 +08:00
Oleh Kurpiak
cfebd14c2b Handle custom content type example (#12460) 2022-07-07 01:29:55 +08:00
David Miguel Lozano
92a5544ba0 Fix model package name import in Dart json_serializable (#12615) 2022-07-07 01:22:02 +08:00
Sascha Peilicke
42a45e1a1c Gradle Plugin: Clean up Kotlin code (#12720)
Fix typos, unused imports and formatting issues. Remove @Supress
annotations that are no longer necessary
2022-07-07 01:19:16 +08:00
Thomas Hansen
1a44a5284a [PHP] Fix message for InvalidArgumentException(), when failing to test pattern (#12780)
* [BUGFIX] model_generic.mustache: Display property name instead of its value, when throwing InvalidArgumentExeption() for values not respecting a given pattern

* [AUTOGENERATED] Generated files
2022-07-07 01:17:22 +08:00
Tom Bärwinkel
ac9e595476 Use the first status code in 2XX range, fallback to 200 (#12637)
This is in line with the OpenAPI specification:

The Responses Object MUST contain at least one response code, and
it SHOULD be the response for a successful operation call.

and excludes the 2XX range response itself.
2022-07-07 01:14:32 +08:00
Tom Bärwinkel
728c80abea Add option to use custom a monad (#12618) 2022-07-07 01:13:06 +08:00
Gaëtan Duchaussois
cb1ba17877 Rust: fix for required nullable input (#12485)
Co-authored-by: Gaëtan Duchaussois <gaetan.duchaussois@craft.ai>
2022-07-06 17:25:15 +08:00
William Cheng
f5b5feb58d remove warnings related to escaping the characters in the md generator (#12774) 2022-07-06 14:19:40 +08:00
William Cheng
1383be4a2e Fix missing import in jaxrs pojo (#12766)
* fix missing import in jaxrs pojo

* trigger build failure

* Revert "trigger build failure"

This reverts commit 4eed12f850.
2022-07-05 17:12:26 +08:00
Bogdan Ilchyshyn
97daba5c58 fixing error handler interceptor (#12761) 2022-07-04 09:06:34 +02:00
William Cheng
2f81e2d9e1 update readme with next release info 2022-07-04 01:41:44 +08:00
William Cheng
6cae0fbb78 Merge remote-tracking branch 'origin/6.1.x' 2022-07-04 01:22:51 +08:00
William Cheng
9e412edb64 Prepare 6.0.1 release (#12762)
* update to v6.0.1

* update doc

* update samples
2022-07-03 23:36:46 +08:00
Oleh Kurpiak
d36dabaf77 [Java][microprofile] fix constructor creation (#12627) 2022-07-03 17:54:55 +08:00
Gabriel Mazetto
b97a4ad12a Generate .gitlab-ci.yml files for Ruby template (#12750) 2022-07-03 17:52:32 +08:00
William Cheng
2d3bfaf96d Add schema mappings (#12600)
* add option schema mappings

* add schema mapping support, update tests

* minor fix

* update other generators, tests
2022-07-03 17:46:39 +08:00
William Cheng
72b4189f76 add back elixir petstore test-related files 2022-07-03 17:34:11 +08:00
Austin Ziegler
18a07eab37 Improved Elixir Code Generation (#12751)
* Bump the minimum version of Elixir supported

The previous minimum version of Elixir is several years EOL.

The current minimum version of Elixir is also EOL, but is the minimum
version required to support some upcoming changes to the config
templates.

* Bump the minimum version fo Tesla

Keep the dependencies up to date

* Add a default .formatter.exs

* Add two Elixir-specific mustache lambdas

- The `atom` lambda results in the proper quoting of an atom depending
  on the safe contents of the atom text, per the Elixir language
  specification. That is, `{{#atom}}foo{{/atom}}` will be turned into
  `:foo` and `{{#atom}foo.bar{{/atom}}` will be turned into
  `:"foo.bar"`.

- The `env_var` lambda results in the treatment of the identifier
  provided being capitalized as an environment variable would be.
  `{{#env_var}}apiVersion{{/env_var}}` would become `ENV_VAR`.

* Use modern Elixir configuration

- This includes runtime configuration
- It depends on the `env_var` lambda.

* Fix a Language Server Warning

This change is *optional*, but removes a LS warning that was raised.

* Regenerated openapi_petstore for Elixir

* Add ex_doc as a default dependency

Fixes #12484

* Refine the regular expression for atoms

The original regex incorrectly matched `123Number` (unquoted atoms
cannot begin with numbers) and would incorrectly quote atoms ending in
`?` or `!`. Through testing with `iex`, it also turns out that the atom
`:-` is legal.

The following atoms will now not be quoted that would have been
incorrectly quoted:

- `:-`
- `:declawed?`
- `:neutered!`

The following atoms will be quoted that were incorrectly unquoted:

- `:"123Number"`

* Improve regex (again), remove files not generated

- The previous commit resulted in a number of warnings that were still
  present and so I played with the regular expression. This did not
  solve the problem, but the resulting regular expression is *much*
  better than the previous one, so I'm keeping it.

- The problem was that the configuration (`bin/configs/elixir.yaml`) is
  generated using a 3.0 input spec:

  ```yaml
  inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
  ```

  Which means that there were 16 files committed which were no longer
  being generated. When I tested with the 2.0 input spec:

  ```yaml
  inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
  ```

  The files were generated again. I *believe* that the correct change
  here is to switch back to the 2.0 input spec, as it tests more code
  generation, but I wanted to check in before I did this.

  The following files are deleted:

  - `elixir/lib/openapi_petstore/model/additional_properties_any_type.ex`
  - `elixir/lib/openapi_petstore/model/additional_properties_array.ex`
  - `elixir/lib/openapi_petstore/model/additional_properties_boolean.ex`
  - `elixir/lib/openapi_petstore/model/additional_properties_integer.ex`
  - `elixir/lib/openapi_petstore/model/additional_properties_number.ex`
  - `elixir/lib/openapi_petstore/model/additional_properties_object.ex`
  - `elixir/lib/openapi_petstore/model/additional_properties_string.ex`
  - `elixir/lib/openapi_petstore/model/big_cat.ex`
  - `elixir/lib/openapi_petstore/model/big_cat_all_of.ex`
  - `elixir/lib/openapi_petstore/model/inline_response_default.ex`
  - `elixir/lib/openapi_petstore/model/special_model_name.ex`
  - `elixir/lib/openapi_petstore/model/type_holder_default.ex`
  - `elixir/lib/openapi_petstore/model/type_holder_example.ex`
  - `elixir/lib/openapi_petstore/model/xml_item.ex`
  - `elixir/pom.xml`
  - `elixir/test/pet_test.exs`

  In the interim, I have removed those files from the commit.
2022-07-03 17:31:34 +08:00
William Cheng
f1dd44d70c add tests for item with special characters (#12757) 2022-07-03 17:26:12 +08:00
Lazar Prijović
5658397152 [BUG] [CPP-UE4] Fix unique items list codegen (#12745)
* Fix unique items list codegen for UE4

* Update generator's doc
2022-07-03 17:17:48 +08:00
Lazar Prijović
b372f6424c Fix codegen for nested container types (#12747) 2022-07-02 16:21:20 +08:00
Justin Black
6158274f65 Adds openapi v3.0.3 unit test spec, includes test cases, autogenerates model tests with them (#12619)
* Adds draft6 tests and python file reader

* Adds processing of multiple files

* Moves test examples into a different component so component schemas can be booleans

* Excludes boolean schema cases and some others that contain patternProperties

* Adds automatic test generation, template not quite working with indentation

* Turns on allOf tests, some failing

* Adds more generated components and tests

* Adds enum tests

* Turns on all of themissing tests

* Adds exclmax and min exclusion reasons

* Adds items test cases

* Adds maximum

* Adds maxItems

* Adds maxLength

* Adds maxProperties

* Adds minimum

* Adds minItems

* Adds minLength

* Adds minProperties

* Adds multipleOf

* Adds not

* Adds oneOf

* Adds pattern

* Adds patternProperties

* Working on properties examples, partial fix for escaped characters

* Further improves example string escaping

* Fixes properties test cases

* Adds draft6 test samples license

* Adds ref

* Finishes ref

* Adds remoteRef

* Adds required

* Improves required testing

* Fixes build error / javadoc warning

* Fixes uniqueItems bug in python-experimental

* Turns all tests back on

* Fixes 2 failing tests, all python tests pass

* Fixes java npe errors

* Fixes formatting of tests, indentation fixed

* Test fase name fixed to toTestCaseName, docstring added to ObjectWithTypeBooleans

* Fixes typo

* Adds test deletion to samples generation, samples regenerated

* Updates python-exp unit test sample, includes new ref examples
2022-07-01 13:46:02 -07:00
William Cheng
4cf58f5886 support enum integers in powershell client (#12752) 2022-07-01 13:52:47 +08:00
William Cheng
d0a0b822d6 [csharp-netcore] Add support for ComVisible, CLSCompliant attributes (#12733)
* add support for ComVisible, CLSCompliant attributes in csharp-netcore clients

* fix import
2022-07-01 13:51:29 +08:00
Anakael
280de38de9 [csharp-netcore] fix: url escaping (#12739)
* fix: url escaping

* doc: add Polly to dependencies

* Revert "doc: add Polly to dependencies"

This reverts commit 29b95ed2c4.
2022-06-30 23:10:17 +08:00
William Cheng
c982421495 [Go] use EqualFold instead instead of comparing strings in lower case (#12741)
* use EqualFold instead in the go client

* update samples
2022-06-30 23:09:10 +08:00
William Cheng
08108cc4ba add tests for nested oneOf fromJSONString (#12740) 2022-06-30 23:08:49 +08:00
Bogdan Ilchyshyn
3a2bbbb850 support error handling in middleware (#12716) 2022-06-29 07:59:51 +02:00
William Cheng
0232d1cd00 add toString method to oneOf/anyOf objects (#12727) 2022-06-29 11:01:56 +08:00
William Cheng
3feb11acbb fix nested oneof, fix toStringJSON (#12723) 2022-06-28 23:43:56 +08:00
anttikarhu
05ae49698f Idea plugin for marking source directories, and omitting gradle wrapper (#12711)
* Idea plugin for marking source directories, and omitting gradle wrapper for creating sub projects

* Register the omitGradleWrapper option

* Added missing idea option
2022-06-28 16:06:10 +01:00
William Cheng
5cb66a8ab0 [R] Fix empty variable name, fix post process model (#12708)
* fix empty variable name, fix post process model

* fix empty base name
2022-06-27 19:26:51 +08:00
William Cheng
9522f6d1e2 add toString method in models (#12706) 2022-06-27 19:26:35 +08:00
William Cheng
229b2dcfac add adyen logo (#12704) 2022-06-27 12:39:40 +08:00
Beppe Catanese
78380c239d Add Adyen (#12702) 2022-06-27 12:32:15 +08:00
Bogdan Ilchyshyn
55d9231ca9 using import type instead of import for types imports (#12534) 2022-06-26 09:24:13 +02:00
William Cheng
726765af50 improve r documentation, readme, code sample (#12700) 2022-06-26 15:15:22 +08:00
Daniel Metzner
3b15bb8a4e [PHP] Enhance Symfony generator (#12532)
* Enhance Symfony generator

  - Add missing typehints
  - Add missing use statements
  - Simplify model ctor
  - Change fallthrough Exception to Throwable
  - prevent storing result of void methods
  - fix validate method
  - add default null values to model properties
  - simplify API interface return values
  - fix/rework default value implementation
  - fix optional params deprecation warnings
  - ..

For more details check out the PR: https://github.com/OpenAPITools/openapi-generator/pull/12532

* Enhance Symfony generator Tests

  - Skip risky tests
  - Fix type hint error
  - Fix class exists tests
  - Fix broken doc block
  - Enhance annotations
  - Update phpunit.xml.dist
  - Fix test config resource location
2022-06-25 20:53:21 +08:00
William Cheng
286a31c019 Update jackson databind to 2.12.6.1 (#12698)
* update jackson databind to newer version

* update version

* fix retrofit2

* fix rest assured jackson samples
2022-06-25 20:30:41 +08:00
William Cheng
e4b78dbbd8 [R] minify json in toJSON (#12699)
* minify json in toJSON

* update fromjson with better variable naming
2022-06-25 18:11:25 +08:00
William Cheng
29ea48ee96 update jackson-databind-nullable to 0.2.3 (#12693) 2022-06-25 12:45:17 +08:00
William Cheng
f1a93fa3db add new test files 2022-06-25 12:05:28 +08:00
Jochen Reinhardt
88ae36eec0 #12656 fix HTML-escaped token and authorization URLs in Java based libraries (#12677) 2022-06-25 10:21:14 +08:00
jld3103
2c9bd4a28f Put null values into serialized output in dart2 generator (#12569)
* Put null values into serialized output in dart2 generator

* Update samples
2022-06-25 10:07:00 +08:00
William Cheng
52452750c0 add test for anytype in cpp qt client 2022-06-25 10:05:01 +08:00
Daniel Renninghoff
c1b8780fff [cpp-qt-client] Replace AnyType with QJsonValue (#12642) 2022-06-25 09:40:28 +08:00
William Cheng
22ea4a60a1 update readme to refer to 13.0.1 newtonsoft json (#12689) 2022-06-24 22:20:39 +08:00
William Cheng
91bc8b41c4 update resteasy lib to newer version (#12688) 2022-06-24 22:20:20 +08:00
William Cheng
f5e701c459 update r api doc (#12679) 2022-06-24 10:39:48 +08:00
William Cheng
c3970d7348 update r model doc (#12676) 2022-06-23 20:47:12 +08:00
William Cheng
7d768f2535 [R] add error object type support (#12402)
* use rlang as exception in the petstore test

* add errorObject support

* fix method name, use ModelApiRespeonse

* update samples

* update doc

* fix api exception
2022-06-23 13:45:05 +08:00
William Cheng
45baa5e621 update kotlin samples 2022-06-23 11:19:06 +08:00
Eric Durand-Tremblay
c38d825a89 [BUG] Issue 10792 Kotlin generator produces invalid code when allOf is used (#12594)
* Step to reproduces

* Fix isMap detection for kotlin codegen

Co-authored-by: Eric Durand-Tremblay <etremblay@kronostechnologies.com>
2022-06-22 21:31:16 +01:00
Yartsev
75b883c5a5 OkHttpClient - fix enum properties in requests (#12661)
* OkHttpClient - fix enum properties in requests

* Has been committed the generated code

Co-authored-by: Mikhail Yartsev <mihail.yartsev@lamoda.ru>
2022-06-22 21:29:12 +01:00
Danni Stjernegård
b1ea0f3af3 [swift5] Make it possible to opt out of JSONEncodable conformance (#12664)
* Make it possible to opt out of JSONEncodable conformance

JSONEncodable is not a native type and does not exist if only models are generated.

* Match file indentation level
2022-06-22 17:22:14 +01:00
William Cheng
012f90895f add doc to api exception, response object in R client (#12659) 2022-06-22 16:47:27 +08:00
William Cheng
a599ae927f fix deserialization for r model with special item name (#12658) 2022-06-22 15:06:56 +08:00
William Cheng
f2cc3b8611 fix roxygen warnings in oneof, anyof, api_client (#12654) 2022-06-21 16:35:24 +08:00
William Cheng
042f717352 [R] escape item reserved words in model items (#12653)
* fix item reserved words

* add comment

* add log
2022-06-21 11:42:27 +08:00
William Cheng
1f7a49539f update roxygen to newer version (#12652) 2022-06-21 09:59:18 +08:00
William Cheng
f29fdab33d update constructor for r oneof, anyof objects (#12643) 2022-06-21 09:25:54 +08:00
Oleh Kurpiak
1440a68974 [Java][Jersey/Native/okhttp] don't override x-implements (#12410) 2022-06-20 17:02:27 +08:00
William Cheng
995f7ced13 Fix bugs in camelcase lambda, add tests for pascalcase (#12639)
* fix bugs in lambda, add tests for pascalcase

* add tests for empty string to confirm no npe
2022-06-20 17:01:19 +08:00
GuyGitzMagen
decb96b98b fix typescript node default enum (#12633)
* Default enum value and type are seperated by .

* classname is added to enum default property
2022-06-20 07:47:05 +02:00
Oleh Kurpiak
7b108c2a10 handle wildcard sub content-type (#12469) 2022-06-19 23:20:57 +08:00
William Cheng
c26ac3f8a3 add documentations to r oneof, anyof (#12638) 2022-06-19 23:19:55 +08:00
Tomasz Janiszewski
0140f84f80 Keep AST small when usign builder (#12610) 2022-06-17 15:14:48 +08:00
phoenix
a01ed49f73 Update installation.md (#12621)
Update openapi-generator-cli.jar to the latest 6.0.0 version
2022-06-17 15:02:37 +08:00
Hui Yu
bcb5f55a2d [C][Client] Set the default value for the null json (#12620) 2022-06-17 15:01:33 +08:00
Jorge Rodríguez Martín
8b7736501d Fix cookies in parameters are always generated as required (#12599)
* Fix cookies in parameters are always generated as required

* Fix cookies in parameters are always generated as required
2022-06-16 17:50:16 +08:00
phoenix
9485e3bf9e Update plugins.md (#12611)
Updated maven plugin to the latest released version 6.0.0
2022-06-16 16:21:12 +08:00
William Cheng
3143390d59 [java][okhttp-gson] Add streaming support in group parameters (#12601)
* add streaming support in group paramters

* add tests
2022-06-16 16:20:32 +08:00
William Cheng
01fdff0e06 update java samples 2022-06-15 15:56:40 +08:00
Loïc Ledoyen
3ec15740f5 [JAVA][Feign] Remove camelCase naming for form parameters (#12587) 2022-06-15 15:50:07 +08:00
William Cheng
bd6617b3e7 Better null check for encoding (#12597)
* better null check for encoding

* add tests

* update samples
2022-06-15 15:49:30 +08:00
Marley
6be94becee [ts-angular]: added ts-ignore directive to addToHttpParams to avoid compilation errors (#12591)
* [ts-angular]: added ts-ignore directive to `addToHttpParams` to avoid compilation errors

* updated samples
2022-06-14 13:18:39 +02:00
Arne Beer
ef583c53dd [typescript-fetch] Fix ToJSON for non-descriminator oneOf constructs (#12513)
* [typescript-fetch] Fix ToJSON for non-descriminator oneOf constructs

* [typescript-fetch] Update samples for oneOf fix
2022-06-13 17:03:12 +02:00
Justin Black
a00ae4631d Fixes double serialization bug in python-experimental (#12561)
* Partial template update, simplifies ref6570 serialization

* Updated serialization

* Typo fixes

* Fixes test_query_style_form_serialization

* Fixes test_cookie_style_form_serialization

* FIxes test_style_simple_in_path_serialization

* Fixes test_style_simple_in_header_serialization

* Fixes many parameter tests

* Deletes duplicate method

* Fixes TestParameter.test_path_params_no_style

* Fixes test_style_pipe_delimited_serialization

* Fixes test_header_params_no_style

* Fixes test_style_space_delimited_serialization

* Fixes test_query_style_form_serialization

* Fixes test_cookie_style_form_serialization

* Fixes test_query_params_no_style

* Fixes test_cookie_params_no_style

* Fixes test_delete_endpoint_without_request_body

* Fixes all tests

* Reverts version file

* Adds test_get_user_by_name to test path param url encoding

* Adds test_body_with_query_params

* Samples regenerated
2022-06-13 07:45:15 -07:00
William Cheng
3190084134 Test JDK 17 in github workflow (#12583)
* test jdk17 in github workflow

* trigger build

* trigger tests

* Revert "trigger build"

This reverts commit 77c4d859b0.

* add branch for tests

* disable spring tests

* trigger build

* remove path

* undo changes
2022-06-13 16:46:01 +08:00
Hui Yu
bf22f38015 [C][Client] Support freeform object (#12557) 2022-06-13 15:52:02 +08:00
cachescrubber
a7db213c2d Upgrade virtualan-plugin to 2.5.1 (#12429)
* Upgrade virtualan-plugin to 2.5.1

* Generate samples

* Upgrade virtualan sample to springdoc

* Generate Samples

* Add samples/server/petstore/springboot-virtualan to ci run

* Upgrade virtualan-plugin to 2.5.2

* Generate samples

* Add virtualan.version to spring-boot-3 pom.xml, upgrade to 2.5.2
2022-06-13 14:48:26 +08:00
William Cheng
cdc2d92609 [Java] fix bugs when property name, datatype are the same (#12581)
* fix bugs when property name, datatype are the same

* add null check

* add Locale.ROOT
2022-06-12 22:36:10 +08:00
William Cheng
c2595335c3 [java] Add useSingleRequestParameter support (#12580)
* add useSingleRequestParameter support to java client

* trigger build failure

* trigger build failure

* Revert "trigger build failure"

This reverts commit 545e57ab8f.

* Revert "trigger build failure"

This reverts commit 849f71f1f1.

* update doc
2022-06-12 17:23:42 +08:00
William Cheng
0c18b2e302 update jersey3 jackson-databind to 2.13.2.2 (#12579) 2022-06-12 14:57:29 +08:00
William Cheng
c7107a1ecc throw exception when failed to refresh token (jersey3) (#12577) 2022-06-12 14:56:59 +08:00
William Cheng
3bc4416554 update go samples 2022-06-11 09:24:50 +08:00
William Cheng
ee9b9843db Add new option to customize inline model naming convention (#12562)
* temp fix

* add support to customize inline schema naming convention

* Revert "temp fix"

This reverts commit e3bca56bfb.

* minor fix, add tests

* update description
2022-06-11 09:12:22 +08:00
Beppe Catanese
aeb40ab0ae [Go] Address Gosec vulnerabilities in Go client mustache template (#12540)
* Fix potential file inclusion via variable

* Fix deferring unsafe method "Close" on type "*os.File"

* Update samples

* Correction to use existing variable

* Correction generated samples
2022-06-11 09:10:48 +08:00
Jean-François Côté
45f430f5c8 Fix problem when uploading file using form-data in jersey2 client (#12563)
* Fix problem when uploading file using form-data in jersey2 client

* Remove serialization that is not required for most cases

* Small fix
2022-06-11 09:08:51 +08:00
William Cheng
14aef2c93d [R] Add validateJSON to oneOf, anyOf models (#12548)
* add validateJSON to r oneof, anyof models

* update tests
2022-06-08 00:35:40 +08:00
Mike Welsh
5462681348 Add milestone repository for Spring maven plugin (#12530)
* Add milestone repository for Spring maven plugin

* Update Springdoc version
2022-06-07 10:51:51 +08:00
William Cheng
8c0cb8b0aa ad fastly to user list (#12547) 2022-06-07 10:23:05 +08:00
William Cheng
4fbe1e9115 [R] add anyOf support (#12544)
* add anyOf support

* add anyOf support to r client generator
2022-06-07 10:05:34 +08:00
javier-garcia-meteologica
a339123586 Fix typescript-fetch compatibility with noUncheckedIndexedAccess (#12542) (#12543) 2022-06-06 17:42:52 +02:00
William Cheng
5db8cd0eff fix toJSON, add tests (#12541) 2022-06-06 23:17:35 +08:00
William Cheng
6948f15514 update jaxrs cxf samples 2022-06-06 18:38:26 +08:00
DevFlorian
3b587201cd [REQ] Add equals and hashcode to java-cxf pojo #12519 (#12520)
Co-authored-by: FWermelskirchen <fwermelskirchen@eitco.de>
2022-06-06 15:16:48 +08:00
William Cheng
8f3dd48772 update samples, docs 2022-06-06 12:20:21 +08:00
Vladimir Danilov
051ed53ed0 Update spring generator documentation (#12298)
Clarify inverted skipDefaultInterface configuration description
2022-06-06 12:10:51 +08:00
Ion Bazan
5bd3694927 fix @implements annotations in PHP client (#11908) 2022-06-06 12:08:46 +08:00
JGRsystematic
daa95decda Use Arrays.equals and Arrays.hashCode by built-in array types (#12502) 2022-06-06 12:01:37 +08:00
Daniel Karso
2c39835353 [PHP] Replace @ character so we can use Hydra Jsonld models. (#12171)
* Replace @ character so we can use Hydra Jsonld models. This fixes
duplicate @id id properties in models.

* Invalid test method

* Fix tests

* Fix tests 2

Co-authored-by: Daniel Karso <daniel.karso@worldstream.com>
2022-06-06 11:48:13 +08:00
William Cheng
c829567f75 add a link to blog post on api first 2022-06-06 11:40:59 +08:00
William Cheng
0296380f00 update html2 samples 2022-06-06 11:36:15 +08:00
0x7162
c4db27f24d Fixes #9923 - added recursion for nested objects (#12428) 2022-06-06 11:30:31 +08:00
Paul-Etienne François
ec6c4a4b6c [Feature] Handle optional operation responses (#12342) 2022-06-05 19:55:03 +01:00
William Cheng
6cd246931e [R] add oneOf support (#12491)
* add oneof support

* add validateJson method

* add validteJSON and tests

* add tests, add oneOf logic

* better error message in validateJSON

* fix tests

* add test for error message

* remove unused code
2022-06-05 18:03:34 +08:00
William Cheng
f52ee28215 Fix NPE when generating examples for parameter (object) (#12538)
* fix NPE when generating examples for parameter (object)

* add new files
2022-06-05 16:19:37 +08:00
Chao Yang
6869f3b0b9 Skip generating operation examples when flag is set (#12539) 2022-06-05 14:12:34 +08:00
William Cheng
53d66a891d add govery logo (#12537) 2022-06-05 10:14:36 +08:00
William Cheng
0ec2bda3c4 update build.gradle to work with junit5 (#12535) 2022-06-05 09:45:46 +08:00
Antonio Sagliocco
5b44aaf8d7 [Dart][Client] Support parsing DateTime (#12433)
* Support DateTime parsing

I've got issue in parsing an Array of Strings in datetime format, which the generator translates into a List<DateTime>.

This just fixes it

* update dart sampels

Co-authored-by: William Cheng <wing328hk@gmail.com>
2022-06-04 21:59:46 +08:00
William Cheng
ee9ba4a95a update ts samples 2022-06-04 18:43:59 +08:00
Bogdan Ilchyshyn
aac39eabc7 fixing typo in InitOverrideFunction (#12528) 2022-06-04 18:40:13 +08:00
Daniel Metzner
f30257d10a Fix syntax error for $jsonDeserializationVisitor (#12521) 2022-06-04 18:35:33 +08:00
William Cheng
38018d8b94 Test PHP Symfony server sample in github action (#12533)
* test php symfony server sample in github action

* update php laravel samples

* add tests for php 7.x, 8.x
2022-06-04 18:23:28 +08:00
Bruno Coelho
fe8187ba6d [Kotlin][Client] replace java.nio.* to avoid crash on Android API 25 and bellow (#12529)
* [Kotlin][Client] replace java.nio.* to avoid crash on Android API 25 and bellow

* [Kotlin][Client] update sample projects

* [Kotlin][Client] update sample projects
2022-06-04 16:26:59 +08:00
William Cheng
45a3b15b69 [java][okhttp-gson] Fix NPE in the response header, junit5 issue in surefire plugin (#12525)
* fix okhttp pom to work correctly with junit5

* fix version, fix NPE in response headers
2022-06-04 16:25:15 +08:00
Sorin Florea
c1deedb938 Add Gradle Enterprise logo (#12518) 2022-06-03 18:19:02 +08:00
William Cheng
f043602151 update samples 2022-06-03 18:16:27 +08:00
Prajon Shakya
421b3be828 [csharp-netcore] Add "WithHttpInfo" variant methods in api_doc (#12323)
* Added 'WithHttpInfo Variant' in api_doc template

* Update the samples
2022-06-03 18:10:15 +08:00
Mike Welsh
fbc35a2a6f [BUG] Use https URL for Spring milestone repository (#12512)
- Also set version for spring maven plugin as it does _not_ work with the milestone version
2022-06-03 00:36:45 +08:00
William Cheng
4d149e7b87 replace tabs with 4-space in SpringCodegenTest.java 2022-06-03 00:36:01 +08:00
Jochen Schalanda
41a2964246 Add support for remote development with Gitpod (#12508)
https://gitpod.io/
https://www.gitpod.io/docs/languages/java
2022-06-03 00:33:12 +08:00
Matthias Wimmer
bcc77d4ac4 Fix for #12504: invalid elm code for paths containing UUIDs (#12506)
Fixes #12504
2022-06-01 14:00:02 +02:00
WeihmannTNG
88e2490087 [Java/Spring] Fix of issue #12494: call to superclass method is done with correct arguments (#12496)
* [Java/Spring] add missing key parameter to put-item method call of super class (#12494)

* [Java/Spring] add test for missing key parameter to put-item method call of super class (#12494)
2022-06-01 08:28:20 +08:00
Kuzma
129fd0ad5c [Typescript] update addImport method (fix oneOf) (#11689)
* fix addImport method

* add function splitComposedType

* super.addImport

* add docs for splitComposedType

* add docs for splitComposedType
2022-05-30 11:53:26 +02:00
Kuzma
6f322060f7 [Typescript] Support text/html by ObjectSerializer.parse (#12459)
* add support text/html

* regenerate samples

* test
2022-05-30 11:51:37 +02:00
Kuzma
51f624ebe4 typescript: fix status code (#12472) 2022-05-30 11:49:58 +02:00
mkusaka
89193074e2 [typescript-angular] remove outdated angular samples (#12134)
* [typescript-angular] remove outdated angular samples

* [typescript-angular] remove unused sample

* [typescript-angular] remove unused ref

* [typescript-angular] add oneof & provided in any examples

* [typescript-angular] update samples

* [typescirpt-angular] migrate test to angular 12/13

* [typescript-angular] update samples
2022-05-30 11:48:12 +02:00
julienlavigne
4cfc32e426 Kotlin-client: Pass OkHttpClient instance to the base class (ApiClient) (#12493)
* Pass client to the base clase

* Regen samples
2022-05-30 10:40:58 +01:00
William Cheng
f0ea10f239 Update R auto-generated doc (#12488)
* update r doc, tests

* add new files
2022-05-29 10:01:44 +08:00
William Cheng
05d49d9107 Add support for allOf in R client generator (#12487)
* add support for all in R client generator

* update samples
2022-05-29 07:22:18 +08:00
Jon Schoning
078232acb5 [haskell-http-client] relax Aeson constraint to allow Aeson 1 (#12486) 2022-05-27 23:22:09 -05:00
Akhil Nair
e823290c8f [PYTHON] GetItem not working for Client generated allOf model and broken since 5.2.0 (#12239)
* I feel the issue is due to the creation of self._var_name_to_model_instances while doing the deserialization of the data.

Earlier the Python SDK code was using get_var_name_to_model_instances function which was adding var name to model instances that contain it. So <class 'openapi_client.model.stream_options_all_of'> will not part of mapping in self._var_name_to_model_instances for variable name stream_options.

Now with the latest Python SDK code following is the way through which var_name_to_model_instances is created:

    for prop_name in model_args:
        if prop_name not in discarded_args:
            var_name_to_model_instances[prop_name] = [self] + composed_instances
Now as we can see that the var_name_to_model_instances is populated with self and composed_instance which will also contain stream_options_all_of as a composed instance and there will be no check that if stream_options is present in composed_instances or not.

As there is no attribute_mapping found for stream_options in stream_options_all_of, the type for stream_options will be treated as dict for mapping stream_options_all_of as mentioned by @Chekov2k.

So what I suggest is the following code:

    for prop_name in model_args:
        if prop_name not in discarded_args:
           var_name_to_model_instances[prop_name] = [self] + list(
                filter(
                    lambda x: prop_name in x.openapi_types, composed_instances))
This way we can check if the property name is present in that composed instance or not. If it's okay for @spacether I can raise a PR for this.

* [get_item_all_of_bug]
Added samples, test cases to validate all_of schema.

* [getiem_all_of_bug]

Updated docs and samples.

* [getiem_all_of_bug]

Updated test cases, docs and samples.
2022-05-27 21:09:48 -07:00
William Cheng
76eddeb713 php-laravel, enum models, nullable and default values (#12480)
* + support for enum models & separating mustache templates for enums and generics
+ extract property 'type' and 'default value' from a #ref to an enum model
+ support for `PascalCase` naming convention for PHP generators
+ use a default value for known basic types when they are not nullable
+ use 'null' as default value for nullable types when they do not specify the default value
+ use defined constant path as enum default value when found

* + sample output update

* + change model fields to be public and acessible from outside

* + sample output update

Co-authored-by: Mostafa Aghajani <mostafa.aghajani@virta.global>
2022-05-27 11:16:26 +08:00
William Cheng
5307a8dafd update samples 2022-05-27 01:05:36 +08:00
Cubid
fb1706bd2b [php-symfony] Allow non mandatory array value (#11618)
Co-authored-by: David CLEMENT <dclement@cfdp.fr>
2022-05-27 00:54:04 +08:00
Taufik Rama
50958e25c0 Fixes #10568 (#12409) 2022-05-27 00:40:33 +08:00
William Cheng
210b43afe2 update graphql nodejs samples 2022-05-27 00:33:10 +08:00
Antonio Petricca
e83f1ed9f4 Graphql nodejs express server lists fixup (#12476)
* Fixed enum values generation fo 'GraphQL NodeJS Express Server' generator.

* Fixed enarrays generation for 'GraphQL NodeJS Express Server' generator.
2022-05-27 00:30:10 +08:00
Robbert van Waveren
b6ef789361 fix #11886 unhandled default enum case (#12344) 2022-05-27 00:27:56 +08:00
Christian Clauss
c2eee6f743 Use print() function in both Python 2 and Python 3 (#12467)
The current code is a syntax error in Python 3.

The proposed code works as expected in both Python 2 and Python 3.
2022-05-27 00:24:59 +08:00
William Cheng
c3a4914b22 update spring github workflow tests 2022-05-27 00:09:21 +08:00
cachescrubber
71ea659195 [Java/Spring] Support Spring Boot 3 and Jakarta EE 9 (#12407)
* Migrate annotation.Generated

* Upgrade jakarta.servlet and jakarta.validation

* Prepare pom.xml for spring boot 3

* Introduce spring-boot-3 sample config.

* Create spring-boot-3 sample.

* Introduce useSpringBoot3 cli option.

* Generate Docs

* Add spring milestone repo

* Generate Samples

* Adjust Unit Tests

* Add Spring Boot 3 Support to spring-cloud library

* generate spring cloud 3 sample

* Remove springfox

* Fix typo.

* No longer support SpringFox and Swagger1 with Spring Boot > 3.x

* Generate Docs

* Use Spring Boot 3.0.0-M3

* Generate Samples
2022-05-27 00:07:19 +08:00
William Cheng
c6a4947523 fix ocaml readme installation (#12477) 2022-05-27 00:03:24 +08:00
Antonin Décimo
5cce050260 [OCaml] Code generation fixes (#12395)
* [ocaml] Open Lwt.Infix rather than Lwt

The Lwt module has functions that might shadow parameters, and all the
functions we use from Lwt are in Lwt.Infix too.

    File "src/apis/image_api.ml", line 13, characters 69-72:
    13 |     let uri = Request.maybe_add_query_param uri "all" string_of_bool all in
                                                                              ^^^
    Error: This expression has type 'a t list -> 'a list t
           but an expression was expected of type bool option

* [ocaml] update petstore samples
2022-05-26 23:54:13 +08:00
Tom Bärwinkel
54dca39459 Add authentication for haskell-servant (#12470)
* Add authentication for haskell-servant

* Add BearerToken to HaskellServantCodegen.java
2022-05-26 23:44:13 +08:00
William Cheng
a39d86c1eb update graphql nodejs samples 2022-05-26 23:35:00 +08:00
Antonio Petricca
4233d2aa99 Fixed enum values generation fo 'GraphQL NodeJS Express Server' generator. (#12389) 2022-05-26 23:31:03 +08:00
William Cheng
5bd94b8fa0 prepare 6.1.x 2022-05-26 12:58:25 +08:00
William Cheng
8f3b63095c update gradle plugin doc 2022-05-26 12:44:20 +08:00
William Cheng
a88a84e3b8 update template, readme 2022-05-26 12:42:57 +08:00
William Cheng
36a9cf394d update samples (#12466) 2022-05-26 12:13:59 +08:00
7430 changed files with 371215 additions and 90719 deletions

View File

@@ -1226,6 +1226,12 @@
"Client: TypeScript"
]
},
{
"input": "typescript-nestjs-v8-petstore-provided-in-root.sh",
"matches": [
"Client: TypeScript"
]
},
{
"input": "typescript-node-petstore-with-npm.sh",
"matches": [

View File

@@ -16,4 +16,5 @@
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example `./bin/generate-samples.sh bin/configs/java*`.
For Windows users, please run the script in [Git BASH](https://gitforwindows.org/).
- [ ] File the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master` (6.1.0) (minor release - breaking changes with fallbacks), `7.0.x` (breaking changes without fallbacks)
- [ ] If your PR is targeting a particular programming language, @mention the [technical committee](https://github.com/openapitools/openapi-generator/#62---openapi-generator-technical-committee) members, so they are more likely to review the pull request.

View File

@@ -32,6 +32,7 @@ jobs:
- samples/openapi3/client/petstore/java/jersey2-java8-special-characters
- samples/openapi3/client/petstore/java/jersey2-java8
- samples/client/petstore/java/okhttp-gson
- samples/client/petstore/java/okhttp-gson-group-parameter
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3

View File

@@ -5,10 +5,12 @@ on:
paths:
- 'samples/client/petstore/csharp-netcore/**net6.0**/'
- 'samples/server/petstore/aspnetcore-6.0/**'
- 'samples/server/petstore/aspnetcore-6.0-pocoModels/**'
pull_request:
paths:
- 'samples/client/petstore/csharp-netcore/**net6.0**/'
- 'samples/server/petstore/aspnetcore-6.0/**'
- 'samples/server/petstore/aspnetcore-6.0-pocoModels/**'
jobs:
build:
name: Build .Net projects
@@ -21,6 +23,8 @@ jobs:
- samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0
- samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt
- samples/server/petstore/aspnetcore-6.0
- samples/server/petstore/aspnetcore-6.0-pocoModels
- samples/server/petstore/aspnetcore-6.0-project4Models
steps:
- uses: actions/checkout@v3
- uses: actions/setup-dotnet@v2

43
.github/workflows/samples-jdk17.yaml vendored Normal file
View File

@@ -0,0 +1,43 @@
name: Samples JDK17
on:
push:
paths:
# clients
- samples/openapi3/client/petstore/spring-cloud-3
# servers
- samples/openapi3/server/petstore/springboot-3
pull_request:
paths:
# clients
- samples/openapi3/client/petstore/spring-cloud-3
# servers
- samples/openapi3/server/petstore/springboot-3
jobs:
build:
name: Build with JDK17
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sample:
# clients
- samples/openapi3/client/petstore/spring-cloud-3
# servers
- samples/openapi3/server/petstore/springboot-3
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
- name: Cache maven dependencies
uses: actions/cache@v3
env:
cache-name: maven-repository
with:
path: |
~/.m2
key: ${{ runner.os }}-${{ github.job }}-${{ env.cache-name }}-${{ hashFiles('**/pom.xml') }}
- name: Build
working-directory: ${{ matrix.sample }}
run: mvn clean package

32
.github/workflows/samples-php7.yaml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: Samples PHP 7.x
on:
push:
paths:
- samples/server/petstore/php-laravel/lib/
pull_request:
paths:
- samples/server/petstore/php-laravel/lib/
jobs:
build:
name: Build PHP projects
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sample:
# servers
- samples/server/petstore/php-laravel/lib/
steps:
- uses: actions/checkout@v3
- name: Setup PHP with tools
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
tools: php-cs-fixer, phpunit
- name: composer install
working-directory: ${{ matrix.sample }}
run: composer install
- name: phpunit
working-directory: ${{ matrix.sample }}
run: vendor/bin/phpunit

32
.github/workflows/samples-php8.yaml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: Samples PHP 8.x
on:
push:
paths:
- samples/server/petstore/php-symfony/SymfonyBundle-php/
pull_request:
paths:
- samples/server/petstore/php-symfony/SymfonyBundle-php/
jobs:
build:
name: Build PHP projects
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sample:
# servers
- samples/server/petstore/php-symfony/SymfonyBundle-php/
steps:
- uses: actions/checkout@v3
- name: Setup PHP with tools
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
tools: php-cs-fixer, phpunit
- name: composer install
working-directory: ${{ matrix.sample }}
run: composer install
- name: phpunit
working-directory: ${{ matrix.sample }}
run: vendor/bin/phpunit

View File

@@ -40,6 +40,8 @@ jobs:
- samples/server/petstore/spring-boot-nullable-set
- samples/server/petstore/spring-boot-defaultInterface-unhandledException
- samples/openapi3/server/petstore/spring-boot-oneof
- samples/server/petstore/springboot-virtualan
- samples/server/petstore/springboot-implicitHeaders-annotationLibrary
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3

5
.gitignore vendored
View File

@@ -222,6 +222,8 @@ samples/server/petstore/haskell-yesod/stack.yaml.lock
.Rproj.user
samples/client/petstore/R/**/petstore.Rcheck/
samples/client/petstore/R/**/*.tar.gz
samples/client/petstore/R/R.Rproj
samples/client/petstore/R/man/
# elixir
samples/client/petstore/elixir/_build/
@@ -266,3 +268,6 @@ samples/client/petstore/crystal/lib
# Go
samples/openapi3/client/petstore/go/privatekey.pem
## OCaml
samples/client/petstore/ocaml/_build/

137
.gitpod.yml Normal file
View File

@@ -0,0 +1,137 @@
## Learn more about this file at 'https://www.gitpod.io/docs/references/gitpod-yml'
##
## This '.gitpod.yml' file when placed at the root of a project instructs
## Gitpod how to prepare & build the project, start development environments
## and configure continuous prebuilds. Prebuilds when enabled builds a project
## like a CI server so you can start coding right away - no more waiting for
## dependencies to download and builds to finish when reviewing pull-requests
## or hacking on something new.
##
## With Gitpod you can develop software from any device (even iPads) via
## desktop or browser based versions of VS Code or any JetBrains IDE and
## customise it to your individual needs - from themes to extensions, you
## have full control.
##
## The easiest way to try out Gitpod is install the browser extenion:
## 'https://www.gitpod.io/docs/browser-extension' or by prefixing
## 'https://gitpod.io#' to the source control URL of any project.
##
## For example: 'https://gitpod.io#https://github.com/gitpod-io/gitpod'
## The 'image' section defines which Docker image Gitpod should use.
## By default, Gitpod uses a standard Docker Image called 'workspace-full'
## which can be found at 'https://github.com/gitpod-io/workspace-images'
##
## Workspaces started based on this default image come pre-installed with
## Docker, Go, Java, Node.js, C/C++, Python, Ruby, Rust, PHP as well as
## tools such as Homebrew, Tailscale, Nginx and several more.
##
## If this image does not include the tools needed for your project then
## a public Docker image or your own Docker file can be configured.
##
## Learn more about images at 'https://www.gitpod.io/docs/config-docker'
#image: node:buster # use 'https://hub.docker.com/_/node'
#
#image: # leave image undefined if using a Dockerfile
# file: .gitpod.Dockerfile # relative path to the Dockerfile from the
# # root of the project
## The 'tasks' section defines how Gitpod prepares and builds this project
## or how Gitpod can start development servers. With Gitpod, there are three
## types of tasks:
##
## - before: Use this for tasks that need to run before init and before command.
## - init: Use this to configure prebuilds of heavy-lifting tasks such as
## downloading dependencies or compiling source code.
## - command: Use this to start your database or application when the workspace starts.
##
## Learn more about these tasks at 'https://www.gitpod.io/docs/config-start-tasks'
#tasks:
# - before: |
# # commands to execute...
#
# - init: |
# # sudo apt-get install python3 # can be used to install operating system
# # dependencies but these are not kept after the
# # prebuild completes thus Gitpod recommends moving
# # operating system dependency installation steps
# # to a custom Dockerfile to make prebuilds faster
# # and to keep your codebase DRY.
# # 'https://www.gitpod.io/docs/config-docker'
#
# # pip install -r requirements.txt # install codebase dependencies
# # cmake # precompile codebase
#
# - name: Web Server
# openMode: split-left
# env:
# WEBSERVER_PORT: 8080
# command: |
# python3 -m http.server $WEBSERVER_PORT
#
# - name: Web Browser
# openMode: split-right
# env:
# WEBSERVER_PORT: 8080
# command: |
# gp await-port $WEBSERVER_PORT
# lynx `gp url`
tasks:
- init: ./mvnw package -DskipTests
## The 'ports' section defines various ports your may listen on are
## configured in Gitpod on an authenticated URL. By default, all ports
## are in private visibility state.
##
## Learn more about ports at 'https://www.gitpod.io/docs/config-ports'
#ports:
# - port: 8080 # alternatively configure entire ranges via '8080-8090'
# visibility: private # either 'public' or 'private' (default)
# onOpen: open-browser # either 'open-browser', 'open-preview' or 'ignore'
## The 'vscode' section defines a list of Visual Studio Code extensions from
## the OpenVSX.org registry to be installed upon workspace startup. OpenVSX
## is an open alternative to the proprietary Visual Studio Code Marketplace
## and extensions can be added by sending a pull-request with the extension
## identifier to https://github.com/open-vsx/publish-extensions
##
## The identifier of an extension is always ${publisher}.${name}.
##
## For example: 'vscodevim.vim'
##
## Learn more at 'https://www.gitpod.io/docs/ides-and-editors/vscode'
vscode:
extensions:
- redhat.java
- vscjava.vscode-java-pack
## The 'github' section defines configuration of continuous prebuilds
## for GitHub repositories when the GitHub application
## 'https://github.com/apps/gitpod-io' is installed in GitHub and granted
## permissions to access the repository.
##
## Learn more at 'https://www.gitpod.io/docs/prebuilds'
github:
prebuilds:
# enable for the default branch
master: true
# enable for all branches in this repo
branches: true
# enable for pull requests coming from this repo
pullRequests: true
# enable for pull requests coming from forks
pullRequestsFromForks: true
# add a check to pull requests
addCheck: true
# add a "Review in Gitpod" button as a comment to pull requests
addComment: true
# add a "Review in Gitpod" button to the pull request's description
addBadge: false

View File

@@ -111,11 +111,9 @@ before_install:
- cmake --version
# install Qt5
#- sudo apt install -y --no-install-recommends qt5-default
# -- skip perl test to shorten build time
# perl dep
#- cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
#- cpanm --quiet --no-interactive Test::Exception Test::More Log::Any LWP::UserAgent URI::Query Module::Runtime DateTime Module::Find Moose::Role JSON || echo "Ignored failure from cpanm"
# -- skip perl test end
- cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
- cpanm --quiet --no-interactive Test::Exception Test::More Log::Any LWP::UserAgent URI::Query Module::Runtime DateTime Module::Find Moose::Role JSON || echo "Ignored failure from cpanm"
# show host table to confirm petstore.swagger.io is mapped to localhost
- cat /etc/hosts
# show java version

View File

@@ -80,6 +80,7 @@ elif [ "$NODE_INDEX" = "4" ]; then
#mvn --no-snapshot-updates --quiet verify -Psamples.circleci.node4 -Dorg.slf4j.simpleLogger.defaultLogLevel=error
(cd samples/openapi3/client/petstore/python && make test)
(cd samples/openapi3/client/petstore/python-experimental && make test)
(cd samples/openapi3/client/3_0_3_unit_test/python-experimental && make test)
else
echo "Running node $NODE_INDEX to test 'samples.circleci.others' defined in pom.xml ..."

View File

@@ -90,7 +90,7 @@ To test the templates, please perform the following:
- Update the Petstore sample by running the shell scripts under the `bin` folder. For example, run `./bin/generate-samples.sh ./bin/configs/python*` to update the Python-related samples under [`samples`](https://github.com/openapitools/openapi-generator/tree/master/samples). For Windows, please install [GIT bash](https://gitforwindows.org/). (If you find that there are new files generated or unexpected changes as a result of the update, that's not unusual as the test cases are added to the OpenAPI spec from time to time. If you've questions or concerns, please open a ticket to start a discussion)
- During development, it can be helpful to quickly regenerate the samples without recompiling all of openapi-generator, e.g. when you have only updated the mustache templates. This can be done by passing the `-t` parameter: `-t modules/openapi-generator/src/main/resources/python`.
- Run the tests in the sample folder using maven `mvn integration-test -f /path/to/pom.xml`, e.g. `mvn integration-test -f samples/client/petstore/python/pom.xml`. (some languages may not contain unit testing for Petstore and we're looking for contribution from the community to implement those tests)
- Run the tests in the sample folder using maven `mvn integration-test -f /path/to/pom.xml`, e.g. `mvn integration-test -f samples/client/petstore/python/pom.xml`. (some languages may not contain unit testing for Petstore and we're looking for contribution from the community to implement those tests). __Please notice:__ you must run a local instance of the Petstore server in order to perform the tests, as running them against petstore.swagger.io is not supported anymore. Please refer to item 3 of [Integration Tests - How to add integration tests for new Petstore samples](https://github.com/OpenAPITools/openapi-generator/wiki/Integration-Tests#how-to-add-integration-tests-for-new-petstore-samples) to learn how to quickly configure and run it.
- Finally, git commit the updated samples files: `git commit -a` (`git add -A` if added files with new test cases)
- For new test cases, please add to the [Fake Petstore spec](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml)

View File

@@ -3,20 +3,25 @@
<div align="center">
[![Stable releases in Maven Central](https://img.shields.io/maven-metadata/v/https/repo1.maven.org/maven2/org/openapitools/openapi-generator/maven-metadata.xml.svg)](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22) [![Apache 2.0 License](https://img.shields.io/badge/License-Apache%202.0-orange)](./LICENSE) [![Open Collective backers](https://img.shields.io/opencollective/backers/openapi_generator?color=orange&label=OpenCollective%20Backers)](https://opencollective.com/openapi_generator) [![Join the Slack chat room](https://img.shields.io/badge/Slack-Join%20the%20chat%20room-orange)](https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g) [![Follow OpenAPI Generator Twitter account to get the latest update](https://img.shields.io/twitter/follow/oas_generator.svg?style=social&label=Follow)](https://twitter.com/oas_generator)
[![Stable releases in Maven Central](https://img.shields.io/maven-metadata/v/https/repo1.maven.org/maven2/org/openapitools/openapi-generator/maven-metadata.xml.svg)](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22) [![Apache 2.0 License](https://img.shields.io/badge/License-Apache%202.0-orange)](./LICENSE) [![Open Collective backers](https://img.shields.io/opencollective/backers/openapi_generator?color=orange&label=OpenCollective%20Backers)](https://opencollective.com/openapi_generator) [![Join the Slack chat room](https://img.shields.io/badge/Slack-Join%20the%20chat%20room-orange)](https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g) [![Follow OpenAPI Generator Twitter account to get the latest update](https://img.shields.io/twitter/follow/oas_generator.svg?style=social&label=Follow)](https://twitter.com/oas_generator) [![Contribute with Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/OpenAPITools/openapi-generator)
</div>
<div align="center">
[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`6.0.x`):
[![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://app.travis-ci.com/github/OpenAPITools/openapi-generator/builds)
[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`6.1.0`):
[![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/master.svg?label=Integration%20Test)](https://travis-ci.com/OpenAPITools/openapi-generator)
[![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator)
[![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=master&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator)
[![JDK11 Build](https://cloud.drone.io/api/badges/OpenAPITools/openapi-generator/status.svg?ref=refs/heads/master)](https://cloud.drone.io/OpenAPITools/openapi-generator)
[![Bitrise](https://img.shields.io/bitrise/4a2b10a819d12b67/master?label=bitrise%3A%20Swift+4,5&token=859FMDR8QHwabCzwvZK6vQ)](https://app.bitrise.io/app/4a2b10a819d12b67)
[![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/openapitools/openapi-generator/Check%20Supported%20Java%20Versions/master?label=Check%20Supported%20Java%20Versions&logo=github&logoColor=green)](https://github.com/OpenAPITools/openapi-generator/actions?query=workflow%3A%22Check+Supported+Java+Versions%22)
[7.0.x](https://github.com/OpenAPITools/openapi-generator/tree/7.0.x) (`7.0.x`):
[![Build Status](https://img.shields.io/travis/OpenAPITools/openapi-generator/7.0.x.svg?label=Integration%20Test)](https://travis-ci.com/OpenAPITools/openapi-generator)
[![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator/tree/7.0.x.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator)
[![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=7.0.x&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator)
[![Bitrise](https://img.shields.io/bitrise/4a2b10a819d12b67/7.0.x?label=bitrise%3A%20Swift+4,5&token=859FMDR8QHwabCzwvZK6vQ)](https://app.bitrise.io/app/4a2b10a819d12b67)
</div>
<div align="center">
@@ -107,8 +112,10 @@ The OpenAPI Specification has undergone 3 revisions since initial creation in 20
| OpenAPI Generator Version | Release Date | Notes |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------- |
| 6.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/6.0.0-SNAPSHOT/) | Feb/Mar 2022 | Major release with breaking changes (no fallback) |
| [5.4.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.4.0) (latest stable release) | 31.01.2021 | Minor release with breaking changes (with fallback) |
| 7.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.0.0-SNAPSHOT/) | Feb/Mar 2023 | Major release with breaking changes (no fallback) |
| 6.1.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/6.1.0-SNAPSHOT/) | 03.08 2022 | Minor release with breaking changes (with fallback) |
| [6.0.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v6.0.1) (latest stable release) | 03.07.2022 | Patch release (enhancements, bug fixes, etc) |
| [5.4.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.4.0) | 31.01.2022 | Minor release with breaking changes (with fallback) |
| [4.3.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v4.3.1) | 06.05.2020 | Patch release (enhancements, bug fixes, etc) |
OpenAPI Spec compatibility: 1.0, 1.1, 1.2, 2.0, 3.0
@@ -165,16 +172,16 @@ See the different versions of the [openapi-generator-cli](https://search.maven.o
<!-- RELEASE_VERSION -->
If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 8 runtime at a minimum):
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.4.0/openapi-generator-cli-5.4.0.jar`
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.0.1/openapi-generator-cli-6.0.1.jar`
For **Mac/Linux** users:
```sh
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.4.0/openapi-generator-cli-5.4.0.jar -O openapi-generator-cli.jar
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.0.1/openapi-generator-cli-6.0.1.jar -O openapi-generator-cli.jar
```
For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g.
```
Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.4.0/openapi-generator-cli-5.4.0.jar
Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.0.1/openapi-generator-cli-6.0.1.jar
```
After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage.
@@ -399,7 +406,7 @@ openapi-generator-cli version
To use a specific version of "openapi-generator-cli"
```sh
openapi-generator-cli version-manager set 5.4.0
openapi-generator-cli version-manager set 6.0.1
```
Or install it as dev-dependency:
@@ -423,7 +430,7 @@ java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generat
(if you're on Windows, replace the last command with `java -jar modules\openapi-generator-cli\target\openapi-generator-cli.jar generate -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g php -o c:\temp\php_api_client`)
<!-- RELEASE_VERSION -->
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.4.0/openapi-generator-cli-5.4.0.jar)
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.0.1/openapi-generator-cli-6.0.1.jar)
<!-- /RELEASE_VERSION -->
To get a list of **general** options available, please run `java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar help generate`
@@ -564,6 +571,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- [Aalborg University](https://www.aau.dk)
- [Adaptant Solutions AG](https://www.adaptant.io/)
- [adesso SE](https://www.adesso.de/)
- [Adyen](https://www.adyen.com/)
- [Agoda](https://www.agoda.com/)
- [Airthings](https://www.airthings.com/)
- [Allianz](https://www.allianz.com)
@@ -600,6 +608,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- [Element AI](https://www.elementai.com/)
- [Embotics](https://www.embotics.com/)
- [emineo](https://www.emineo.ch)
- [fastly](https://www.fastly.com/)
- [Fenergo](https://www.fenergo.com/)
- [freee](https://corp.freee.co.jp/en/)
- [FreshCells](https://www.freshcells.de/)
@@ -607,6 +616,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- [Gantner](https://www.gantner.com)
- [GenFlow](https://github.com/RepreZen/GenFlow)
- [GetYourGuide](https://www.getyourguide.com/)
- [Glovo](https://glovoapp.com/)
- [GMO Pepabo](https://pepabo.com/en/)
- [GoDaddy](https://godaddy.com)
- [Gumtree](https://gumtree.com)
@@ -854,6 +864,9 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2022-04-01 - [OpenAPI Generatorのコード生成とSpring Frameworkのカスタムデータバインディングを共存させる](https://techblog.zozo.com/entry/coexistence-of-openapi-and-spring) in [ZOZO Tech Blog](https://techblog.zozo.com/)
- 2022-04-06 - [Effective Software Development using OpenAPI Generator](https://apexlabs.ai/post/openapi-generator) by Ajil Oommen (Senior Flutter Developer)
- 2022-05-13 - [A Path From an API To Client Libraries](https://www.youtube.com/watch?v=XC8oVn_efTw) by [Filip Srnec](https://www.devoxx.co.uk/talk/?id=11211) at Infobip
- 2022-06-01 - [API First, using OpenAPI and Spring Boot](https://medium.com/xgeeks/api-first-using-openapi-and-spring-boot-2602c04bb0d3) by [Micael Estrázulas Vianna](https://estrazulas.medium.com/)
- 2022-07-01 - [Generate API contract using OpenAPI Generator Maven plugin](https://huongdanjava.com/generate-api-contract-using-openapi-generator-maven-plugin.html) by [Khanh Nguyen](https://huongdanjava.com/)
- 2022-07-22 - [使用OpenAPI Generator Maven plugin开发api优先的java客户端和服务端代码](https://blog.roccoshi.top/2022/java/openapi-generator%E7%9A%84%E4%BD%BF%E7%94%A8/) by [Lincest](https://github.com/Lincest)
## [6 - About Us](#table-of-contents)

View File

@@ -1,6 +1,6 @@
generatorName: aspnetcore
outputDir: samples/server/petstore/aspnetcore-3.0
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
inputSpec: modules/openapi-generator/src/test/resources/3_0/aspnetcore/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/aspnetcore/3.0
additionalProperties:
packageGuid: '{3C799344-F285-4669-8FD5-7ED9B795D5C5}'

View File

@@ -1,6 +1,6 @@
generatorName: aspnetcore
outputDir: samples/server/petstore/aspnetcore-3.1
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
inputSpec: modules/openapi-generator/src/test/resources/3_0/aspnetcore/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/aspnetcore/3.0
additionalProperties:
packageGuid: '{3C799344-F285-4669-8FD5-7ED9B795D5C5}'

View File

@@ -1,6 +1,6 @@
generatorName: aspnetcore
outputDir: samples/server/petstore/aspnetcore-5.0
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
inputSpec: modules/openapi-generator/src/test/resources/3_0/aspnetcore/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/aspnetcore/3.0
additionalProperties:
packageGuid: '{3C799344-F285-4669-8FD5-7ED9B795D5C5}'

View File

@@ -0,0 +1,9 @@
generatorName: aspnetcore
outputDir: samples/server/petstore/aspnetcore-6.0-pocoModels
inputSpec: modules/openapi-generator/src/test/resources/3_0/aspnetcore/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/aspnetcore/3.0
additionalProperties:
packageGuid: '{3C799344-F285-4669-8FD5-7ED9B795D5C5}'
aspnetCoreVersion: "6.0"
userSecretsGuid: 'cb87e868-8646-48ef-9bb6-344b537d0d37'
pocoModels: true

View File

@@ -0,0 +1,9 @@
generatorName: aspnetcore
outputDir: samples/server/petstore/aspnetcore-6.0-project4Models
inputSpec: modules/openapi-generator/src/test/resources/3_0/aspnetcore/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/aspnetcore/3.0
additionalProperties:
packageGuid: '{3C799344-F285-4669-8FD5-7ED9B795D5C5}'
aspnetCoreVersion: "6.0"
userSecretsGuid: 'cb87e868-8646-48ef-9bb6-344b537d0d37'
useSeperateModelProject: true

View File

@@ -1,6 +1,6 @@
generatorName: aspnetcore
outputDir: samples/server/petstore/aspnetcore-6.0
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
inputSpec: modules/openapi-generator/src/test/resources/3_0/aspnetcore/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/aspnetcore/3.0
additionalProperties:
packageGuid: '{3C799344-F285-4669-8FD5-7ED9B795D5C5}'

View File

@@ -0,0 +1,10 @@
generatorName: java
outputDir: samples/client/petstore/java/okhttp-gson-group-parameter
library: okhttp-gson
inputSpec: modules/openapi-generator/src/test/resources/3_0/java/petstore-group-parameter.yaml
templateDir: modules/openapi-generator/src/main/resources/Java
additionalProperties:
artifactId: petstore-okhttp-gson-group-parameter
hideGenerationTimestamp: "true"
disallowAdditionalPropertiesIfNotPresent: false
useSingleRequestParameter: true

View File

@@ -0,0 +1,9 @@
generatorName: kotlin
outputDir: samples/client/petstore/kotlin-allOff-discriminator
inputSpec: modules/openapi-generator/src/test/resources/3_0/issue_10792.yaml
templateDir: modules/openapi-generator/src/main/resources/kotlin-client
additionalProperties:
artifactId: kotlin-allOff-discriminator
serializableModel: "false"
dateLibrary: java8
enumUnknownDefaultCase: true

View File

@@ -7,3 +7,5 @@ additionalProperties:
artifactId: kotlin-petstore-json-request-string
parcelizeModels: true
supportAndroidApiLevel25AndBelow: true
serializationLibrary: kotlinx_serialization
enumUnknownDefaultCase: "true"

View File

@@ -5,3 +5,5 @@ templateDir: modules/openapi-generator/src/main/resources/kotlin-client
additionalProperties:
artifactId: kotlin-uppercase-enum
enumPropertyNaming: UPPERCASE
serializationLibrary: kotlinx_serialization
enumUnknownDefaultCase: "true"

View File

@@ -1,6 +1,6 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v2/default
outputDir: samples/client/petstore/typescript-angular/default
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: "2"
ngVersion: 13.3.2

View File

@@ -1,10 +1,10 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v4.3/npm
outputDir: samples/client/petstore/typescript-angular/npm
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
npmVersion: 0.0.1
ngVersion: "4.3"
ngVersion: 13.3.2
npmName: '@openapitools/angular2-typescript-petstore'
npmRepository: https://skimdb.npmjs.com/registry
snapshot: false

View File

@@ -1,7 +1,7 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v2/with-interfaces
outputDir: samples/client/petstore/typescript-angular/with-interfaces
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
withInterfaces: "true"
ngVersion: "2"
ngVersion: 13.3.2

View File

@@ -2,3 +2,5 @@ generatorName: php-laravel
outputDir: samples/server/petstore/php-laravel
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/php-laravel
gitUserId: openapitools
gitRepoId: petstore

View File

@@ -2,3 +2,5 @@ generatorName: php-symfony
outputDir: samples/server/petstore/php-symfony/SymfonyBundle-php
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/php-symfony
gitUserId: openapitools
gitRepoId: petstore

View File

@@ -0,0 +1,6 @@
generatorName: python-experimental
outputDir: samples/openapi3/client/3_0_3_unit_test/python-experimental
inputSpec: modules/openapi-generator/src/test/resources/3_0/unit_test_spec/3_0_3_unit_test_spec.yaml
templateDir: modules/openapi-generator/src/main/resources/python-experimental
additionalProperties:
packageName: unit_test_api

View File

@@ -5,3 +5,8 @@ templateDir: modules/openapi-generator/src/main/resources/r
httpUserAgent: PetstoreAgent
additionalProperties:
packageName: petstore
exceptionPackage: rlang
useRlangExceptionHandling: true
returnExceptionOnFailure: true
errorObjectType: "ModelApiResponse"
operationIdNaming: PascalCase #default

View File

@@ -0,0 +1,13 @@
generatorName: r
outputDir: samples/client/petstore/R-httr2
inputSpec: modules/openapi-generator/src/test/resources/3_0/r/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/r
httpUserAgent: PetstoreAgent
library: httr2
additionalProperties:
packageName: petstore
exceptionPackage: rlang
useRlangExceptionHandling: true
returnExceptionOnFailure: true
errorObjectType: "ModelApiResponse"
operationIdNaming: snake_case

View File

@@ -0,0 +1,12 @@
generatorName: ruby
outputDir: samples/client/petstore/ruby-autoload
library: typhoeus
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/ruby-client
additionalProperties:
gemVersion: 1.0.0
moduleName: Petstore
gemName: petstore
skipFormModel: "true"
useAutoload: true
strictSpecBehavior: false

View File

@@ -1,7 +1,7 @@
generatorName: rust
outputDir: samples/client/petstore/rust/hyper/petstore
library: hyper
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/rust
additionalProperties:
supportAsync: "false"

View File

@@ -1,7 +1,7 @@
generatorName: rust
outputDir: samples/client/petstore/rust/reqwest/petstore
library: reqwest
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
inputSpec: modules/openapi-generator/src/test/resources/3_0/rust/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/rust
additionalProperties:
supportAsync: false

View File

@@ -0,0 +1,12 @@
generatorName: spring
outputDir: samples/openapi3/server/petstore/springboot-3
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
documentationProvider: springdoc
artifactId: springboot
snapshotVersion: "true"
useSpringBoot3: true
useBeanValidation: true
hideGenerationTimestamp: "true"

View File

@@ -0,0 +1,10 @@
generatorName: spring
outputDir: samples/server/petstore/springboot-implicitHeaders-annotationLibrary
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
artifactId: springboot-implicitHeaders-annotationLibrary
documentationProvider: none
annotationLibrary: none
hideGenerationTimestamp: "true"
implicitHeadersRegex: .*

View File

@@ -4,7 +4,7 @@ library: spring-boot
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
documentationProvider: springfox
documentationProvider: springdoc
apiPackage: org.openapitools.virtualan.api
modelPackage: org.openapitools.virtualan.model
virtualService: true

View File

@@ -0,0 +1,13 @@
generatorName: spring
library: spring-cloud
outputDir: samples/openapi3/client/petstore/spring-cloud-3
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:
groupId: org.openapitools.openapi3
documentationProvider: springdoc
artifactId: spring-cloud-oas3
useSpringBoot3: "true"
interfaceOnly: "true"
singleContentTypes: "true"
hideGenerationTimestamp: "true"

View File

@@ -1,5 +1,5 @@
generatorName: spring
outputDir: samples/client/petstore/spring-stubs
outputDir: samples/server/petstore/spring-stubs
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/JavaSpring
additionalProperties:

View File

@@ -1,10 +0,0 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v10-provided-in-root/builds/with-npm
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 10.0.0
npmVersion: 1.0.0
npmName: '@openapitools/typescript-angular-petstore'
npmRepository: https://skimdb.npmjs.com/registry
snapshot: false

View File

@@ -1,6 +0,0 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v10-provided-in-root/builds/default
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 10.0.0

View File

@@ -1,6 +0,0 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v11-oneOf/builds/default
inputSpec: modules/openapi-generator/src/test/resources/3_0/oneOfArrayMapImport.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 11.0.0

View File

@@ -1,10 +0,0 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v11-provided-in-root/builds/with-npm
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 11.0.0
npmVersion: 1.0.0
npmName: '@openapitools/typescript-angular-petstore'
npmRepository: https://skimdb.npmjs.com/registry
snapshot: false

View File

@@ -1,6 +0,0 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v11-provided-in-root/builds/default
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 11.0.0

View File

@@ -0,0 +1,6 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v12-oneOf/builds/default
inputSpec: modules/openapi-generator/src/test/resources/3_0/oneOfArrayMapImport.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 12.2.0

View File

@@ -0,0 +1,7 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v12-provided-in-any/builds/default
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 12.2.0
providedIn: any

View File

@@ -0,0 +1,6 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v13-oneOf/builds/default
inputSpec: modules/openapi-generator/src/test/resources/3_0/oneOfArrayMapImport.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 13.0.1

View File

@@ -0,0 +1,7 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v13-provided-in-any/builds/default
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 13.0.1
providedIn: any

View File

@@ -1,7 +0,0 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v9-provided-in-any/builds/default
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 9.0.0
providedIn: any

View File

@@ -1,10 +0,0 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v9-provided-in-root/builds/with-npm
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 9.0.0
npmVersion: 1.0.0
npmName: '@openapitools/typescript-angular-petstore'
npmRepository: https://skimdb.npmjs.com/registry
snapshot: false

View File

@@ -1,6 +0,0 @@
generatorName: typescript-angular
outputDir: samples/client/petstore/typescript-angular-v9-provided-in-root/builds/default
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-angular
additionalProperties:
ngVersion: 9.0.0

View File

@@ -0,0 +1,10 @@
generatorName: typescript-nestjs
outputDir: samples/client/petstore/typescript-nestjs-v8-provided-in-root/builds/default
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
templateDir: modules/openapi-generator/src/main/resources/typescript-nestjs
additionalProperties:
nestVersion: 8.0.0
"npmName": "@openapitools/typescript-nestjs-petstore"
"npmVersion": "1.0.0"
"npmRepository" : "https://skimdb.npmjs.com/registry"
"snapshot" : false

View File

@@ -53,9 +53,7 @@ if [[ ${#files[@]} -eq 1 && "${files[0]}" != *'*'* ]]; then
java ${JAVA_OPTS} -jar "$executable" generate -c ${files[0]} ${args[@]}
else
echo "Please press CTRL+C to stop or the script will continue in 5 seconds."
sleep 5
if [ ${#files[@]} -eq 0 ]; then
files=("${root}"/bin/configs/*.yaml)
fi

View File

@@ -1,7 +1,7 @@
---
# csharp-netcore test files and image for upload
- filename: "samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools.Test/JSONComposedSchemaTests.cs"
sha256: 95e40cace36e7cd1608fa494161f06291f4cfb8f859ec4196ae9939f520b152a
sha256: 64024927bc08a520ff11ba7083f83be960909a19ef273f63c1eaaef1cc6f34a2
- filename: "samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools.Test/Api/PetApiTests.cs"
sha256: dae985015ba461297927d544a78267f2def35e07c3f14ca66468fd61e1fd1c26
- filename: "samples/client/petstore/csharp-netcore/OpenAPIClient/src/Org.OpenAPITools.Test/linux-logo.png"

View File

@@ -94,7 +94,7 @@ To test the templates, please perform the following:
- Update the Petstore sample by running the shell scripts under the `bin` folder. For example, run `./bin/generate-samples.sh ./bin/configs/python*` to update the Python-related samples under [`samples`](https://github.com/openapitools/openapi-generator/tree/master/samples). For Windows, please install [GIT bash](https://gitforwindows.org/). (If you find that there are new files generated or unexpected changes as a result of the update, that's not unusual as the test cases are added to the OpenAPI spec from time to time. If you've questions or concerns, please open a ticket to start a discussion)
- During development, it can be helpful to quickly regenerate the samples without recompiling all of openapi-generator, e.g. when you have only updated the mustache templates. This can be done by passing the `-t` parameter: `-t modules/openapi-generator/src/main/resources/python`.
- Run the tests in the sample folder using maven `mvn integration-test -f /path/to/pom.xml`, e.g. `mvn integration-test -f samples/client/petstore/python/pom.xml`. (some languages may not contain unit testing for Petstore and we're looking for contribution from the community to implement those tests)
- Run the tests in the sample folder using maven `mvn integration-test -f /path/to/pom.xml`, e.g. `mvn integration-test -f samples/client/petstore/python/pom.xml`. (some languages may not contain unit testing for Petstore and we're looking for contribution from the community to implement those tests). __Please notice:__ you must run a local instance of the Petstore server in order to perform the tests, as running them against petstore.swagger.io is not supported anymore. Please refer to item 3 of [Integration Tests - How to add integration tests for new Petstore samples](https://github.com/OpenAPITools/openapi-generator/wiki/Integration-Tests#how-to-add-integration-tests-for-new-petstore-samples) to learn how to quickly configure and run it.
- Finally, git commit the updated samples files: `git commit -a` (`git add -A` if added files with new test cases)
- For new test cases, please add to the [Fake Petstore spec](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml)

View File

@@ -394,3 +394,51 @@ or
```
--import-mappings Pet=my.models.MyPet --import-mappings Order=my.models.MyOrder
```
## Schema Mapping
One can map the schema to someting else (e.g. external objects/models outside of the package) using the `schemaMappings` option, e.g. in CLI
```sh
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/type-alias.yaml -o /tmp/java2/ --schema-mapping TypeAlias=foo.bar.TypeAlias
```
Another example (in conjunction with --type-mappings):
```sh
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i /tmp/alias.yaml -o /tmp/alias/ --schema-mappings stream=org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody --type-mappings string+binary=stream
```
while /tmp/alias.yaml is as follows:
```yaml
openapi: 3.0.3
info:
title: Demo app
version: 1.0.0
servers:
- url: /api/v1
paths:
/demo:
get:
summary: Demo
operationId: demo
responses:
'200':
description: Demo response
content:
text/csv:
schema:
type: string
format: binary
```
## Inline Schema Naming
Inline schemas are created as separate schemas automatically and the auto-generated schema name may not look good to everyone. One can customize the name using the `title` field or the `inlineSchemaNameMapping` option, e.g. in CLI
```
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/inline_model_resolver.yaml -o /tmp/java3/ --skip-validate-spec --inline-schema-name-mappings inline_object_2=SomethingMapped,inline_object_4=nothing_new
```
Another useful option is `inlineSchemaNameDefaults`, which allows you to customize the suffix of the auto-generated inline schema name, e.g. in CLI
```
--inline-schema-name-defaults arrayItemSuffix=_array_item
```
Note: Only arrayItemSuffix, mapItemSuffix are supported at the moment.

View File

@@ -41,15 +41,17 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|packageName|C# package name (convention: Title.Case).| |Org.OpenAPITools|
|packageTitle|Specifies an AssemblyTitle for the .NET Framework global assembly attributes stored in the AssemblyInfo file.| |OpenAPI Library|
|packageVersion|C# package version.| |1.0.0|
|pocoModels|Build POCO Models| |false|
|returnICollection|Return ICollection&lt;T&gt; instead of the concrete type.| |false|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|sourceFolder|source folder for generated code| |src|
|swashbuckleVersion|Swashbuckle version: 3.0.0, 4.0.0, 5.0.0, 6.0.0|<dl><dt>**3.0.0**</dt><dd>Swashbuckle 3.0.0</dd><dt>**4.0.0**</dt><dd>Swashbuckle 4.0.0</dd><dt>**5.0.0**</dt><dd>Swashbuckle 5.0.0</dd><dt>**6.0.0**</dt><dd>Swashbuckle 6.0.0</dd></dl>|3.0.0|
|swashbuckleVersion|Swashbuckle version: 3.0.0 (deprecated), 4.0.0 (deprecated), 5.0.0 (deprecated), 6.4.0|<dl><dt>**3.0.0**</dt><dd>Swashbuckle 3.0.0</dd><dt>**4.0.0**</dt><dd>Swashbuckle 4.0.0</dd><dt>**5.0.0**</dt><dd>Swashbuckle 5.0.0</dd><dt>**6.4.0**</dt><dd>Swashbuckle 6.4.0</dd></dl>|3.0.0|
|useCollection|Deserialize array types to Collection&lt;T&gt; instead of List&lt;T&gt;.| |false|
|useDateTimeOffset|Use DateTimeOffset to model date-time properties| |false|
|useDefaultRouting|Use default routing for the ASP.NET Core version.| |true|
|useFrameworkReference|Use frameworkReference for ASP.NET Core 3.0+ and PackageReference ASP.NET Core 2.2 or earlier.| |false|
|useNewtonsoft|Uses the Newtonsoft JSON library.| |true|
|useSeperateModelProject|Create a seperate project for models| |false|
|useSwashbuckle|Uses the Swashbuckle.AspNetCore NuGet package for documentation.| |true|
## IMPORT MAPPING

View File

@@ -38,6 +38,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
| Type/Alias | Imports |
| ---------- | ------- |
|OAIHttpFileElement|#include &quot;OAIHttpFileElement.h&quot;|
|QJsonValue|#include &lt;QJsonValue&gt;|
## INSTANTIATION TYPES

View File

@@ -54,6 +54,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>TArray</li>
<li>TArray&lt;uint8&gt;</li>
<li>TMap</li>
<li>TSet</li>
<li>TSharedPtr&lt;FJsonObject&gt;</li>
<li>TSharedPtr&lt;FJsonValue&gt;</li>
<li>bool</li>

View File

@@ -307,7 +307,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|BearerToken|✗|OAS3
|OAuth2_Implicit|✓|OAS2,OAS3
|OAuth2_Password|✗|OAS2,OAS3
|OAuth2_ClientCredentials||OAS2,OAS3
|OAuth2_ClientCredentials||OAS2,OAS3
|OAuth2_AuthorizationCode|✗|OAS2,OAS3
### Wire Format Feature

View File

@@ -29,6 +29,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|serveStatic|serve will serve files from the directory 'static'.| |true|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|useCustomMonad|use a custom monad instead of the default Handler| |false|
## IMPORT MAPPING
@@ -195,7 +196,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|BasicAuth|✓|OAS2,OAS3
|ApiKey|✓|OAS2,OAS3
|OpenIDConnect|✗|OAS3
|BearerToken||OAS3
|BearerToken||OAS3
|OAuth2_Implicit|✓|OAS2,OAS3
|OAuth2_Password|✗|OAS2,OAS3
|OAuth2_ClientCredentials|✗|OAS2,OAS3

View File

@@ -80,7 +80,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|scmUrl|SCM URL in generated pom.xml| |https://github.com/openapitools/openapi-generator|
|serializableModel|boolean - toggle &quot;implements Serializable&quot; for generated models| |false|
|singleContentTypes|Whether to select only one produces/consumes content-type by operation.| |false|
|skipDefaultInterface|Whether to generate default implementations for java8 interfaces| |false|
|skipDefaultInterface|Whether to skip generation of default implementations for java8 interfaces| |false|
|snapshotVersion|Uses a SNAPSHOT version.|<dl><dt>**true**</dt><dd>Use a SnapShot Version</dd><dt>**false**</dt><dd>Use a Release Version</dd></dl>|null|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
@@ -91,6 +91,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|useBeanValidation|Use BeanValidation API annotations| |true|
|useFeignClientUrl|Whether to generate Feign client with url parameter.| |true|
|useOptional|Use Optional container for optional parameters| |false|
|useSpringBoot3|Generate code and provide dependencies for use with Spring Boot 3.x. (Use jakarta instead of javax in imports).| |true|
|useSpringController|Annotate the generated API as a Spring Controller| |false|
|useSwaggerUI|Open the OpenApi specification in swagger-ui. Will also import and configure needed dependencies| |true|
|useTags|use tags for creating interface and controller classnames| |false|

View File

@@ -85,6 +85,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|useRuntimeException|Use RuntimeException instead of Exception| |false|
|useRxJava2|Whether to use the RxJava2 adapter with the retrofit2 library. IMPORTANT: This option has been deprecated.| |false|
|useRxJava3|Whether to use the RxJava3 adapter with the retrofit2 library. IMPORTANT: This option has been deprecated.| |false|
|useSingleRequestParameter|Setting this property to true will generate functions with a single argument containing all API endpoint parameters instead of one argument per parameter. ONLY jersey2, jersey3, okhttp-gson support this option.| |false|
|withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false|
## SUPPORTED VENDOR EXTENSIONS

View File

@@ -105,6 +105,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>const</li>
<li>constructor</li>
<li>continue</li>
<li>contract</li>
<li>crossinline</li>
<li>data</li>
<li>delegate</li>

View File

@@ -114,6 +114,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>const</li>
<li>constructor</li>
<li>continue</li>
<li>contract</li>
<li>crossinline</li>
<li>data</li>
<li>delegate</li>

View File

@@ -93,6 +93,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>const</li>
<li>constructor</li>
<li>continue</li>
<li>contract</li>
<li>crossinline</li>
<li>data</li>
<li>delegate</li>

View File

@@ -26,10 +26,12 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|enumPropertyNaming|Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original'| |camelCase|
|generateRoomModels|Generate Android Room database models in addition to API models (JVM Volley library only)| |false|
|groupId|Generated artifact package's organization (i.e. maven groupId).| |org.openapitools|
|idea|Add IntellJ Idea plugin and mark Kotlin main and test folders as source folders.| |false|
|library|Library template (sub-template) to use|<dl><dt>**jvm-ktor**</dt><dd>Platform: Java Virtual Machine. HTTP client: Ktor 1.6.7. JSON processing: Gson, Jackson (default).</dd><dt>**jvm-okhttp4**</dt><dd>[DEFAULT] Platform: Java Virtual Machine. HTTP client: OkHttp 4.2.0 (Android 5.0+ and Java 8+). JSON processing: Moshi 1.8.0.</dd><dt>**jvm-okhttp3**</dt><dd>Platform: Java Virtual Machine. HTTP client: OkHttp 3.12.4 (Android 2.3+ and Java 7+). JSON processing: Moshi 1.8.0.</dd><dt>**jvm-retrofit2**</dt><dd>Platform: Java Virtual Machine. HTTP client: Retrofit 2.6.2.</dd><dt>**multiplatform**</dt><dd>Platform: Kotlin multiplatform. HTTP client: Ktor 1.6.7. JSON processing: Kotlinx Serialization: 1.2.1.</dd><dt>**jvm-volley**</dt><dd>Platform: JVM for Android. HTTP client: Volley 1.2.1. JSON processing: gson 2.8.9</dd></dl>|jvm-okhttp4|
|modelMutable|Create mutable models| |false|
|moshiCodeGen|Whether to enable codegen with the Moshi library. Refer to the [official Moshi doc](https://github.com/square/moshi#codegen) for more info.| |false|
|omitGradlePluginVersions|Whether to declare Gradle plugin versions in build files.| |false|
|omitGradleWrapper|Whether to omit Gradle wrapper for creating a sub project.| |false|
|packageName|Generated artifact package name.| |org.openapitools.client|
|parcelizeModels|toggle &quot;@Parcelize&quot; for generated models| |null|
|requestDateConverter|JVM-Option. Defines in how to handle date-time objects that are used for a request (as query or parameter)|<dl><dt>**toJson**</dt><dd>[DEFAULT] Date formatter option using a json converter.</dd><dt>**toString**</dt><dd>Use the 'toString'-method of the date-time object to retrieve the related string representation.</dd></dl>|toJson|
@@ -105,6 +107,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>const</li>
<li>constructor</li>
<li>continue</li>
<li>contract</li>
<li>crossinline</li>
<li>data</li>
<li>delegate</li>

View File

@@ -41,7 +41,8 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<ul class="column-ul">
<li>ARRAY</li>
<li>DateTime</li>
<li>DATE</li>
<li>DATE_TIME</li>
<li>HASH</li>
<li>boolean</li>
<li>double</li>

View File

@@ -18,8 +18,11 @@ These options may be applied as additional-properties (cli) or configOptions (pl
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|errorObjectType|Error object type.| |null|
|exceptionPackage|Specify the exception handling package|<dl><dt>**default**</dt><dd>Use stop() for raising exceptions.</dd><dt>**rlang**</dt><dd>Use rlang package for exceptions.</dd></dl>|default|
|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
|library|HTTP library template (sub-template) to use|<dl><dt>**httr2**</dt><dd>httr2 (https://httr2.r-lib.org/)</dd><dt>**httr**</dt><dd>httr (https://cran.r-project.org/web/packages/httr/index.html)</dd></dl>|httr|
|operationIdNaming|Naming convention for operationId (function name in the API)|<dl><dt>**PascalCase**</dt><dd>Pascal case (default)</dd><dt>**snake_case**</dt><dd>Snake case</dd><dt>**camelCase**</dt><dd>Camel case</dd></dl>|null|
|packageName|R package name (convention: lowercase).| |openapi|
|packageVersion|R package version.| |1.0.0|
|returnExceptionOnFailure|Throw an exception on non success response codes| |false|

View File

@@ -38,6 +38,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|useAutoload|Use autoload instead of require to load modules.| |false|
## IMPORT MAPPING

View File

@@ -18,11 +18,13 @@ These options may be applied as additional-properties (cli) or configOptions (pl
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|bestFitInt|Use best fitting integer type where minimum or maximum is set| |false|
|enumNameSuffix|Suffix that will be appended to all enum names.| ||
|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
|library|library template (sub-template) to use.|<dl><dt>**hyper**</dt><dd>HTTP client: Hyper.</dd><dt>**reqwest**</dt><dd>HTTP client: Reqwest.</dd></dl>|reqwest|
|packageName|Rust package name (convention: lowercase).| |openapi|
|packageVersion|Rust package version.| |1.0.0|
|preferUnsignedInt|Prefer unsigned integers where minimum value is &gt;= 0| |false|
|supportAsync|If set, generate async function call instead. This option is for 'reqwest' library only| |true|
|supportMultipleResponses|If set, return type wraps an enum of all possible 2xx schemas. This option is for 'reqwest' library only| |false|
|useSingleRequestParameter|Setting this property to true will generate functions with a single argument containing all API endpoint parameters instead of one argument per parameter.| |false|

View File

@@ -73,7 +73,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|scmUrl|SCM URL in generated pom.xml| |https://github.com/openapitools/openapi-generator|
|serializableModel|boolean - toggle &quot;implements Serializable&quot; for generated models| |false|
|singleContentTypes|Whether to select only one produces/consumes content-type by operation.| |false|
|skipDefaultInterface|Whether to generate default implementations for java8 interfaces| |false|
|skipDefaultInterface|Whether to skip generation of default implementations for java8 interfaces| |false|
|snapshotVersion|Uses a SNAPSHOT version.|<dl><dt>**true**</dt><dd>Use a SnapShot Version</dd><dt>**false**</dt><dd>Use a Release Version</dd></dl>|null|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
@@ -84,6 +84,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|useBeanValidation|Use BeanValidation API annotations| |true|
|useFeignClientUrl|Whether to generate Feign client with url parameter.| |true|
|useOptional|Use Optional container for optional parameters| |false|
|useSpringBoot3|Generate code and provide dependencies for use with Spring Boot 3.x. (Use jakarta instead of javax in imports).| |true|
|useSpringController|Annotate the generated API as a Spring Controller| |false|
|useSwaggerUI|Open the OpenApi specification in swagger-ui. Will also import and configure needed dependencies| |true|
|useTags|use tags for creating interface and controller classnames| |false|

View File

@@ -53,6 +53,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|swiftUseApiNamespace|Flag to make all the API classes inner-class of {{projectName}}API| |null|
|useBacktickEscapes|Escape reserved words using backticks (default: false)| |false|
|useClasses|Use final classes for models instead of structs (default: false)| |false|
|useJsonEncodable|Make models conform to JSONEncodable protocol (default: true)| |true|
|useSPMFileStructure|Use SPM file structure and set the source path to Sources/{{projectName}} (default: false).| |null|
## IMPORT MAPPING

View File

@@ -11,7 +11,7 @@ title: Documentation for the typescript-nestjs Generator
| generator type | CLIENT | |
| generator language | Typescript | |
| generator default templating engine | mustache | |
| helpTxt | Generates a TypeScript Nestjs 6.x client library. | |
| helpTxt | Generates a TypeScript Nestjs 8.x or 6.x client library. | |
## CONFIG OPTIONS
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
@@ -29,7 +29,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|modelFileSuffix|The suffix of the file of the generated model (model&lt;suffix&gt;.ts).| |null|
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name. Only change it if you provide your own run-time code for (de-)serialization of models| |original|
|modelSuffix|The suffix of the generated model.| |null|
|nestVersion|The version of Nestjs.| |6.0.0|
|nestVersion|The version of Nestjs.|<dl><dt>**8.0.0**</dt><dd>Use new HttpModule and HttpService from @nestjs/axios.</dd><dt>**6.0.0**</dt><dd>Use old HttpModule and HttpService from @nestjs/common.</dd></dl>|8.0.0|
|npmName|The name under which you want to publish generated npm package. Required to generate a full package| |null|
|npmRepository|Use this property to set an url your private npmRepo in the package.json| |null|
|npmVersion|The version of your npm package. If not provided, using the version from the OpenAPI specification file.| |1.0.0|

View File

@@ -103,18 +103,18 @@ docker run --rm \
<!-- RELEASE_VERSION -->
If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 8 runtime at a minimum):
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.3.0/openapi-generator-cli-5.3.0.jar`
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.0.1/openapi-generator-cli-6.0.1.jar`
For **Mac/Linux** users:
```bash
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.3.0/openapi-generator-cli-5.3.0.jar -O openapi-generator-cli.jar
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.0.1/openapi-generator-cli-6.0.1.jar -O openapi-generator-cli.jar
```
For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g.
```powershell
Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.3.0/openapi-generator-cli-5.3.0.jar
Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.0.1/openapi-generator-cli-6.0.1.jar
```
<!-- /RELEASE_VERSION -->

View File

@@ -16,7 +16,7 @@ Add to your `build->plugins` section (default phase is `generate-sources` phase)
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<!-- RELEASE_VERSION -->
<version>5.1.0</version>
<version>6.0.0</version>
<!-- /RELEASE_VERSION -->
<executions>
<execution>

View File

@@ -4,7 +4,7 @@
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-project</artifactId>
<!-- RELEASE_VERSION -->
<version>6.0.0</version>
<version>6.1.0-SNAPSHOT</version>
<!-- /RELEASE_VERSION -->
<relativePath>../..</relativePath>
</parent>

View File

@@ -71,9 +71,15 @@ public class ConfigHelp extends OpenApiGeneratorCommand {
@Option(name = {"--import-mappings"}, title = "import mappings", description = "displays the default import mappings (types and aliases, and what imports they will pull into the template)")
private Boolean importMappings;
@Option(name = {"--schema-mappings"}, title = "schema mappings", description = "display the schema mappings (none)")
private Boolean schemaMappings;
@Option(name = {"--inline-schema-name-mappings"}, title = "inline schema name mappings", description = "displays the inline schema name mappings (none)")
private Boolean inlineSchemaNameMappings;
@Option(name = {"--inline-schema-name-defaults"}, title = "inline schema name defaults", description = "default values used when naming inline schema name")
private Boolean inlineSchemaNameDefaults;
@Option(name = {"--metadata"}, title = "metadata", description = "displays the generator metadata like the help txt for the generator and generator type etc")
private Boolean metadata;
@@ -452,6 +458,18 @@ public class ConfigHelp extends OpenApiGeneratorCommand {
sb.append(newline);
}
if (Boolean.TRUE.equals(schemaMappings)) {
sb.append(newline).append("SCHEMA MAPPING").append(newline).append(newline);
Map<String, String> map = config.schemaMapping()
.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> {
throw new IllegalStateException(String.format(Locale.ROOT, "Duplicated options! %s and %s", a, b));
}, TreeMap::new));
writePlainTextFromMap(sb, map, optIndent, optNestedIndent, "Scheme", "Mapped to");
sb.append(newline);
}
if (Boolean.TRUE.equals(inlineSchemaNameMappings)) {
sb.append(newline).append("INLINE SCHEMA NAME MAPPING").append(newline).append(newline);
Map<String, String> map = config.inlineSchemaNameMapping()
@@ -464,6 +482,18 @@ public class ConfigHelp extends OpenApiGeneratorCommand {
sb.append(newline);
}
if (Boolean.TRUE.equals(inlineSchemaNameDefaults)) {
sb.append(newline).append("INLINE SCHEMA NAME DEFAULTS").append(newline).append(newline);
Map<String, String> map = config.inlineSchemaNameDefault()
.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> {
throw new IllegalStateException(String.format(Locale.ROOT, "Duplicated options! %s and %s", a, b));
}, TreeMap::new));
writePlainTextFromMap(sb, map, optIndent, optNestedIndent, "Inline scheme naming convention", "Defaulted to");
sb.append(newline);
}
if (Boolean.TRUE.equals(instantiationTypes)) {
sb.append(newline).append("INSTANTIATION TYPES").append(newline).append(newline);
Map<String, String> map = config.instantiationTypes()

View File

@@ -159,6 +159,13 @@ public class Generate extends OpenApiGeneratorCommand {
+ " You can also have multiple occurrences of this option.")
private List<String> importMappings = new ArrayList<>();
@Option(
name = {"--schema-mappings"},
title = "schema mappings",
description = "specifies mappings between the schema and the new name in the format of schema_a=Cat,schema_b=Bird."
+ " You can also have multiple occurrences of this option.")
private List<String> schemaMappings = new ArrayList<>();
@Option(
name = {"--inline-schema-name-mappings"},
title = "inline schema name mappings",
@@ -166,6 +173,13 @@ public class Generate extends OpenApiGeneratorCommand {
+ " You can also have multiple occurrences of this option.")
private List<String> inlineSchemaNameMappings = new ArrayList<>();
@Option(
name = {"--inline-schema-name-defaults"},
title = "inline schema name defaults",
description = "specifies the default values used when naming inline schema as such array items in the format of arrayItemSuffix=_inner,mapItemSuffix=_value. "
+ " ONLY arrayItemSuffix, mapItemSuffix at the moment.")
private List<String> inlineSchemaNameDefaults = new ArrayList<>();
@Option(
name = {"--server-variables"},
title = "server variables",
@@ -430,7 +444,9 @@ public class Generate extends OpenApiGeneratorCommand {
}
applyInstantiationTypesKvpList(instantiationTypes, configurator);
applyImportMappingsKvpList(importMappings, configurator);
applySchemaMappingsKvpList(schemaMappings, configurator);
applyInlineSchemaNameMappingsKvpList(inlineSchemaNameMappings, configurator);
applyInlineSchemaNameDefaultsKvpList(inlineSchemaNameDefaults, configurator);
applyTypeMappingsKvpList(typeMappings, configurator);
applyAdditionalPropertiesKvpList(additionalProperties, configurator);
applyLanguageSpecificPrimitivesCsvList(languageSpecificPrimitives, configurator);

View File

@@ -6,7 +6,7 @@
<artifactId>openapi-generator-project</artifactId>
<groupId>org.openapitools</groupId>
<!-- RELEASE_VERSION -->
<version>6.0.0</version>
<version>6.1.0-SNAPSHOT</version>
<!-- /RELEASE_VERSION -->
<relativePath>../..</relativePath>
</parent>

View File

@@ -50,7 +50,9 @@ public final class GeneratorSettings implements Serializable {
private final Map<String, String> typeMappings;
private final Map<String, Object> additionalProperties;
private final Map<String, String> importMappings;
private final Map<String, String> schemaMappings;
private final Map<String, String> inlineSchemaNameMappings;
private final Map<String, String> inlineSchemaNameDefaults;
private final Set<String> languageSpecificPrimitives;
private final Map<String, String> reservedWordsMappings;
private final Map<String, String> serverVariables;
@@ -235,6 +237,15 @@ public final class GeneratorSettings implements Serializable {
return importMappings;
}
/**
* Gets schema mappings between a schema and the new name.
*
* @return the schema mappings
*/
public Map<String, String> getSchemaMappings() {
return schemaMappings;
}
/**
* Gets inline schema name mappings between an inline schema name and the new name.
*
@@ -244,6 +255,15 @@ public final class GeneratorSettings implements Serializable {
return inlineSchemaNameMappings;
}
/**
* Gets inline schema name defaults between an inline schema naming convention and the default values.
*
* @return the inline schema name defaults
*/
public Map<String, String> getInlineSchemaNameDefaults() {
return inlineSchemaNameDefaults;
}
/**
* Gets language specific primitives. These are in addition to the "base" primitives defined in a generator.
* <p>
@@ -359,7 +379,9 @@ public final class GeneratorSettings implements Serializable {
instantiationTypes = Collections.unmodifiableMap(builder.instantiationTypes);
typeMappings = Collections.unmodifiableMap(builder.typeMappings);
importMappings = Collections.unmodifiableMap(builder.importMappings);
schemaMappings = Collections.unmodifiableMap(builder.schemaMappings);
inlineSchemaNameMappings = Collections.unmodifiableMap(builder.inlineSchemaNameMappings);
inlineSchemaNameDefaults = Collections.unmodifiableMap(builder.inlineSchemaNameDefaults);
languageSpecificPrimitives = Collections.unmodifiableSet(builder.languageSpecificPrimitives);
reservedWordsMappings = Collections.unmodifiableMap(builder.reservedWordsMappings);
serverVariables = Collections.unmodifiableMap(builder.serverVariables);
@@ -430,7 +452,9 @@ public final class GeneratorSettings implements Serializable {
typeMappings = Collections.unmodifiableMap(new HashMap<>(0));
additionalProperties = Collections.unmodifiableMap(new HashMap<>(0));
importMappings = Collections.unmodifiableMap(new HashMap<>(0));
schemaMappings = Collections.unmodifiableMap(new HashMap<>(0));
inlineSchemaNameMappings = Collections.unmodifiableMap(new HashMap<>(0));
inlineSchemaNameDefaults = Collections.unmodifiableMap(new HashMap<>(0));
languageSpecificPrimitives = Collections.unmodifiableSet(new HashSet<>(0));
reservedWordsMappings = Collections.unmodifiableMap(new HashMap<>(0));
serverVariables = Collections.unmodifiableMap(new HashMap<>(0));
@@ -482,9 +506,15 @@ public final class GeneratorSettings implements Serializable {
if (copy.getImportMappings() != null) {
builder.importMappings.putAll(copy.getImportMappings());
}
if (copy.getSchemaMappings() != null) {
builder.schemaMappings.putAll(copy.getSchemaMappings());
}
if (copy.getInlineSchemaNameMappings() != null) {
builder.inlineSchemaNameMappings.putAll(copy.getInlineSchemaNameMappings());
}
if (copy.getInlineSchemaNameDefaults() != null) {
builder.inlineSchemaNameDefaults.putAll(copy.getInlineSchemaNameDefaults());
}
if (copy.getLanguageSpecificPrimitives() != null) {
builder.languageSpecificPrimitives.addAll(copy.getLanguageSpecificPrimitives());
}
@@ -524,7 +554,9 @@ public final class GeneratorSettings implements Serializable {
private Map<String, String> typeMappings;
private Map<String, Object> additionalProperties;
private Map<String, String> importMappings;
private Map<String, String> schemaMappings;
private Map<String, String> inlineSchemaNameMappings;
private Map<String, String> inlineSchemaNameDefaults;
private Set<String> languageSpecificPrimitives;
private Map<String, String> reservedWordsMappings;
private Map<String, String> serverVariables;
@@ -542,7 +574,9 @@ public final class GeneratorSettings implements Serializable {
typeMappings = new HashMap<>();
additionalProperties = new HashMap<>();
importMappings = new HashMap<>();
schemaMappings = new HashMap<>();
inlineSchemaNameMappings = new HashMap<>();
inlineSchemaNameDefaults = new HashMap<>();
languageSpecificPrimitives = new HashSet<>();
reservedWordsMappings = new HashMap<>();
serverVariables = new HashMap<>();
@@ -759,6 +793,32 @@ public final class GeneratorSettings implements Serializable {
return this;
}
/**
* Sets the {@code schemaMappings} and returns a reference to this Builder so that the methods can be chained together.
*
* @param schemaMappings the {@code schemaMappings} to set
* @return a reference to this Builder
*/
public Builder withSchemaMappings(Map<String, String> schemaMappings) {
this.schemaMappings = schemaMappings;
return this;
}
/**
* Sets a single {@code schemaMappings} and returns a reference to this Builder so that the methods can be chained together.
*
* @param key A key for some schema mapping
* @param value The value of some schema mapping
* @return a reference to this Builder
*/
public Builder withSchemaMapping(String key, String value) {
if (this.schemaMappings == null) {
this.schemaMappings = new HashMap<>();
}
this.schemaMappings.put(key, value);
return this;
}
/**
* Sets the {@code importMappings} and returns a reference to this Builder so that the methods can be chained together.
*
@@ -785,6 +845,32 @@ public final class GeneratorSettings implements Serializable {
return this;
}
/**
* Sets the {@code inlineSchemaNameDefaults} and returns a reference to this Builder so that the methods can be chained together.
*
* @param inlineSchemaNameDefaults the {@code inlineSchemaNameDefaults} to set
* @return a reference to this Builder
*/
public Builder withInlineSchemaNameDefaults(Map<String, String> inlineSchemaNameDefaults) {
this.inlineSchemaNameDefaults = inlineSchemaNameDefaults;
return this;
}
/**
* Sets a single {@code inlineSchemaNameDefaults} and returns a reference to this Builder so that the methods can be chained together.
*
* @param key Default naming convention
* @param value The value
* @return a reference to this Builder
*/
public Builder withInlineSchemaNameDefault(String key, String value) {
if (this.inlineSchemaNameDefaults == null) {
this.inlineSchemaNameDefaults = new HashMap<>();
}
this.inlineSchemaNameDefaults.put(key, value);
return this;
}
/**
* Sets the {@code inlineSchemaNameMappings} and returns a reference to this Builder so that the methods can be chained together.
*
@@ -799,8 +885,8 @@ public final class GeneratorSettings implements Serializable {
/**
* Sets a single {@code inlineSchemaNameMappings} and returns a reference to this Builder so that the methods can be chained together.
*
* @param key A key for some import mapping
* @param value The value of some import mapping
* @param key A key for the inline schema mapping
* @param value The value of inline schema mapping
* @return a reference to this Builder
*/
public Builder withInlineSchemaNameMapping(String key, String value) {
@@ -996,7 +1082,9 @@ public final class GeneratorSettings implements Serializable {
Objects.equals(getTypeMappings(), that.getTypeMappings()) &&
Objects.equals(getAdditionalProperties(), that.getAdditionalProperties()) &&
Objects.equals(getImportMappings(), that.getImportMappings()) &&
Objects.equals(getSchemaMappings(), that.getSchemaMappings()) &&
Objects.equals(getInlineSchemaNameMappings(), that.getInlineSchemaNameMappings()) &&
Objects.equals(getInlineSchemaNameDefaults(), that.getInlineSchemaNameDefaults()) &&
Objects.equals(getLanguageSpecificPrimitives(), that.getLanguageSpecificPrimitives()) &&
Objects.equals(getReservedWordsMappings(), that.getReservedWordsMappings()) &&
Objects.equals(getGitHost(), that.getGitHost()) &&
@@ -1025,7 +1113,9 @@ public final class GeneratorSettings implements Serializable {
getTypeMappings(),
getAdditionalProperties(),
getImportMappings(),
getSchemaMappings(),
getInlineSchemaNameMappings(),
getInlineSchemaNameDefaults(),
getLanguageSpecificPrimitives(),
getReservedWordsMappings(),
getGitHost(),

View File

@@ -71,6 +71,7 @@ public class WorkflowSettings {
this.outputDir = builder.outputDir;
this.verbose = builder.verbose;
this.skipOverwrite = builder.skipOverwrite;
this.skipOperationExample = builder.skipOperationExample;
this.removeOperationIdPrefix = builder.removeOperationIdPrefix;
this.logToStderr = builder.logToStderr;
this.validateSpec = builder.validateSpec;

View File

@@ -97,7 +97,7 @@ task validateGoodSpec(type: org.openapitools.generator.gradle.plugin.tasks.Valid
[source,group]
----
plugins {
id "org.openapi.generator" version "5.3.0"
id "org.openapi.generator" version "6.0.1"
}
----
@@ -113,7 +113,7 @@ buildscript {
// url "https://plugins.gradle.org/m2/"
}
dependencies {
classpath "org.openapitools:openapi-generator-gradle-plugin:5.3.0"
classpath "org.openapitools:openapi-generator-gradle-plugin:6.0.1"
}
}
@@ -695,7 +695,7 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath('org.openapitools:openapi-generator-gradle-plugin:5.3.0') {
classpath('org.openapitools:openapi-generator-gradle-plugin:6.0.1') {
exclude group: 'com.google.guava'
}
}

View File

@@ -1,5 +1,5 @@
# RELEASE_VERSION
openApiGeneratorVersion=6.0.0
openApiGeneratorVersion=6.1.0-SNAPSHOT
# /RELEASE_VERSION
# BEGIN placeholders

View File

@@ -4,7 +4,7 @@
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-project</artifactId>
<!-- RELEASE_VERSION -->
<version>6.0.0</version>
<version>6.1.0-SNAPSHOT</version>
<!-- /RELEASE_VERSION -->
<relativePath>../..</relativePath>
</parent>

View File

@@ -18,5 +18,5 @@ gradle generateGoWithInvalidSpec # expected outcome: BUILD FAILED
The samples can be tested against other versions of the plugin using the `openApiGeneratorVersion` property. For example:
```bash
gradle -PopenApiGeneratorVersion=5.3.0 openApiValidate
gradle -PopenApiGeneratorVersion=6.0.1 openApiValidate
```

View File

@@ -1,3 +1,3 @@
# RELEASE_VERSION
openApiGeneratorVersion=6.0.0
openApiGeneratorVersion=6.1.0-SNAPSHOT
# /RELEASE_VERSION

View File

@@ -37,27 +37,27 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.run {
val meta = extensions.create(
"openApiMeta",
OpenApiGeneratorMetaExtension::class.java,
project
"openApiMeta",
OpenApiGeneratorMetaExtension::class.java,
project
)
val validate = extensions.create(
"openApiValidate",
OpenApiGeneratorValidateExtension::class.java,
project
"openApiValidate",
OpenApiGeneratorValidateExtension::class.java,
project
)
val generate = extensions.create(
"openApiGenerate",
OpenApiGeneratorGenerateExtension::class.java,
project
"openApiGenerate",
OpenApiGeneratorGenerateExtension::class.java,
project
)
val generators = extensions.create(
"openApiGenerators",
OpenApiGeneratorGeneratorsExtension::class.java,
project
"openApiGenerators",
OpenApiGeneratorGeneratorsExtension::class.java,
project
)
generate.outputDir.set("$buildDir/generate-resources/main")
@@ -89,7 +89,8 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
register("openApiGenerate", GenerateTask::class.java).configure {
group = pluginGroup
description = "Generate code via Open API Tools Generator for Open API 2.0 or 3.x specification documents."
description =
"Generate code via Open API Tools Generator for Open API 2.0 or 3.x specification documents."
verbose.set(generate.verbose)
validateSpec.set(generate.validateSpec)
@@ -113,7 +114,9 @@ class OpenApiGeneratorPlugin : Plugin<Project> {
serverVariables.set(generate.serverVariables)
languageSpecificPrimitives.set(generate.languageSpecificPrimitives)
importMappings.set(generate.importMappings)
schemaMappings.set(generate.schemaMappings)
inlineSchemaNameMappings.set(generate.inlineSchemaNameMappings)
inlineSchemaNameDefaults.set(generate.inlineSchemaNameDefaults)
invokerPackage.set(generate.invokerPackage)
groupId.set(generate.groupId)
id.set(generate.id)

View File

@@ -22,19 +22,18 @@ import org.gradle.kotlin.dsl.mapProperty
import org.gradle.kotlin.dsl.property
/**
* Gradle project level extension object definition for the generate task
* Gradle project level extension object definition for the `generate` task
*
* @author Jim Schubert
*/
open class OpenApiGeneratorGenerateExtension(project: Project) {
/**
* The verbosity of generation
*/
val verbose = project.objects.property<Boolean>()
/**
* Whether or not an input specification should be validated upon generation.
* Whether an input specification should be validated upon generation.
*/
val validateSpec = project.objects.property<Boolean>()
@@ -141,28 +140,38 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
*/
val importMappings = project.objects.mapProperty<String, String>()
/**
* Specifies mappings between a given schema and the new one
*/
val schemaMappings = project.objects.mapProperty<String, String>()
/**
* Specifies mappings between an inline schema name and the new name
*/
val inlineSchemaNameMappings = project.objects.mapProperty<String, String>()
/**
* Specifies default values for inline schema naming convention
*/
val inlineSchemaNameDefaults = project.objects.mapProperty<String, String>()
/**
* Root package for generated code.
*/
val invokerPackage = project.objects.property<String>()
/**
* GroupId in generated pom.xml/build.gradle or other build script. Language-specific conversions occur in non-jvm generators.
* GroupId in generated pom.xml/build.gradle.kts or other build script. Language-specific conversions occur in non-jvm generators.
*/
val groupId = project.objects.property<String>()
/**
* ArtifactId in generated pom.xml/build.gradle or other build script. Language-specific conversions occur in non-jvm generators.
* ArtifactId in generated pom.xml/build.gradle.kts or other build script. Language-specific conversions occur in non-jvm generators.
*/
val id = project.objects.property<String>()
/**
* Artifact version in generated pom.xml/build.gradle or other build script. Language-specific conversions occur in non-jvm generators.
* Artifact version in generated pom.xml/build.gradle.kts or other build script. Language-specific conversions occur in non-jvm generators.
*/
val version = project.objects.property<String>()
@@ -237,7 +246,7 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
/**
* Defines which supporting files should be generated. This allows you to create a subset of generated files (or none at all).
*
* Supporting files are those related to projects/frameworks which may be modified
* Supporting files are those related to `projects/frameworks` which may be modified
* by consumers.
*
* NOTE: Configuring any one of [apiFilesConstrainedTo], [modelFilesConstrainedTo], or [supportingFilesConstrainedTo] results
@@ -247,7 +256,7 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
val supportingFilesConstrainedTo = project.objects.listProperty<String>()
/**
* Defines whether or not model-related _test_ files should be generated.
* Defines whether model-related _test_ files should be generated.
*
* This option enables/disables generation of ALL model-related _test_ files.
*
@@ -257,7 +266,7 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
val generateModelTests = project.objects.property<Boolean>()
/**
* Defines whether or not model-related _documentation_ files should be generated.
* Defines whether model-related _documentation_ files should be generated.
*
* This option enables/disables generation of ALL model-related _documentation_ files.
*
@@ -267,7 +276,7 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
val generateModelDocumentation = project.objects.property<Boolean>()
/**
* Defines whether or not api-related _test_ files should be generated.
* Defines whether api-related _test_ files should be generated.
*
* This option enables/disables generation of ALL api-related _test_ files.
*
@@ -277,7 +286,7 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
val generateApiTests = project.objects.property<Boolean>()
/**
* Defines whether or not api-related _documentation_ files should be generated.
* Defines whether api-related _documentation_ files should be generated.
*
* This option enables/disables generation of ALL api-related _documentation_ files.
*

View File

@@ -17,7 +17,6 @@
package org.openapitools.generator.gradle.plugin.extensions
import org.gradle.api.Project
import org.gradle.api.tasks.Internal
import org.gradle.kotlin.dsl.listProperty
import org.openapitools.codegen.meta.Stability
@@ -37,7 +36,6 @@ open class OpenApiGeneratorGeneratorsExtension(project: Project) {
}
@Suppress("MemberVisibilityCanBePrivate")
fun applyDefaults(){
include.set(Stability.values().map { s -> s.value() }.filterNot { it == Stability.DEPRECATED.value() })
}
fun applyDefaults() =
include.set(Stability.values().map { it.value() }.filterNot { it == Stability.DEPRECATED.value() })
}

View File

@@ -31,7 +31,7 @@ open class OpenApiGeneratorValidateExtension(project: Project) {
val inputSpec = project.objects.property<String>()
/**
* Whether or not to offer recommendations related to the validated specification document.
* Whether to offer recommendations related to the validated specification document.
*/
val recommend = project.objects.property<Boolean?>()
@@ -40,7 +40,5 @@ open class OpenApiGeneratorValidateExtension(project: Project) {
}
@Suppress("MemberVisibilityCanBePrivate")
fun applyDefaults(){
recommend.set(true)
}
fun applyDefaults() = recommend.set(true)
}

View File

@@ -51,7 +51,6 @@ import org.openapitools.codegen.config.GlobalSettings
@Suppress("UnstableApiUsage")
@CacheableTask
open class GenerateTask : DefaultTask() {
/**
* The verbosity of generation
*/
@@ -60,7 +59,7 @@ open class GenerateTask : DefaultTask() {
val verbose = project.objects.property<Boolean>()
/**
* Whether or not an input specification should be validated upon generation.
* Whether an input specification should be validated upon generation.
*/
@Optional
@Input
@@ -219,6 +218,13 @@ open class GenerateTask : DefaultTask() {
@Input
val importMappings = project.objects.mapProperty<String, String>()
/**
* Specifies mappings between a given schema and the new one.
*/
@Optional
@Input
val schemaMappings = project.objects.mapProperty<String, String>()
/**
* Specifies mappings between the inline scheme name and the new name
*/
@@ -226,6 +232,13 @@ open class GenerateTask : DefaultTask() {
@Input
val inlineSchemaNameMappings = project.objects.mapProperty<String, String>()
/**
* Specifies default values for inline schema naming convention
*/
@Optional
@Input
val inlineSchemaNameDefaults = project.objects.mapProperty<String, String>()
/**
* Root package for generated code.
*/
@@ -234,21 +247,21 @@ open class GenerateTask : DefaultTask() {
val invokerPackage = project.objects.property<String>()
/**
* GroupId in generated pom.xml/build.gradle or other build script. Language-specific conversions occur in non-jvm generators.
* GroupId in generated pom.xml/build.gradle.kts or other build script. Language-specific conversions occur in non-jvm generators.
*/
@Optional
@Input
val groupId = project.objects.property<String>()
/**
* ArtifactId in generated pom.xml/build.gradle or other build script. Language-specific conversions occur in non-jvm generators.
* ArtifactId in generated pom.xml/build.gradle.kts or other build script. Language-specific conversions occur in non-jvm generators.
*/
@Optional
@Input
val id = project.objects.property<String>()
/**
* Artifact version in generated pom.xml/build.gradle or other build script. Language-specific conversions occur in non-jvm generators.
* Artifact version in generated pom.xml/build.gradle.kts or other build script. Language-specific conversions occur in non-jvm generators.
*/
@Optional
@Input
@@ -351,7 +364,7 @@ open class GenerateTask : DefaultTask() {
/**
* Defines which supporting files should be generated. This allows you to create a subset of generated files (or none at all).
*
* Supporting files are those related to projects/frameworks which may be modified
* Supporting files are those related to `projects/frameworks` which may be modified
* by consumers.
*
* NOTE: Configuring any one of [apiFilesConstrainedTo], [modelFilesConstrainedTo], or [supportingFilesConstrainedTo] results
@@ -363,7 +376,7 @@ open class GenerateTask : DefaultTask() {
val supportingFilesConstrainedTo = project.objects.listProperty<String>()
/**
* Defines whether or not model-related _test_ files should be generated.
* Defines whether model-related _test_ files should be generated.
*
* This option enables/disables generation of ALL model-related _test_ files.
*
@@ -375,7 +388,7 @@ open class GenerateTask : DefaultTask() {
val generateModelTests = project.objects.property<Boolean>()
/**
* Defines whether or not model-related _documentation_ files should be generated.
* Defines whether model-related _documentation_ files should be generated.
*
* This option enables/disables generation of ALL model-related _documentation_ files.
*
@@ -387,7 +400,7 @@ open class GenerateTask : DefaultTask() {
val generateModelDocumentation = project.objects.property<Boolean>()
/**
* Defines whether or not api-related _test_ files should be generated.
* Defines whether api-related _test_ files should be generated.
*
* This option enables/disables generation of ALL api-related _test_ files.
*
@@ -399,7 +412,7 @@ open class GenerateTask : DefaultTask() {
val generateApiTests = project.objects.property<Boolean>()
/**
* Defines whether or not api-related _documentation_ files should be generated.
* Defines whether api-related _documentation_ files should be generated.
*
* This option enables/disables generation of ALL api-related _documentation_ files.
*
@@ -497,7 +510,10 @@ open class GenerateTask : DefaultTask() {
}
if (supportingFilesConstrainedTo.isPresent && supportingFilesConstrainedTo.get().isNotEmpty()) {
GlobalSettings.setProperty(CodegenConstants.SUPPORTING_FILES, supportingFilesConstrainedTo.get().joinToString(","))
GlobalSettings.setProperty(
CodegenConstants.SUPPORTING_FILES,
supportingFilesConstrainedTo.get().joinToString(",")
)
} else {
GlobalSettings.clearProperty(CodegenConstants.SUPPORTING_FILES)
}
@@ -685,12 +701,24 @@ open class GenerateTask : DefaultTask() {
}
}
if (schemaMappings.isPresent) {
schemaMappings.get().forEach { entry ->
configurator.addSchemaMapping(entry.key, entry.value)
}
}
if (inlineSchemaNameMappings.isPresent) {
inlineSchemaNameMappings.get().forEach { entry ->
configurator.addInlineSchemaNameMapping(entry.key, entry.value)
}
}
if (inlineSchemaNameDefaults.isPresent) {
inlineSchemaNameDefaults.get().forEach { entry ->
configurator.addInlineSchemaNameDefault(entry.key, entry.value)
}
}
if (typeMappings.isPresent) {
typeMappings.get().forEach { entry ->
configurator.addTypeMapping(entry.key, entry.value)
@@ -722,11 +750,11 @@ open class GenerateTask : DefaultTask() {
}
val clientOptInput = configurator.toClientOptInput()
val codgenConfig = clientOptInput.config
val codegenConfig = clientOptInput.config
if (configOptions.isPresent) {
val userSpecifiedConfigOptions = configOptions.get()
codgenConfig.cliOptions().forEach {
codegenConfig.cliOptions().forEach {
if (userSpecifiedConfigOptions.containsKey(it.opt)) {
clientOptInput.config.additionalProperties()[it.opt] = userSpecifiedConfigOptions[it.opt]
}

View File

@@ -43,7 +43,6 @@ open class GeneratorsTask : DefaultTask() {
@get:Internal
val include = project.objects.listProperty<String>()
@Suppress("unused")
@TaskAction
fun doWork() {
val generators = CodegenConfigLoader.getAll()

View File

@@ -44,7 +44,6 @@ import java.nio.charset.Charset
*/
@CacheableTask
open class MetaTask : DefaultTask() {
@get:Input
val generatorName = project.objects.property<String>()
@@ -54,10 +53,8 @@ open class MetaTask : DefaultTask() {
@get:OutputDirectory
val outputFolder = project.objects.property<String>()
@Suppress("unused")
@TaskAction
fun doWork() {
val packageToPath = packageName.get().replace(".", File.separator)
val dir = File(outputFolder.get())
val klass = "${generatorName.get().titleCasedTextOnly()}Generator"
@@ -73,21 +70,28 @@ open class MetaTask : DefaultTask() {
logger.debug("generator class: {}", klass)
val supportingFiles = listOf(
SupportingFile("pom.mustache", "", "pom.xml"),
SupportingFile("generatorClass.mustache", dir("src", "main", "java", packageToPath), "$klass.java"),
SupportingFile("README.mustache", "", "README.md"),
SupportingFile("api.template", dir("src", "main", "resources", templateResourceDir), "api.mustache"),
SupportingFile("model.template", dir("src", "main", "resources", templateResourceDir), "model.mustache"),
SupportingFile("myFile.template", dir("src", "main", "resources", templateResourceDir), "myFile.mustache"),
SupportingFile("services.mustache", dir("src", "main", "resources", "META-INF", "services"), CodegenConfig::class.java.canonicalName))
SupportingFile("pom.mustache", "", "pom.xml"),
SupportingFile("generatorClass.mustache", dir("src", "main", "java", packageToPath), "$klass.java"),
SupportingFile("README.mustache", "", "README.md"),
SupportingFile("api.template", dir("src", "main", "resources", templateResourceDir), "api.mustache"),
SupportingFile("model.template", dir("src", "main", "resources", templateResourceDir), "model.mustache"),
SupportingFile("myFile.template", dir("src", "main", "resources", templateResourceDir), "myFile.mustache"),
SupportingFile(
"services.mustache",
dir("src", "main", "resources", "META-INF", "services"),
CodegenConfig::class.java.canonicalName
)
)
val currentVersion = CodegenConstants::class.java.`package`.implementationVersion
val data = mapOf("generatorPackage" to packageToPath,
"generatorClass" to klass,
"name" to templateResourceDir,
"fullyQualifiedGeneratorClass" to "${packageName.get()}.$klass",
"openapiGeneratorVersion" to currentVersion)
val data = mapOf(
"generatorPackage" to packageToPath,
"generatorClass" to klass,
"name" to templateResourceDir,
"fullyQualifiedGeneratorClass" to "${packageName.get()}.$klass",
"openapiGeneratorVersion" to currentVersion
)
supportingFiles.map {
try {
@@ -96,9 +100,9 @@ open class MetaTask : DefaultTask() {
val outputFile = File(destinationFolder, it.destinationFilename)
val templateProcessor = TemplateManager(
TemplateManagerOptions(false, false),
MustacheEngineAdapter(),
arrayOf(CommonTemplateContentLocator("codegen"))
TemplateManagerOptions(false, false),
MustacheEngineAdapter(),
arrayOf(CommonTemplateContentLocator("codegen"))
)
val template = templateProcessor.getFullTemplateContents(it.templateFile)
@@ -110,9 +114,9 @@ open class MetaTask : DefaultTask() {
if (it.templateFile.endsWith(".mustache")) {
formatted = Mustache.compiler()
.withLoader(loader)
.defaultValue("")
.compile(template).execute(data)
.withLoader(loader)
.defaultValue("")
.compile(template).execute(data)
}
outputFile.writeText(formatted, Charset.forName("UTF8"))
@@ -131,11 +135,10 @@ open class MetaTask : DefaultTask() {
}
private fun String.titleCasedTextOnly(): String =
this.split(Regex("[^a-zA-Z0-9]")).joinToString(separator = "", transform = String::capitalize)
split(Regex("[^a-zA-Z0-9]")).joinToString(separator = "", transform = String::capitalize)
private fun String.hyphenatedTextOnly(): String =
this.split(Regex("[^a-zA-Z0-9]")).joinToString(separator = "-", transform = String::toLowerCase)
split(Regex("[^a-zA-Z0-9]")).joinToString(separator = "-", transform = String::toLowerCase)
private fun dir(vararg parts: String): String =
parts.joinToString(separator = File.separator)
private fun dir(vararg parts: String): String = parts.joinToString(separator = File.separator)
}

View File

@@ -14,8 +14,6 @@
* limitations under the License.
*/
@file:Suppress("UnstableApiUsage")
package org.openapitools.generator.gradle.plugin.tasks
import io.swagger.parser.OpenAPIParser
@@ -45,7 +43,7 @@ import org.openapitools.codegen.validations.oas.RuleConfiguration
*
* ./gradlew openApiValidate --input=/path/to/file
*
* build.gradle:
* build.gradle.kts:
*
* openApiMeta {
* inputSpec = "path/to/spec.yaml"
@@ -62,7 +60,6 @@ open class ValidateTask : DefaultTask() {
@Input
val recommend = project.objects.property<Boolean?>()
@Suppress("unused")
@get:Internal
@set:Option(option = "input", description = "The input specification.")
var input: String? = null
@@ -70,7 +67,6 @@ open class ValidateTask : DefaultTask() {
inputSpec.set(value)
}
@Suppress("unused")
@TaskAction
fun doWork() {
val logger = Logging.getLogger(javaClass)
@@ -105,7 +101,6 @@ open class ValidateTask : DefaultTask() {
}
if (messages.isNotEmpty() || validationResult.errors.isNotEmpty()) {
out.withStyle(StyledTextOutput.Style.Error)
out.println("\nSpec is invalid.\nIssues:\n")

View File

@@ -4,12 +4,13 @@ import org.gradle.testkit.runner.GradleRunner
import org.gradle.testkit.runner.TaskOutcome
import org.testng.annotations.Test
import java.io.File
import java.nio.file.Files.createTempDirectory
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertTrue
class GenerateTaskDslTest : TestBase() {
override var temp: File = createTempDir(javaClass.simpleName)
override var temp: File = createTempDirectory(javaClass.simpleName).toFile()
private val defaultBuildGradle = """
plugins {
@@ -61,7 +62,7 @@ class GenerateTaskDslTest : TestBase() {
"build/kotlin/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt"
).map {
val f = File(temp, it)
assertTrue(f.exists() && f.isFile, "An expected file was not generated when invoking the generation.")
assertTrue(f.exists() && f.isFile, "An expected file was not generated when invoking the generation: $f")
}
assertEquals(TaskOutcome.SUCCESS, result.task(":openApiGenerate")?.outcome,
@@ -110,7 +111,7 @@ class GenerateTaskDslTest : TestBase() {
"build/java/src/main/java/org/openapitools/example/api/PetsApiClassSuffix.java"
).map {
val f = File(temp, it)
assertTrue(f.exists() && f.isFile, "An expected file was not generated when invoking the generation. - " + f)
assertTrue(f.exists() && f.isFile, "An expected file was not generated when invoking the generation. - $f")
}
assertEquals(TaskOutcome.SUCCESS, result.task(":openApiGenerate")?.outcome,

View File

@@ -27,7 +27,7 @@ class GeneratorsTaskDslTest : TestBase() {
.build()
// Assert
assertTrue(result.output.contains("The following generators are available:"), "User friendly generator notice is missing.")
assertTrue(result.output.contains("The following generators are available:"), "User-friendly generator notice is missing.")
assertTrue(result.output.contains("CLIENT generators:"), "Expected client generator header is missing.")
assertTrue(result.output.contains("android"), "Spot-checking listed client generators is missing a client generator.")
assertTrue(result.output.contains("SERVER generators:"), "Expected server generator header is missing.")

View File

@@ -34,7 +34,7 @@ class MetaTaskDslTest : TestBase() {
.build()
// Assert
assertTrue(result.output.contains("Wrote file to"), "User friendly write notice is missing.")
assertTrue(result.output.contains("Wrote file to"), "User-friendly write notice is missing.")
// To avoid any OS-specific output causing issues with our stdout comparisons, only compare on expected filenames.
listOf(

View File

@@ -4,27 +4,24 @@ import org.testng.annotations.AfterMethod
import org.testng.annotations.BeforeMethod
import java.io.File
import java.io.InputStream
import java.nio.file.Files.createTempDirectory
abstract class TestBase {
protected open lateinit var temp: File
@BeforeMethod
protected fun before() {
temp = createTempDir(javaClass.simpleName)
temp = createTempDirectory(javaClass.simpleName).toFile()
temp.deleteOnExit()
}
@AfterMethod
protected fun after(){
protected fun after() {
temp.deleteRecursively()
}
protected fun withProject(
buildContents: String,
projectFiles: Map<String, InputStream> = mapOf()
) {
val buildFile = File(temp,"build.gradle")
buildFile.writeText(buildContents)
protected fun withProject(buildContents: String, projectFiles: Map<String, InputStream> = mapOf()) {
File(temp, "build.gradle").writeText(buildContents)
projectFiles.forEach { entry ->
val target = File(temp, entry.key)

Some files were not shown because too many files have changed in this diff Show More