Skip to content

Commit 5e5832d

Browse files
authored
Javalin fixes and validation (#20981)
* Fix for problems when a nullable parameter has a default value When a default value is present the parameter is moved to non-nullable. This works because we could replace the null with a default value. This will actually set the default value. * Adds (optional) validation to the beans. Option to set: `useBeanValidation` to `true`. This will insert validation rules from the `jakarta.validation` package much like it does with the spring generator. Aso sneaked in `JsonProperty` annotations in order to more formally adhere to the name in the spec as opposed to configuring ObjectMappers in order to translate names to match the spec. * Update samples * Fix for required headerParams
1 parent 045a9c1 commit 5e5832d

File tree

28 files changed

+233
-5
lines changed

28 files changed

+233
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{{#isContainer}}{{^isPrimitiveType}}{{^isEnum}}
2+
@field:jakarta.validation.Valid{{/isEnum}}{{/isPrimitiveType}}{{/isContainer}}{{!
3+
}}{{^isContainer}}{{^isPrimitiveType}}{{^isNumber}}{{^isUuid}}{{^isDateTime}}
4+
@field:jakarta.validation.Valid{{/isDateTime}}{{/isUuid}}{{/isNumber}}{{/isPrimitiveType}}{{/isContainer}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{{!
2+
format: email
3+
}}{{#isEmail}}
4+
@field:jakarta.validation.constraints.Email{{/isEmail}}{{!
5+
pattern set
6+
}}{{#pattern}}
7+
@field:jakarta.validation.constraints.Pattern(regexp="{{{pattern}}}"{{#vendorExtensions.x-pattern-message}}, message="{{vendorExtensions.x-pattern-message}}"{{/vendorExtensions.x-pattern-message}}){{/pattern}}{{!
8+
minLength && maxLength set
9+
}}{{#minLength}}{{#maxLength}}
10+
@field:jakarta.validation.constraints.Size(min={{minLength}},max={{maxLength}}){{/maxLength}}{{/minLength}}{{!
11+
minLength set, maxLength not
12+
}}{{#minLength}}{{^maxLength}}
13+
@field:jakarta.validation.constraints.Size(min={{minLength}}){{/maxLength}}{{/minLength}}{{!
14+
minLength not set, maxLength set
15+
}}{{^minLength}}{{#maxLength}}
16+
@field:jakarta.validation.constraints.Size(max={{.}}){{/maxLength}}{{/minLength}}{{!
17+
@Size: minItems && maxItems set
18+
}}{{#minItems}}{{#maxItems}}
19+
@field:jakarta.validation.constraints.Size(min={{minItems}},max={{maxItems}}) {{/maxItems}}{{/minItems}}{{!
20+
@Size: minItems set, maxItems not
21+
}}{{#minItems}}{{^maxItems}}
22+
@field:jakarta.validation.constraints.Size(min={{minItems}}){{/maxItems}}{{/minItems}}{{!
23+
@Size: minItems not set && maxItems set
24+
}}{{^minItems}}{{#maxItems}}
25+
@field:jakarta.validation.constraints.Size(max={{.}}){{/maxItems}}{{/minItems}}{{!
26+
check for integer or long / all others=decimal type with @Decimal*
27+
isInteger set
28+
}}{{#isInteger}}{{#minimum}}
29+
@field:jakarta.validation.constraints.Min({{.}}){{/minimum}}{{#maximum}}
30+
@field:jakarta.validation.constraints.Max({{.}}){{/maximum}}{{/isInteger}}{{!
31+
isLong set
32+
}}{{#isLong}}{{#minimum}}
33+
@field:jakarta.validation.constraints.Min({{.}}L){{/minimum}}{{#maximum}}
34+
@field:jakarta.validation.constraints.Max({{.}}L){{/maximum}}{{/isLong}}{{!
35+
Not Integer, not Long => we have a decimal value!
36+
}}{{^isInteger}}{{^isLong}}{{#minimum}}
37+
@field:jakarta.validation.constraints.DecimalMin("{{.}}"){{/minimum}}{{#maximum}}
38+
@field:jakarta.validation.constraints.DecimalMax("{{.}}"){{/maximum}}{{/isLong}}{{/isInteger}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{{#description}}
2+
/* {{{.}}} */
3+
{{/description}}
4+
{{#useBeanValidation}}{{>beanValidation}}{{>beanValidationModel}}{{/useBeanValidation}}
5+
@field:com.fasterxml.jackson.annotation.JsonProperty("{{{baseName}}}")
6+
{{>modelMutable}} {{{name}}}: {{#isEnum}}{{{classname}}}.{{{nameInPascalCase}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{{defaultValue}}}{{^defaultValue}}null{{/defaultValue}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{{#description}}
2+
/* {{{.}}} */
3+
{{/description}}
4+
{{#useBeanValidation}}{{>beanValidation}}{{>beanValidationModel}}{{/useBeanValidation}}
5+
@field:com.fasterxml.jackson.annotation.JsonProperty("{{{baseName}}}")
6+
{{>modelMutable}} {{{name}}}: {{#isEnum}}{{{classname}}}.{{{nameInPascalCase}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}?{{/isNullable}}{{#defaultValue}} = {{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{{#defaultValue}} ?:{{#isInteger}}{{{defaultValue}}}{{/isInteger}}{{#isLong}}{{{defaultValue}}}L{{/isLong}}{{#isShort}}{{{defaultValue}}}.toShort(){{/isShort}}{{#isDouble}}{{{defaultValue}}}.toDouble(){{/isDouble}}{{#isFloat}}{{{defaultValue}}}f{{/isFloat}}{{#isEnum}}{{{dataType}}}.valueOf("{{{defaultValue}}}"){{/isEnum}}{{#isBoolean}}{{{defaultValue}}}{{/isBoolean}}{{#isString}}"{{{defaultValue}}}"{{/isString}}{{#isUuid}}"UUID.fromString({{{defaultValue}}})"{{/isUuid}}{{#isUuid}}"UUID.fromString({{{defaultValue}}})"{{/isUuid}}
2+
{{/defaultValue}}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#isPathParam}}ctx.pathParamAsClass<{{{dataType}}}>("{{baseName}}").get(){{/isPathParam}}
1+
{{#isPathParam}}ctx.pathParamAsClass<{{{dataType}}}>("{{baseName}}").get(){{>paramDefault}}{{/isPathParam}}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#isQueryParam}}{{#isArray}}ctx.queryParams("{{baseName}}"){{/isArray}}{{^isArray}}ctx.queryParamAsClass<String>("{{baseName}}").get(){{/isArray}}{{/isQueryParam}}
1+
{{#isQueryParam}}{{#isArray}}ctx.queryParams("{{baseName}}"){{/isArray}}{{^isArray}}ctx.queryParamAsClass<String>("{{baseName}}").get(){{>paramDefault}}{{/isArray}}{{/isQueryParam}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{{#isContainer}}{{^isPrimitiveType}}{{^isEnum}}
2+
@field:jakarta.validation.Valid{{/isEnum}}{{/isPrimitiveType}}{{/isContainer}}{{!
3+
}}{{^isContainer}}{{^isPrimitiveType}}{{^isNumber}}{{^isUuid}}{{^isDateTime}}
4+
@field:jakarta.validation.Valid{{/isDateTime}}{{/isUuid}}{{/isNumber}}{{/isPrimitiveType}}{{/isContainer}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{{!
2+
format: email
3+
}}{{#isEmail}}
4+
@field:jakarta.validation.constraints.Email{{/isEmail}}{{!
5+
pattern set
6+
}}{{#pattern}}
7+
@field:jakarta.validation.constraints.Pattern(regexp="{{{pattern}}}"{{#vendorExtensions.x-pattern-message}}, message="{{vendorExtensions.x-pattern-message}}"{{/vendorExtensions.x-pattern-message}}){{/pattern}}{{!
8+
minLength && maxLength set
9+
}}{{#minLength}}{{#maxLength}}
10+
@field:jakarta.validation.constraints.Size(min={{minLength}},max={{maxLength}}){{/maxLength}}{{/minLength}}{{!
11+
minLength set, maxLength not
12+
}}{{#minLength}}{{^maxLength}}
13+
@field:jakarta.validation.constraints.Size(min={{minLength}}){{/maxLength}}{{/minLength}}{{!
14+
minLength not set, maxLength set
15+
}}{{^minLength}}{{#maxLength}}
16+
@field:jakarta.validation.constraints.Size(max={{.}}){{/maxLength}}{{/minLength}}{{!
17+
@Size: minItems && maxItems set
18+
}}{{#minItems}}{{#maxItems}}
19+
@field:jakarta.validation.constraints.Size(min={{minItems}},max={{maxItems}}) {{/maxItems}}{{/minItems}}{{!
20+
@Size: minItems set, maxItems not
21+
}}{{#minItems}}{{^maxItems}}
22+
@field:jakarta.validation.constraints.Size(min={{minItems}}){{/maxItems}}{{/minItems}}{{!
23+
@Size: minItems not set && maxItems set
24+
}}{{^minItems}}{{#maxItems}}
25+
@field:jakarta.validation.constraints.Size(max={{.}}){{/maxItems}}{{/minItems}}{{!
26+
check for integer or long / all others=decimal type with @Decimal*
27+
isInteger set
28+
}}{{#isInteger}}{{#minimum}}
29+
@field:jakarta.validation.constraints.Min({{.}}){{/minimum}}{{#maximum}}
30+
@field:jakarta.validation.constraints.Max({{.}}){{/maximum}}{{/isInteger}}{{!
31+
isLong set
32+
}}{{#isLong}}{{#minimum}}
33+
@field:jakarta.validation.constraints.Min({{.}}L){{/minimum}}{{#maximum}}
34+
@field:jakarta.validation.constraints.Max({{.}}L){{/maximum}}{{/isLong}}{{!
35+
Not Integer, not Long => we have a decimal value!
36+
}}{{^isInteger}}{{^isLong}}{{#minimum}}
37+
@field:jakarta.validation.constraints.DecimalMin("{{.}}"){{/minimum}}{{#maximum}}
38+
@field:jakarta.validation.constraints.DecimalMax("{{.}}"){{/maximum}}{{/isLong}}{{/isInteger}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{{#description}}
2+
/* {{{.}}} */
3+
{{/description}}
4+
{{#useBeanValidation}}{{>beanValidation}}{{>beanValidationModel}}{{/useBeanValidation}}
5+
@field:com.fasterxml.jackson.annotation.JsonProperty("{{{baseName}}}")
6+
{{>modelMutable}} {{{name}}}: {{#isEnum}}{{{classname}}}.{{{nameInPascalCase}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{{defaultValue}}}{{^defaultValue}}null{{/defaultValue}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{{#description}}
2+
/* {{{.}}} */
3+
{{/description}}
4+
{{#useBeanValidation}}{{>beanValidation}}{{>beanValidationModel}}{{/useBeanValidation}}
5+
@field:com.fasterxml.jackson.annotation.JsonProperty("{{{baseName}}}")
6+
{{>modelMutable}} {{{name}}}: {{#isEnum}}{{{classname}}}.{{{nameInPascalCase}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}?{{/isNullable}}{{#defaultValue}} = {{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#isHeaderParam}}ctx.header("{{baseName}}"){{/isHeaderParam}}
1+
{{#isHeaderParam}}ctx.header("{{baseName}}"){{#required}}{{^defaultValue}} ?: throw io.javalin.http.BadRequestResponse("Required header {{baseName}} not present") {{/defaultValue}}{{#defaultValue}}{{>paramDefault}}{{/defaultValue}}{{/required}}{{/isHeaderParam}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
{{#defaultValue}} ?:{{#isInteger}}{{{defaultValue}}}{{/isInteger}}{{#isLong}}{{{defaultValue}}}L{{/isLong}}{{#isShort}}{{{defaultValue}}}.toShort(){{/isShort}}{{#isDouble}}{{{defaultValue}}}.toDouble(){{/isDouble}}{{#isFloat}}{{{defaultValue}}}f{{/isFloat}}{{#isEnum}}{{{dataType}}}.valueOf("{{{defaultValue}}}"){{/isEnum}}{{#isBoolean}}{{{defaultValue}}}{{/isBoolean}}{{#isString}}"{{{defaultValue}}}"{{/isString}}{{#isUuid}}"UUID.fromString({{{defaultValue}}})"{{/isUuid}}{{#isUuid}}"UUID.fromString({{{defaultValue}}})"{{/isUuid}}
2+
{{/defaultValue}}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#isPathParam}}ctx.pathParamAsClass<{{{dataType}}}>("{{baseName}}").get(){{/isPathParam}}
1+
{{#isPathParam}}ctx.pathParamAsClass<{{{dataType}}}>("{{baseName}}").get(){{>paramDefault}}{{/isPathParam}}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{{#isQueryParam}}{{#isArray}}ctx.queryParams("{{baseName}}"){{/isArray}}{{^isArray}}ctx.queryParamAsClass<{{{dataType}}}>("{{baseName}}"){{^required}}.allowNullable(){{/required}}.get(){{/isArray}}{{/isQueryParam}}
1+
{{#isQueryParam}}{{#isArray}}ctx.queryParams("{{baseName}}"){{/isArray}}{{^isArray}}ctx.queryParamAsClass<{{{dataType}}}>("{{baseName}}"){{^required}}.allowNullable(){{/required}}.get(){{>paramDefault}}{{/isArray}}{{/isQueryParam}}

Diff for: samples/server/petstore/kotlin-server-required-and-nullable-properties/src/main/kotlin/org/openapitools/server/models/Pet.kt

+8
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,17 @@ package org.openapitools.server.models
2020
* @param notNullableNotRequired
2121
*/
2222
data class Pet(
23+
24+
@field:com.fasterxml.jackson.annotation.JsonProperty("notNullable_required")
2325
val notNullableRequired: kotlin.String,
26+
27+
@field:com.fasterxml.jackson.annotation.JsonProperty("nullable_required")
2428
val nullableRequired: kotlin.String?,
29+
30+
@field:com.fasterxml.jackson.annotation.JsonProperty("nullable_notRequired")
2531
val nullableNotRequired: kotlin.String? = null,
32+
33+
@field:com.fasterxml.jackson.annotation.JsonProperty("notNullable_notRequired")
2634
val notNullableNotRequired: kotlin.String? = null
2735
)
2836

Diff for: samples/server/petstore/kotlin-server/javalin-6/src/main/kotlin/org/openapitools/server/models/Category.kt

+4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ package org.openapitools.server.models
1818
* @param name
1919
*/
2020
data class Category(
21+
22+
@field:com.fasterxml.jackson.annotation.JsonProperty("id")
2123
val id: kotlin.Long? = null,
24+
25+
@field:com.fasterxml.jackson.annotation.JsonProperty("name")
2226
val name: kotlin.String? = null
2327
)
2428

Diff for: samples/server/petstore/kotlin-server/javalin-6/src/main/kotlin/org/openapitools/server/models/ModelApiResponse.kt

+6
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,14 @@ package org.openapitools.server.models
1919
* @param message
2020
*/
2121
data class ModelApiResponse(
22+
23+
@field:com.fasterxml.jackson.annotation.JsonProperty("code")
2224
val code: kotlin.Int? = null,
25+
26+
@field:com.fasterxml.jackson.annotation.JsonProperty("type")
2327
val type: kotlin.String? = null,
28+
29+
@field:com.fasterxml.jackson.annotation.JsonProperty("message")
2430
val message: kotlin.String? = null
2531
)
2632

Diff for: samples/server/petstore/kotlin-server/javalin-6/src/main/kotlin/org/openapitools/server/models/Order.kt

+12
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,24 @@ package org.openapitools.server.models
2222
* @param complete
2323
*/
2424
data class Order(
25+
26+
@field:com.fasterxml.jackson.annotation.JsonProperty("id")
2527
val id: kotlin.Long? = null,
28+
29+
@field:com.fasterxml.jackson.annotation.JsonProperty("petId")
2630
val petId: kotlin.Long? = null,
31+
32+
@field:com.fasterxml.jackson.annotation.JsonProperty("quantity")
2733
val quantity: kotlin.Int? = null,
34+
35+
@field:com.fasterxml.jackson.annotation.JsonProperty("shipDate")
2836
val shipDate: java.time.OffsetDateTime? = null,
2937
/* Order Status */
38+
39+
@field:com.fasterxml.jackson.annotation.JsonProperty("status")
3040
val status: Order.Status? = null,
41+
42+
@field:com.fasterxml.jackson.annotation.JsonProperty("complete")
3143
val complete: kotlin.Boolean? = false
3244
)
3345
{

Diff for: samples/server/petstore/kotlin-server/javalin-6/src/main/kotlin/org/openapitools/server/models/Pet.kt

+12
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,24 @@ import org.openapitools.server.models.Tag
2424
* @param status pet status in the store
2525
*/
2626
data class Pet(
27+
28+
@field:com.fasterxml.jackson.annotation.JsonProperty("name")
2729
val name: kotlin.String,
30+
31+
@field:com.fasterxml.jackson.annotation.JsonProperty("photoUrls")
2832
val photoUrls: kotlin.collections.List<kotlin.String>,
33+
34+
@field:com.fasterxml.jackson.annotation.JsonProperty("id")
2935
val id: kotlin.Long? = null,
36+
37+
@field:com.fasterxml.jackson.annotation.JsonProperty("category")
3038
val category: Category? = null,
39+
40+
@field:com.fasterxml.jackson.annotation.JsonProperty("tags")
3141
val tags: kotlin.collections.List<Tag>? = null,
3242
/* pet status in the store */
43+
44+
@field:com.fasterxml.jackson.annotation.JsonProperty("status")
3345
val status: Pet.Status? = null
3446
)
3547
{

Diff for: samples/server/petstore/kotlin-server/javalin-6/src/main/kotlin/org/openapitools/server/models/Tag.kt

+4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ package org.openapitools.server.models
1818
* @param name
1919
*/
2020
data class Tag(
21+
22+
@field:com.fasterxml.jackson.annotation.JsonProperty("id")
2123
val id: kotlin.Long? = null,
24+
25+
@field:com.fasterxml.jackson.annotation.JsonProperty("name")
2226
val name: kotlin.String? = null
2327
)
2428

Diff for: samples/server/petstore/kotlin-server/javalin-6/src/main/kotlin/org/openapitools/server/models/User.kt

+16
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,30 @@ package org.openapitools.server.models
2424
* @param userStatus User Status
2525
*/
2626
data class User(
27+
28+
@field:com.fasterxml.jackson.annotation.JsonProperty("id")
2729
val id: kotlin.Long? = null,
30+
31+
@field:com.fasterxml.jackson.annotation.JsonProperty("username")
2832
val username: kotlin.String? = null,
33+
34+
@field:com.fasterxml.jackson.annotation.JsonProperty("firstName")
2935
val firstName: kotlin.String? = null,
36+
37+
@field:com.fasterxml.jackson.annotation.JsonProperty("lastName")
3038
val lastName: kotlin.String? = null,
39+
40+
@field:com.fasterxml.jackson.annotation.JsonProperty("email")
3141
val email: kotlin.String? = null,
42+
43+
@field:com.fasterxml.jackson.annotation.JsonProperty("password")
3244
val password: kotlin.String? = null,
45+
46+
@field:com.fasterxml.jackson.annotation.JsonProperty("phone")
3347
val phone: kotlin.String? = null,
3448
/* User Status */
49+
50+
@field:com.fasterxml.jackson.annotation.JsonProperty("userStatus")
3551
val userStatus: kotlin.Int? = null
3652
)
3753

Diff for: samples/server/petstore/kotlin-server/javalin/src/main/kotlin/org/openapitools/server/models/Category.kt

+4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ package org.openapitools.server.models
1818
* @param name
1919
*/
2020
data class Category(
21+
22+
@field:com.fasterxml.jackson.annotation.JsonProperty("id")
2123
val id: kotlin.Long? = null,
24+
25+
@field:com.fasterxml.jackson.annotation.JsonProperty("name")
2226
val name: kotlin.String? = null
2327
)
2428

Diff for: samples/server/petstore/kotlin-server/javalin/src/main/kotlin/org/openapitools/server/models/ModelApiResponse.kt

+6
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,14 @@ package org.openapitools.server.models
1919
* @param message
2020
*/
2121
data class ModelApiResponse(
22+
23+
@field:com.fasterxml.jackson.annotation.JsonProperty("code")
2224
val code: kotlin.Int? = null,
25+
26+
@field:com.fasterxml.jackson.annotation.JsonProperty("type")
2327
val type: kotlin.String? = null,
28+
29+
@field:com.fasterxml.jackson.annotation.JsonProperty("message")
2430
val message: kotlin.String? = null
2531
)
2632

Diff for: samples/server/petstore/kotlin-server/javalin/src/main/kotlin/org/openapitools/server/models/Order.kt

+12
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,24 @@ package org.openapitools.server.models
2222
* @param complete
2323
*/
2424
data class Order(
25+
26+
@field:com.fasterxml.jackson.annotation.JsonProperty("id")
2527
val id: kotlin.Long? = null,
28+
29+
@field:com.fasterxml.jackson.annotation.JsonProperty("petId")
2630
val petId: kotlin.Long? = null,
31+
32+
@field:com.fasterxml.jackson.annotation.JsonProperty("quantity")
2733
val quantity: kotlin.Int? = null,
34+
35+
@field:com.fasterxml.jackson.annotation.JsonProperty("shipDate")
2836
val shipDate: java.time.OffsetDateTime? = null,
2937
/* Order Status */
38+
39+
@field:com.fasterxml.jackson.annotation.JsonProperty("status")
3040
val status: Order.Status? = null,
41+
42+
@field:com.fasterxml.jackson.annotation.JsonProperty("complete")
3143
val complete: kotlin.Boolean? = false
3244
)
3345
{

Diff for: samples/server/petstore/kotlin-server/javalin/src/main/kotlin/org/openapitools/server/models/Pet.kt

+12
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,24 @@ import org.openapitools.server.models.Tag
2424
* @param status pet status in the store
2525
*/
2626
data class Pet(
27+
28+
@field:com.fasterxml.jackson.annotation.JsonProperty("name")
2729
val name: kotlin.String,
30+
31+
@field:com.fasterxml.jackson.annotation.JsonProperty("photoUrls")
2832
val photoUrls: kotlin.collections.List<kotlin.String>,
33+
34+
@field:com.fasterxml.jackson.annotation.JsonProperty("id")
2935
val id: kotlin.Long? = null,
36+
37+
@field:com.fasterxml.jackson.annotation.JsonProperty("category")
3038
val category: Category? = null,
39+
40+
@field:com.fasterxml.jackson.annotation.JsonProperty("tags")
3141
val tags: kotlin.collections.List<Tag>? = null,
3242
/* pet status in the store */
43+
44+
@field:com.fasterxml.jackson.annotation.JsonProperty("status")
3345
val status: Pet.Status? = null
3446
)
3547
{

Diff for: samples/server/petstore/kotlin-server/javalin/src/main/kotlin/org/openapitools/server/models/Tag.kt

+4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ package org.openapitools.server.models
1818
* @param name
1919
*/
2020
data class Tag(
21+
22+
@field:com.fasterxml.jackson.annotation.JsonProperty("id")
2123
val id: kotlin.Long? = null,
24+
25+
@field:com.fasterxml.jackson.annotation.JsonProperty("name")
2226
val name: kotlin.String? = null
2327
)
2428

0 commit comments

Comments
 (0)