Nikita Karnaukh 53eff43184
[Kotlin][Client] Fix url path for Retrofit, Fix optionals for @Query @Body, Set List as default collection for Kotlin data class (#6456)
* Replace typeMapping kotlin.Array with kotlin.collections.List, because its doesn't work with Kotlin Data Classes(required manually implementing  hashCode&equals)
Replace typeMapping kotlin.Array<kotlin.Byte> with efficient primitive implementation kotlin.ByteArray
Replace instantiationTypes array to kotlin.collections.ArrayList, for extending Array we should provide element count to its constructor.

* Fixed path(removed slash on begin path) for Jvm Kotlin Retrofit

* Fixed handling optional bodyParams for Jvm Kotlin Retrofit

* Fix kotlin tests

* Fixed code format for detekt inspections #2

* revert formatting

* Added ability to generate optional @Query params.

* Update Kotlin docs.

* Update Kotlin openapi3 client samples

* Update Kotlin client samples

* Update Kotlin openapi3 client samples after merge with master

* Revert hardcoding List instead Array

* Set List as default collectionType

* Update Kotlin samples

* Fixed Kotlin multiplatform api template. fix mapper for Array type.
Fixed Kotlin multiplatform api template Code style.

* Update Kotlin multiplatform sample

* Fix Kotlin multiplatform template code style

* Update Kotlin multiplatform sample

* Fix Kotlin multiplatform converting Array to List in Api.

* Update Kotlin multiplatform sample #3

* Fix Kotlin tests

* Fix Kotlin jackson Application.kt

* Fix Kotlin tests #2

* Fix merge conflict with master

* Generate samples after merge with master

* Generate samples after merge with master #2

* Generate samples after merge with master #3

* Generate samples after merge with master #4

* update kotlin samples

* update all samples

Co-authored-by: William Cheng <wing328hk@gmail.com>
2020-06-16 10:33:34 +08:00

7.1 KiB

title sidebar_label
Config Options for kotlin kotlin
Option Description Values Default
apiSuffix suffix for api classes Api
artifactId Generated artifact id (name of jar). kotlin-client
artifactVersion Generated artifact's package version. 1.0.0
collectionType Option. Collection type to use
array
kotlin.Array
list
kotlin.collections.List
list
dateLibrary Option. Date library to use
threetenbp-localdatetime
Threetenbp - Backport of JSR310 (jvm only, for legacy app only)
string
String
java8-localdatetime
Java 8 native JSR310 (jvm only, for legacy app only)
java8
Java 8 native JSR310 (jvm only, preferred for jdk 1.8+)
threetenbp
Threetenbp - Backport of JSR310 (jvm only, preferred for jdk < 1.8)
java8
enumPropertyNaming Naming convention for enum properties: 'camelCase', 'PascalCase', 'snake_case', 'UPPERCASE', and 'original' camelCase
groupId Generated artifact package's organization (i.e. maven groupId). org.openapitools
library Library template (sub-template) to use
jvm-okhttp4
[DEFAULT] Platform: Java Virtual Machine. HTTP client: OkHttp 4.2.0 (Android 5.0+ and Java 8+). JSON processing: Moshi 1.8.0.
jvm-okhttp3
Platform: Java Virtual Machine. HTTP client: OkHttp 3.12.4 (Android 2.3+ and Java 7+). JSON processing: Moshi 1.8.0.
jvm-retrofit2
Platform: Java Virtual Machine. HTTP client: Retrofit 2.6.2.
multiplatform
Platform: Kotlin multiplatform. HTTP client: Ktor 1.2.4. JSON processing: Kotlinx Serialization: 0.12.0.
jvm-okhttp4
modelMutable Create mutable models false
packageName Generated artifact package name. org.openapitools.client
parcelizeModels toggle "@Parcelize" 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)
toJson
[DEFAULT] Date formater option using a json converter.
toString
Use the 'toString'-method of the date-time object to retrieve the related string representation.
toJson
serializableModel boolean - toggle "implements Serializable" for generated models null
serializationLibrary What serialization library to use: 'moshi' (default), or 'gson' or 'jackson' moshi
sortModelPropertiesByRequiredFlag Sort model properties to place required parameters before optional parameters. null
sortParamsByRequiredFlag Sort method arguments to place required parameters before optional parameters. null
sourceFolder source folder for generated code src/main/kotlin
useCoroutines Whether to use the Coroutines adapter with the retrofit2 library. false
useRxJava Whether to use the RxJava adapter with the retrofit2 library. false
useRxJava2 Whether to use the RxJava2 adapter with the retrofit2 library. false

IMPORT MAPPING

Type/Alias Imports
BigDecimal java.math.BigDecimal
Date java.util.Date
DateTime java.time.LocalDateTime
File java.io.File
LocalDate java.time.LocalDate
LocalDateTime java.time.LocalDateTime
LocalTime java.time.LocalTime
Timestamp java.sql.Timestamp
URI java.net.URI
UUID java.util.UUID

INSTANTIATION TYPES

Type/Alias Instantiated By
array kotlin.Array
list kotlin.collections.ArrayList
map kotlin.collections.HashMap

LANGUAGE PRIMITIVES

  • kotlin.Array
  • kotlin.Boolean
  • kotlin.Byte
  • kotlin.ByteArray
  • kotlin.Char
  • kotlin.Double
  • kotlin.Float
  • kotlin.Int
  • kotlin.Long
  • kotlin.Short
  • kotlin.String
  • kotlin.collections.List
  • kotlin.collections.Map
  • kotlin.collections.Set

RESERVED WORDS

  • as
  • break
  • class
  • continue
  • do
  • else
  • false
  • for
  • fun
  • if
  • in
  • interface
  • is
  • null
  • object
  • package
  • return
  • super
  • this
  • throw
  • true
  • try
  • typealias
  • typeof
  • val
  • var
  • when
  • while

FEATURE SET

Client Modification Feature

Name Supported Defined By
BasePath ToolingExtension
Authorizations ToolingExtension
UserAgent 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
Array 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

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

Wire Format Feature

Name Supported Defined By
JSON OAS2,OAS3
XML OAS2,OAS3
PROTOBUF ToolingExtension
Custom OAS2,OAS3