-
-
Notifications
You must be signed in to change notification settings - Fork 7.3k
New generator for Scala3 + sttp4 + jsoniter-scala #21908
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
24 commits
Select commit
Hold shift + click to select a range
e640397
started impl
lbialy 296d071
seems to work
lbialy eebac6d
generated docs
lbialy ab448bb
fix class name duplicates on case-insensitive filesystems
lbialy c630432
wip
lbialy 62c24ae
added script to rebuild all projects
lbialy a6956e4
dropped bash slop
lbialy 147acb3
fixed directory structure
lbialy 8edb63d
ok, now it makes sense
lbialy 5887936
update sttp, serialize query params, fix enums serialization, fix not…
Kamil-Lontkowski 135ecbd
fix compile errors after sttp upgrade, fix missing enum import in ope…
Kamil-Lontkowski fb93494
auth support
Kamil-Lontkowski 05706ee
fix enums entries, multipart support(partially), header, path and coo…
Kamil-Lontkowski 0a9c2a8
support of option fields
Kamil-Lontkowski 1a630aa
Merge pull request #1 from lbialy/scala-sttp4-jsoniter-wip
lbialy 9a338b1
Merge branch 'scala-sttp4-jsoniter' of https://github.com/lbialy/open…
wing328 c29e13f
add samples, update workflow
wing328 e9b3e76
add new files
wing328 77585eb
fix
wing328 6f56b58
remove tab
wing328 5c4ae7a
remove tab
wing328 e04ed99
update doc
wing328 e7b85be
update header
wing328 d644240
update readme
wing328 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| generatorName: scala-sttp4-jsoniter | ||
| outputDir: samples/client/petstore/scala-sttp4-jsoniter | ||
| inputSpec: modules/openapi-generator/src/test/resources/3_0/scala/scala-sttp4-jsoniter/petstore.yaml | ||
| templateDir: modules/openapi-generator/src/main/resources/scala-sttp4-jsoniter | ||
| additionalProperties: | ||
| hideGenerationTimestamp: "true" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,260 @@ | ||
| --- | ||
| title: Documentation for the scala-sttp4-jsoniter Generator | ||
| --- | ||
|
|
||
| ## METADATA | ||
|
|
||
| | Property | Value | Notes | | ||
| | -------- | ----- | ----- | | ||
| | generator name | scala-sttp4-jsoniter | pass this to the generate command after -g | | ||
| | generator stability | BETA | | | ||
| | generator type | CLIENT | | | ||
| | generator language | Scala | | | ||
| | generator default templating engine | mustache | | | ||
| | helpTxt | Generates a Scala client library (beta) based on Sttp4 and Jsoniter-Scala. | | | ||
|
|
||
| ## 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. | ||
|
|
||
| | Option | Description | Values | Default | | ||
| | ------ | ----------- | ------ | ------- | | ||
| |allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false| | ||
| |apiPackage|package for generated api classes| |null| | ||
| |disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|<dl><dt>**false**</dt><dd>The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.</dd><dt>**true**</dt><dd>Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.</dd></dl>|true| | ||
| |ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| | ||
| |enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.</dd></dl>|false| | ||
| |jsoniterVersion|The version of jsoniter-scala library| |2.31.1| | ||
| |legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.</dd></dl>|true| | ||
| |mainPackage|Top-level package name, which defines 'apiPackage', 'modelPackage', 'invokerPackage'| |org.openapitools.client| | ||
| |modelPackage|package for generated models| |null| | ||
| |modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |camelCase| | ||
| |prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false| | ||
| |separateErrorChannel|Whether to return response as F[Either[ResponseError[ErrorType], ReturnType]]] or to flatten response's error raising them through enclosing monad (F[ReturnType]).| |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| | ||
| |sourceFolder|source folder for generated code| |null| | ||
| |sttpClientVersion|The version of sttp client| |4.0.0-RC1| | ||
|
|
||
| ## IMPORT MAPPING | ||
|
|
||
| | Type/Alias | Imports | | ||
| | ---------- | ------- | | ||
| |Array|java.util.List| | ||
| |ArrayList|java.util.ArrayList| | ||
| |BigDecimal|scala.math.BigDecimal| | ||
| |Date|java.util.Date| | ||
| |DateTime|org.joda.time.*| | ||
| |File|java.io.File| | ||
| |HashMap|java.util.HashMap| | ||
| |ListBuffer|scala.collection.mutable.ListBuffer| | ||
| |ListSet|scala.collection.immutable.ListSet| | ||
| |LocalDate|org.joda.time.*| | ||
| |LocalDateTime|org.joda.time.*| | ||
| |LocalTime|org.joda.time.*| | ||
| |Seq|scala.collection.immutable.Seq| | ||
| |Set|scala.collection.immutable.Set| | ||
| |Timestamp|java.sql.Timestamp| | ||
| |URI|java.net.URI| | ||
| |UUID|java.util.UUID| | ||
| |io.circe.Json|com.github.plokhotnyuk.jsoniter_scala.circe.JsoniterScalaCodec.*| | ||
|
|
||
|
|
||
| ## INSTANTIATION TYPES | ||
|
|
||
| | Type/Alias | Instantiated By | | ||
| | ---------- | --------------- | | ||
| |array|ListBuffer| | ||
| |map|Map| | ||
| |set|Set| | ||
|
|
||
|
|
||
| ## LANGUAGE PRIMITIVES | ||
|
|
||
| <ul class="column-ul"> | ||
| <li>Any</li> | ||
| <li>Array</li> | ||
| <li>Boolean</li> | ||
| <li>Byte</li> | ||
| <li>Double</li> | ||
| <li>Float</li> | ||
| <li>Int</li> | ||
| <li>List</li> | ||
| <li>Long</li> | ||
| <li>Map</li> | ||
| <li>Object</li> | ||
| <li>Seq</li> | ||
| <li>String</li> | ||
| <li>boolean</li> | ||
| </ul> | ||
|
|
||
| ## RESERVED WORDS | ||
|
|
||
| <ul class="column-ul"> | ||
| <li>Either</li> | ||
| <li>Method</li> | ||
| <li>Request</li> | ||
| <li>abstract</li> | ||
| <li>case</li> | ||
| <li>catch</li> | ||
| <li>class</li> | ||
| <li>clone</li> | ||
| <li>def</li> | ||
| <li>do</li> | ||
| <li>else</li> | ||
| <li>enum</li> | ||
| <li>export</li> | ||
| <li>extends</li> | ||
| <li>false</li> | ||
| <li>final</li> | ||
| <li>finally</li> | ||
| <li>for</li> | ||
| <li>forSome</li> | ||
| <li>given</li> | ||
| <li>if</li> | ||
| <li>implicit</li> | ||
| <li>import</li> | ||
| <li>lazy</li> | ||
| <li>match</li> | ||
| <li>new</li> | ||
| <li>null</li> | ||
| <li>object</li> | ||
| <li>override</li> | ||
| <li>package</li> | ||
| <li>private</li> | ||
| <li>protected</li> | ||
| <li>return</li> | ||
| <li>sealed</li> | ||
| <li>super</li> | ||
| <li>then</li> | ||
| <li>this</li> | ||
| <li>throw</li> | ||
| <li>trait</li> | ||
| <li>true</li> | ||
| <li>try</li> | ||
| <li>type</li> | ||
| <li>using</li> | ||
| <li>val</li> | ||
| <li>var</li> | ||
| <li>while</li> | ||
| <li>with</li> | ||
| <li>yield</li> | ||
| </ul> | ||
|
|
||
| ## FEATURE SET | ||
|
|
||
|
|
||
| ### Client Modification Feature | ||
| | Name | Supported | Defined By | | ||
| | ---- | --------- | ---------- | | ||
| |BasePath|✓|ToolingExtension | ||
| |Authorizations|✗|ToolingExtension | ||
| |UserAgent|✓|ToolingExtension | ||
| |MockServer|✗|ToolingExtension | ||
|
|
||
| ### Data Type Feature | ||
| | Name | Supported | Defined By | | ||
| | ---- | --------- | ---------- | | ||
| |Custom|✗|OAS2,OAS3 | ||
| |Int32|✓|OAS2,OAS3 | ||
| |Int64|✓|OAS2,OAS3 | ||
| |Float|✓|OAS2,OAS3 | ||
| |Double|✓|OAS2,OAS3 | ||
| |Decimal|✓|ToolingExtension | ||
| |String|✓|OAS2,OAS3 | ||
| |Byte|✓|OAS2,OAS3 | ||
| |Binary|✓|OAS2,OAS3 | ||
| |Boolean|✓|OAS2,OAS3 | ||
| |Date|✓|OAS2,OAS3 | ||
| |DateTime|✓|OAS2,OAS3 | ||
| |Password|✓|OAS2,OAS3 | ||
| |File|✓|OAS2 | ||
| |Uuid|✗| | ||
| |Array|✓|OAS2,OAS3 | ||
| |Null|✗|OAS3 | ||
| |AnyType|✗|OAS2,OAS3 | ||
| |Object|✓|OAS2,OAS3 | ||
| |Maps|✓|ToolingExtension | ||
| |CollectionFormat|✓|OAS2 | ||
| |CollectionFormatMulti|✓|OAS2 | ||
| |Enum|✓|OAS2,OAS3 | ||
| |ArrayOfEnum|✓|ToolingExtension | ||
| |ArrayOfModel|✓|ToolingExtension | ||
| |ArrayOfCollectionOfPrimitives|✓|ToolingExtension | ||
| |ArrayOfCollectionOfModel|✓|ToolingExtension | ||
| |ArrayOfCollectionOfEnum|✓|ToolingExtension | ||
| |MapOfEnum|✓|ToolingExtension | ||
| |MapOfModel|✓|ToolingExtension | ||
| |MapOfCollectionOfPrimitives|✓|ToolingExtension | ||
| |MapOfCollectionOfModel|✓|ToolingExtension | ||
| |MapOfCollectionOfEnum|✓|ToolingExtension | ||
|
|
||
| ### Documentation Feature | ||
| | Name | Supported | Defined By | | ||
| | ---- | --------- | ---------- | | ||
| |Readme|✓|ToolingExtension | ||
| |Model|✓|ToolingExtension | ||
| |Api|✓|ToolingExtension | ||
|
|
||
| ### Global Feature | ||
| | Name | Supported | Defined By | | ||
| | ---- | --------- | ---------- | | ||
| |Host|✓|OAS2,OAS3 | ||
| |BasePath|✓|OAS2,OAS3 | ||
| |Info|✓|OAS2,OAS3 | ||
| |Schemes|✗|OAS2,OAS3 | ||
| |PartialSchemes|✓|OAS2,OAS3 | ||
| |Consumes|✓|OAS2 | ||
| |Produces|✓|OAS2 | ||
| |ExternalDocumentation|✓|OAS2,OAS3 | ||
| |Examples|✓|OAS2,OAS3 | ||
| |XMLStructureDefinitions|✗|OAS2,OAS3 | ||
| |MultiServer|✗|OAS3 | ||
| |ParameterizedServer|✗|OAS3 | ||
| |ParameterStyling|✗|OAS3 | ||
| |Callbacks|✗|OAS3 | ||
| |LinkObjects|✗|OAS3 | ||
|
|
||
| ### Parameter Feature | ||
| | Name | Supported | Defined By | | ||
| | ---- | --------- | ---------- | | ||
| |Path|✓|OAS2,OAS3 | ||
| |Query|✓|OAS2,OAS3 | ||
| |Header|✓|OAS2,OAS3 | ||
| |Body|✓|OAS2 | ||
| |FormUnencoded|✓|OAS2 | ||
| |FormMultipart|✓|OAS2 | ||
| |Cookie|✓|OAS3 | ||
|
|
||
| ### Schema Support Feature | ||
| | Name | Supported | Defined By | | ||
| | ---- | --------- | ---------- | | ||
| |Simple|✓|OAS2,OAS3 | ||
| |Composite|✓|OAS2,OAS3 | ||
| |Polymorphism|✗|OAS2,OAS3 | ||
| |Union|✗|OAS3 | ||
| |allOf|✗|OAS2,OAS3 | ||
| |anyOf|✗|OAS3 | ||
| |oneOf|✗|OAS3 | ||
| |not|✗|OAS3 | ||
|
|
||
| ### Security Feature | ||
| | Name | Supported | Defined By | | ||
| | ---- | --------- | ---------- | | ||
| |BasicAuth|✓|OAS2,OAS3 | ||
| |ApiKey|✓|OAS2,OAS3 | ||
| |OpenIDConnect|✗|OAS3 | ||
| |BearerToken|✓|OAS3 | ||
| |OAuth2_Implicit|✗|OAS2,OAS3 | ||
| |OAuth2_Password|✗|OAS2,OAS3 | ||
| |OAuth2_ClientCredentials|✗|OAS2,OAS3 | ||
| |OAuth2_AuthorizationCode|✗|OAS2,OAS3 | ||
| |SignatureAuth|✗|OAS3 | ||
| |AWSV4Signature|✗|ToolingExtension | ||
|
|
||
| ### Wire Format Feature | ||
| | Name | Supported | Defined By | | ||
| | ---- | --------- | ---------- | | ||
| |JSON|✓|OAS2,OAS3 | ||
| |XML|✓|OAS2,OAS3 | ||
| |PROTOBUF|✗|ToolingExtension | ||
| |Custom|✓|OAS2,OAS3 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@lbialy
fyi. i added this check for backward compatibility (otherwise it would break scala-akka tests)
cc @clasnake (2017/07), @shijinkui (2018/01), @ramzimaalej (2018/03), @chameleon82 (2020/03), @Bouillie (2020/04) @Fish86 (2023/06)