Skip to content

Commit 5e31e9d

Browse files
author
andrewwilsonnew
committed
final fix?
1 parent 609d726 commit 5e31e9d

15 files changed

Lines changed: 150 additions & 49 deletions

File tree

bin/configs/kotlin-misk-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ outputDir: samples/server/petstore/kotlin-misk-config
33
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
44
templateDir: modules/openapi-generator/src/main/resources/kotlin-misk
55
validateSpec: false
6+
useBeanValidation: true
67
additionalProperties:
78
hideGenerationTimestamp: "true"
89
moduleClassName: "PetStoreModule"

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinMiskServerCodegen.java

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -191,17 +191,52 @@ public void processOpts() {
191191
convertPropertyToTypeAndWriteBack(ACTION_IMPORTS,
192192
it -> Arrays.asList(it.split(";")), this::setActionImports);
193193

194-
convertPropertyToStringAndWriteBack(MODULE_CLASS_NAME, this::setModuleClassName);
195-
convertPropertyToStringAndWriteBack(ACTION_PATH_PREFIX, this::setActionPathPrefix);
196-
convertPropertyToStringAndWriteBack(ACTION_PARENT_CLASS, this::setActionParentClass);
197-
convertPropertyToStringAndWriteBack(ACTION_REQUEST_CONTENT_TYPE, this::setActionRequestContentType);
198-
convertPropertyToStringAndWriteBack(ACTION_REQUEST_CONTENT_TYPE_PREFIX, this::setActionRequestContentTypePrefix);
199-
convertPropertyToStringAndWriteBack(TESTING_MODULE, this::setTestingModule);
194+
if (additionalProperties.containsKey(ACTION_PARENT_CLASS)) {
195+
setActionParentClass((String) additionalProperties.get(ACTION_PARENT_CLASS));
196+
}
197+
writePropertyBack(ACTION_PARENT_CLASS, actionParentClass);
198+
199+
if (additionalProperties.containsKey(MODULE_CLASS_NAME)) {
200+
setModuleClassName((String) additionalProperties.get(MODULE_CLASS_NAME));
201+
}
202+
writePropertyBack(MODULE_CLASS_NAME, moduleClassName);
203+
204+
if (additionalProperties.containsKey(ACTION_PATH_PREFIX)) {
205+
setActionPathPrefix((String) additionalProperties.get(ACTION_PATH_PREFIX));
206+
}
207+
writePropertyBack(ACTION_PATH_PREFIX, actionPathPrefix);
208+
209+
if (additionalProperties.containsKey(ACTION_REQUEST_CONTENT_TYPE)) {
210+
setActionRequestContentType((String) additionalProperties.get(ACTION_REQUEST_CONTENT_TYPE));
211+
}
212+
writePropertyBack(ACTION_REQUEST_CONTENT_TYPE, actionRequestContentType);
213+
214+
if (additionalProperties.containsKey(ACTION_REQUEST_CONTENT_TYPE_PREFIX)) {
215+
setActionRequestContentTypePrefix((String) additionalProperties.get(ACTION_REQUEST_CONTENT_TYPE_PREFIX));
216+
}
217+
writePropertyBack(ACTION_REQUEST_CONTENT_TYPE_PREFIX, actionRequestContentTypePrefix);
218+
219+
if (additionalProperties.containsKey(TESTING_MODULE)) {
220+
setTestingModule((String) additionalProperties.get(TESTING_MODULE));
221+
}
222+
writePropertyBack(TESTING_MODULE, testingModule);
223+
200224
writePropertyBack(TESTING_MODULE_NAME, getTestingModuleName());
201225

202-
convertPropertyToBooleanAndWriteBack(USE_BEANVALIDATION, this::setUseBeanValidation);
203-
convertPropertyToBooleanAndWriteBack(GENERATE_STUB_IMPL_CLASSES, this::setGenerateStubImplClasses);
204-
convertPropertyToBooleanAndWriteBack(ADD_MODEL_MOSHI_JSON_ANNOTATION, this::setAddModelMoshiJsonAnnotation);
226+
if (additionalProperties.containsKey(USE_BEANVALIDATION)) {
227+
this.setUseBeanValidation(convertPropertyToBoolean(USE_BEANVALIDATION));
228+
}
229+
writePropertyBack(USE_BEANVALIDATION, useBeanValidation);
230+
231+
if (additionalProperties.containsKey(GENERATE_STUB_IMPL_CLASSES)) {
232+
setGenerateStubImplClasses(convertPropertyToBoolean(GENERATE_STUB_IMPL_CLASSES));
233+
}
234+
writePropertyBack(GENERATE_STUB_IMPL_CLASSES, generateStubImplClasses);
235+
236+
if (additionalProperties.containsKey(ADD_MODEL_MOSHI_JSON_ANNOTATION)) {
237+
setAddModelMoshiJsonAnnotation(convertPropertyToBoolean(ADD_MODEL_MOSHI_JSON_ANNOTATION));
238+
}
239+
writePropertyBack(ADD_MODEL_MOSHI_JSON_ANNOTATION, addModelMoshiJsonAnnotation);
205240

206241
applyJakartaPackage();
207242

modules/openapi-generator/src/main/resources/kotlin-misk/apiAction.mustache

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@ import {{javaxPackage}}.validation.constraints.NotNull
1313
import {{javaxPackage}}.validation.constraints.Pattern
1414
import {{javaxPackage}}.validation.constraints.Size
1515
{{/useBeanValidation}}
16-
import misk.web.actions.WebAction
16+
{{#actionImports}}
17+
import {{{.}}}
18+
{{/actionImports}}
1719
import misk.web.Delete
1820
import misk.web.Description
1921
import misk.web.Get
@@ -28,9 +30,6 @@ import misk.web.RequestContentType
2830
import misk.web.RequestHeader
2931
import misk.web.ResponseContentType
3032
import misk.web.mediatype.MediaTypes
31-
{{#actionImports}}
32-
import {{{.}}}
33-
{{/actionImports}}
3433
{{#imports}}
3534
import {{import}}
3635
{{/imports}}

samples/server/petstore/kotlin-misk-config/src/main/kotlin/org/openapitools/server/api/api/PetApiAction.kt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@ package org.openapitools.server.api.api
22

33
import jakarta.inject.Inject
44
import jakarta.inject.Singleton
5+
import jakarta.validation.Valid
6+
import jakarta.validation.constraints.DecimalMax
7+
import jakarta.validation.constraints.DecimalMin
8+
import jakarta.validation.constraints.Email
9+
import jakarta.validation.constraints.Max
10+
import jakarta.validation.constraints.Min
11+
import jakarta.validation.constraints.NotNull
12+
import jakarta.validation.constraints.Pattern
13+
import jakarta.validation.constraints.Size
14+
import misk.web.actions.WebAction
15+
import misk.web.interceptors.LogRequestResponse
516
import misk.web.Delete
617
import misk.web.Description
718
import misk.web.Get
@@ -16,8 +27,6 @@ import misk.web.RequestContentType
1627
import misk.web.RequestHeader
1728
import misk.web.ResponseContentType
1829
import misk.web.mediatype.MediaTypes
19-
import misk.web.actions.WebAction
20-
import misk.web.interceptors.LogRequestResponse
2130
import org.openapitools.server.api.model.ModelApiResponse
2231
import org.openapitools.server.api.model.Pet
2332

@@ -35,7 +44,7 @@ class PetApiAction @Inject constructor(
3544
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 2.0)
3645
@Suppress("unused")
3746
fun addPet(
38-
@RequestBody pet: Pet): Pet {
47+
@Valid @RequestBody pet: Pet): Pet {
3948
TODO()
4049
}
4150

@@ -86,7 +95,7 @@ class PetApiAction @Inject constructor(
8695
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 2.0)
8796
@Suppress("unused")
8897
fun updatePet(
89-
@RequestBody pet: Pet): Pet {
98+
@Valid @RequestBody pet: Pet): Pet {
9099
TODO()
91100
}
92101

@@ -111,7 +120,7 @@ class PetApiAction @Inject constructor(
111120
fun uploadFile(
112121
@PathParam("petId") petId: kotlin.Long,
113122
@QueryParam(value = "additionalMetadata") additionalMetadata: kotlin.String? ,
114-
file: HttpCall): ModelApiResponse {
123+
@Valid file: HttpCall): ModelApiResponse {
115124
TODO()
116125
}
117126
}

samples/server/petstore/kotlin-misk-config/src/main/kotlin/org/openapitools/server/api/api/StoreApiAction.kt

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@ package org.openapitools.server.api.api
22

33
import jakarta.inject.Inject
44
import jakarta.inject.Singleton
5+
import jakarta.validation.Valid
6+
import jakarta.validation.constraints.DecimalMax
7+
import jakarta.validation.constraints.DecimalMin
8+
import jakarta.validation.constraints.Email
9+
import jakarta.validation.constraints.Max
10+
import jakarta.validation.constraints.Min
11+
import jakarta.validation.constraints.NotNull
12+
import jakarta.validation.constraints.Pattern
13+
import jakarta.validation.constraints.Size
14+
import misk.web.actions.WebAction
15+
import misk.web.interceptors.LogRequestResponse
516
import misk.web.Delete
617
import misk.web.Description
718
import misk.web.Get
@@ -16,8 +27,6 @@ import misk.web.RequestContentType
1627
import misk.web.RequestHeader
1728
import misk.web.ResponseContentType
1829
import misk.web.mediatype.MediaTypes
19-
import misk.web.actions.WebAction
20-
import misk.web.interceptors.LogRequestResponse
2130
import org.openapitools.server.api.model.Order
2231

2332
/**
@@ -51,7 +60,7 @@ class StoreApiAction @Inject constructor(
5160
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 2.0)
5261
@Suppress("unused")
5362
fun getOrderById(
54-
@PathParam("orderId") orderId: kotlin.Long): Order {
63+
@Min(1L) @Max(5L) @PathParam("orderId") orderId: kotlin.Long): Order {
5564
TODO()
5665
}
5766

@@ -62,7 +71,7 @@ class StoreApiAction @Inject constructor(
6271
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 2.0)
6372
@Suppress("unused")
6473
fun placeOrder(
65-
@RequestBody order: Order): Order {
74+
@Valid @RequestBody order: Order): Order {
6675
TODO()
6776
}
6877
}

samples/server/petstore/kotlin-misk-config/src/main/kotlin/org/openapitools/server/api/api/UserApiAction.kt

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@ package org.openapitools.server.api.api
22

33
import jakarta.inject.Inject
44
import jakarta.inject.Singleton
5+
import jakarta.validation.Valid
6+
import jakarta.validation.constraints.DecimalMax
7+
import jakarta.validation.constraints.DecimalMin
8+
import jakarta.validation.constraints.Email
9+
import jakarta.validation.constraints.Max
10+
import jakarta.validation.constraints.Min
11+
import jakarta.validation.constraints.NotNull
12+
import jakarta.validation.constraints.Pattern
13+
import jakarta.validation.constraints.Size
14+
import misk.web.actions.WebAction
15+
import misk.web.interceptors.LogRequestResponse
516
import misk.web.Delete
617
import misk.web.Description
718
import misk.web.Get
@@ -16,8 +27,6 @@ import misk.web.RequestContentType
1627
import misk.web.RequestHeader
1728
import misk.web.ResponseContentType
1829
import misk.web.mediatype.MediaTypes
19-
import misk.web.actions.WebAction
20-
import misk.web.interceptors.LogRequestResponse
2130
import org.openapitools.server.api.model.User
2231

2332
/**
@@ -33,7 +42,7 @@ class UserApiAction @Inject constructor(
3342
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 2.0)
3443
@Suppress("unused")
3544
fun createUser(
36-
@RequestBody user: User) {
45+
@Valid @RequestBody user: User) {
3746
TODO()
3847
}
3948

@@ -43,7 +52,7 @@ class UserApiAction @Inject constructor(
4352
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 2.0)
4453
@Suppress("unused")
4554
fun createUsersWithArrayInput(
46-
@RequestBody user: kotlin.Array<User>) {
55+
@Valid @RequestBody user: kotlin.Array<User>) {
4756
TODO()
4857
}
4958

@@ -53,7 +62,7 @@ class UserApiAction @Inject constructor(
5362
@LogRequestResponse(bodySampling = 1.0, errorBodySampling = 2.0)
5463
@Suppress("unused")
5564
fun createUsersWithListInput(
56-
@RequestBody user: kotlin.Array<User>) {
65+
@Valid @RequestBody user: kotlin.Array<User>) {
5766
TODO()
5867
}
5968

@@ -102,7 +111,7 @@ class UserApiAction @Inject constructor(
102111
@Suppress("unused")
103112
fun updateUser(
104113
@PathParam("username") username: kotlin.String,
105-
@RequestBody user: User) {
114+
@Valid @RequestBody user: User) {
106115
TODO()
107116
}
108117
}

samples/server/petstore/kotlin-misk/src/main/kotlin/org/openapitools/server/api/api/PetApiAction.kt

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ package org.openapitools.server.api.api
22

33
import jakarta.inject.Inject
44
import jakarta.inject.Singleton
5+
import jakarta.validation.Valid
6+
import jakarta.validation.constraints.DecimalMax
7+
import jakarta.validation.constraints.DecimalMin
8+
import jakarta.validation.constraints.Email
9+
import jakarta.validation.constraints.Max
10+
import jakarta.validation.constraints.Min
11+
import jakarta.validation.constraints.NotNull
12+
import jakarta.validation.constraints.Pattern
13+
import jakarta.validation.constraints.Size
514
import misk.web.Delete
615
import misk.web.Description
716
import misk.web.Get
@@ -24,14 +33,14 @@ import org.openapitools.server.api.model.Pet
2433
*/
2534
@Singleton
2635
class PetApiAction @Inject constructor(
27-
) : WebAction {
36+
) : WebAction {
2837

2938
@Post("/pet")
3039
@Description("Add a new pet to the store")
31-
(.APPLICATION_JSON, .APPLICATION_XML)
40+
@RequestContentType(MediaTypes.APPLICATION_JSON, MediaTypes.APPLICATION_XML)
3241
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
3342
fun addPet(
34-
@RequestBody pet: Pet): Pet {
43+
@Valid @RequestBody pet: Pet): Pet {
3544
TODO()
3645
}
3746

@@ -69,16 +78,16 @@ class PetApiAction @Inject constructor(
6978

7079
@Put("/pet")
7180
@Description("Update an existing pet")
72-
(.APPLICATION_JSON, .APPLICATION_XML)
81+
@RequestContentType(MediaTypes.APPLICATION_JSON, MediaTypes.APPLICATION_XML)
7382
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
7483
fun updatePet(
75-
@RequestBody pet: Pet): Pet {
84+
@Valid @RequestBody pet: Pet): Pet {
7685
TODO()
7786
}
7887

7988
@Post("/pet/{petId}")
8089
@Description("Updates a pet in the store with form data")
81-
(.APPLICATION_FORM_URLENCODED)
90+
@RequestContentType(MediaTypes.APPLICATION_FORM_URLENCODED)
8291
fun updatePetWithForm(
8392
@PathParam("petId") petId: kotlin.Long,
8493
@QueryParam(value = "name") name: kotlin.String? ,
@@ -88,12 +97,12 @@ class PetApiAction @Inject constructor(
8897

8998
@Post("/pet/{petId}/uploadImage")
9099
@Description("uploads an image")
91-
(.FORM_DATA)
100+
@RequestContentType(MediaTypes.FORM_DATA)
92101
@ResponseContentType(MediaTypes.APPLICATION_JSON)
93102
fun uploadFile(
94103
@PathParam("petId") petId: kotlin.Long,
95104
@QueryParam(value = "additionalMetadata") additionalMetadata: kotlin.String? ,
96-
file: HttpCall): ModelApiResponse {
105+
@Valid file: HttpCall): ModelApiResponse {
97106
TODO()
98107
}
99108
}

samples/server/petstore/kotlin-misk/src/main/kotlin/org/openapitools/server/api/api/StoreApiAction.kt

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ package org.openapitools.server.api.api
22

33
import jakarta.inject.Inject
44
import jakarta.inject.Singleton
5+
import jakarta.validation.Valid
6+
import jakarta.validation.constraints.DecimalMax
7+
import jakarta.validation.constraints.DecimalMin
8+
import jakarta.validation.constraints.Email
9+
import jakarta.validation.constraints.Max
10+
import jakarta.validation.constraints.Min
11+
import jakarta.validation.constraints.NotNull
12+
import jakarta.validation.constraints.Pattern
13+
import jakarta.validation.constraints.Size
514
import misk.web.Delete
615
import misk.web.Description
716
import misk.web.Get
@@ -23,7 +32,7 @@ import org.openapitools.server.api.model.Order
2332
*/
2433
@Singleton
2534
class StoreApiAction @Inject constructor(
26-
) : {
35+
) : WebAction {
2736

2837
@Delete("/store/order/{orderId}")
2938
@Description("Delete purchase order by ID")
@@ -43,16 +52,16 @@ class StoreApiAction @Inject constructor(
4352
@Description("Find purchase order by ID")
4453
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
4554
fun getOrderById(
46-
@PathParam("orderId") orderId: kotlin.Long): Order {
55+
@Min(1L) @Max(5L) @PathParam("orderId") orderId: kotlin.Long): Order {
4756
TODO()
4857
}
4958

5059
@Post("/store/order")
5160
@Description("Place an order for a pet")
52-
(.APPLICATION_JSON)
61+
@RequestContentType(MediaTypes.APPLICATION_JSON)
5362
@ResponseContentType(MediaTypes.APPLICATION_XML, MediaTypes.APPLICATION_JSON)
5463
fun placeOrder(
55-
@RequestBody order: Order): Order {
64+
@Valid @RequestBody order: Order): Order {
5665
TODO()
5766
}
5867
}

0 commit comments

Comments
 (0)