Skip to content

Commit aa51d42

Browse files
authored
Fixing bug in Kotlin Client with BigDecimal default value (#12213)
1 parent 8e49875 commit aa51d42

35 files changed

+1255
-2
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
generatorName: kotlin
2+
outputDir: samples/client/petstore/kotlin-bigdecimal-default
3+
inputSpec: modules/openapi-generator/src/test/resources/3_0/issue_10866_bigdecimal_default.yaml
4+
templateDir: modules/openapi-generator/src/main/resources/kotlin-client
5+
additionalProperties:
6+
artifactId: kotlin-bigdecimal-default

modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@
1818
{{#deprecated}}
1919
@Deprecated(message = "This property is deprecated.")
2020
{{/deprecated}}
21-
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}{{#uniqueItems}}kotlin.collections.{{#modelMutable}}Mutable{{/modelMutable}}Set{{/uniqueItems}}{{^uniqueItems}}kotlin.collections.{{#modelMutable}}Mutable{{/modelMutable}}List{{/uniqueItems}}{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}? = {{{defaultValue}}}{{^defaultValue}}null{{/defaultValue}}
21+
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}{{#uniqueItems}}kotlin.collections.{{#modelMutable}}Mutable{{/modelMutable}}Set{{/uniqueItems}}{{^uniqueItems}}kotlin.collections.{{#modelMutable}}Mutable{{/modelMutable}}List{{/uniqueItems}}{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}? = {{^defaultValue}}null{{/defaultValue}}{{#defaultValue}}{{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}

modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@
1818
{{#deprecated}}
1919
@Deprecated(message = "This property is deprecated.")
2020
{{/deprecated}}
21-
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}{{#isUniqueItems}}kotlin.collections.{{#modelMutable}}Mutable{{/modelMutable}}Set{{/isUniqueItems}}{{^isUniqueItems}}kotlin.collections.{{#modelMutable}}Mutable{{/modelMutable}}List{{/isUniqueItems}}{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}{{#isNullable}}?{{/isNullable}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}
21+
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}{{#isUniqueItems}}kotlin.collections.{{#modelMutable}}Mutable{{/modelMutable}}Set{{/isUniqueItems}}{{^isUniqueItems}}kotlin.collections.{{#modelMutable}}Mutable{{/modelMutable}}List{{/isUniqueItems}}{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}{{#isNullable}}?{{/isNullable}}{{#defaultValue}} = {{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
openapi: 3.0.0
2+
info:
3+
version: 1.0.0
4+
title: Demo
5+
paths:
6+
'/test':
7+
post:
8+
requestBody:
9+
content:
10+
application/json:
11+
schema:
12+
$ref: "#/components/schemas/Apa"
13+
required: true
14+
responses:
15+
200:
16+
description: Successful operation
17+
18+
components:
19+
schemas:
20+
Apa:
21+
type: object
22+
required:
23+
- bepa
24+
- cepa
25+
properties:
26+
bepa:
27+
type: number
28+
format: long
29+
default: 0
30+
cepa:
31+
type: number
32+
default: 6.28318
33+
depa:
34+
type: number
35+
default: 71
36+
epa:
37+
type: number
38+
nullable: false
39+
default: -71
40+
fepa:
41+
type: number
42+
nullable: true
43+
deprecated: true
44+
default: 100
45+
gepa:
46+
type: number
47+
nullable: true
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# OpenAPI Generator Ignore
2+
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
3+
4+
# Use this file to prevent files from being overwritten by the generator.
5+
# The patterns follow closely to .gitignore or .dockerignore.
6+
7+
# As an example, the C# client generator defines ApiClient.cs.
8+
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
9+
#ApiClient.cs
10+
11+
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
12+
#foo/*/qux
13+
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
14+
15+
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
16+
#foo/**/qux
17+
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
18+
19+
# You can also negate patterns with an exclamation (!).
20+
# For example, you can ignore all files in a docs folder with the file extension .md:
21+
#docs/*.md
22+
# Then explicitly reverse the ignore rule for a single file:
23+
#!docs/README.md
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
README.md
2+
build.gradle
3+
docs/Apa.md
4+
docs/DefaultApi.md
5+
gradle/wrapper/gradle-wrapper.jar
6+
gradle/wrapper/gradle-wrapper.properties
7+
gradlew
8+
gradlew.bat
9+
settings.gradle
10+
src/main/kotlin/org/openapitools/client/apis/DefaultApi.kt
11+
src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
12+
src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
13+
src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
14+
src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt
15+
src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt
16+
src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
17+
src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
18+
src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
19+
src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
20+
src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
21+
src/main/kotlin/org/openapitools/client/infrastructure/PartConfig.kt
22+
src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt
23+
src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt
24+
src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt
25+
src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
26+
src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt
27+
src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt
28+
src/main/kotlin/org/openapitools/client/models/Apa.kt
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
6.0.0-SNAPSHOT
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# org.openapitools.client - Kotlin client library for Demo
2+
3+
## Requires
4+
5+
* Kotlin 1.4.30
6+
* Gradle 6.8.3
7+
8+
## Build
9+
10+
First, create the gradle wrapper script:
11+
12+
```
13+
gradle wrapper
14+
```
15+
16+
Then, run:
17+
18+
```
19+
./gradlew check assemble
20+
```
21+
22+
This runs all tests and packages the library.
23+
24+
## Features/Implementation Notes
25+
26+
* Supports JSON inputs/outputs, File inputs, and Form inputs.
27+
* Supports collection formats for query parameters: csv, tsv, ssv, pipes.
28+
* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions.
29+
* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets.
30+
31+
<a name="documentation-for-api-endpoints"></a>
32+
## Documentation for API Endpoints
33+
34+
All URIs are relative to *http://localhost*
35+
36+
Class | Method | HTTP request | Description
37+
------------ | ------------- | ------------- | -------------
38+
*DefaultApi* | [**testPost**](docs/DefaultApi.md#testpost) | **POST** /test |
39+
40+
41+
<a name="documentation-for-models"></a>
42+
## Documentation for Models
43+
44+
- [org.openapitools.client.models.Apa](docs/Apa.md)
45+
46+
47+
<a name="documentation-for-authorization"></a>
48+
## Documentation for Authorization
49+
50+
All endpoints do not require authorization.
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
group 'org.openapitools'
2+
version '1.0.0'
3+
4+
wrapper {
5+
gradleVersion = '6.8.3'
6+
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
7+
}
8+
9+
buildscript {
10+
ext.kotlin_version = '1.5.10'
11+
12+
repositories {
13+
maven { url "https://repo1.maven.org/maven2" }
14+
}
15+
dependencies {
16+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
17+
}
18+
}
19+
20+
apply plugin: 'kotlin'
21+
22+
repositories {
23+
maven { url "https://repo1.maven.org/maven2" }
24+
}
25+
26+
test {
27+
useJUnitPlatform()
28+
}
29+
30+
dependencies {
31+
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
32+
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
33+
implementation "com.squareup.moshi:moshi-kotlin:1.12.0"
34+
implementation "com.squareup.moshi:moshi-adapters:1.12.0"
35+
implementation "com.squareup.okhttp3:okhttp:4.9.1"
36+
testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2"
37+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
# Apa
3+
4+
## Properties
5+
Name | Type | Description | Notes
6+
------------ | ------------- | ------------- | -------------
7+
**bepa** | [**java.math.BigDecimal**](java.math.BigDecimal.md) | |
8+
**cepa** | [**java.math.BigDecimal**](java.math.BigDecimal.md) | |
9+
**depa** | [**java.math.BigDecimal**](java.math.BigDecimal.md) | | [optional]
10+
**epa** | [**java.math.BigDecimal**](java.math.BigDecimal.md) | | [optional]
11+
**fepa** | [**java.math.BigDecimal**](java.math.BigDecimal.md) | | [optional]
12+
**gepa** | [**java.math.BigDecimal**](java.math.BigDecimal.md) | | [optional]
13+
14+
15+

0 commit comments

Comments
 (0)