Skip to content

Commit 947aad8

Browse files
authored
Merge pull request #75 from volanty/issue-74
fix npe when missing required field
2 parents 4d60e2a + 96c06ce commit 947aad8

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.papsign.ktor.openapigen.exceptions
2+
3+
class OpenAPIRequiredFieldException (override val message: String) : Exception(message)

src/main/kotlin/com/papsign/ktor/openapigen/parameters/handlers/ModularParameterHandler.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.papsign.ktor.openapigen.annotations.parameters.HeaderParam
77
import com.papsign.ktor.openapigen.annotations.parameters.PathParam
88
import com.papsign.ktor.openapigen.annotations.parameters.QueryParam
99
import com.papsign.ktor.openapigen.annotations.parameters.apiParam
10+
import com.papsign.ktor.openapigen.exceptions.OpenAPIRequiredFieldException
1011
import com.papsign.ktor.openapigen.model.operation.ParameterLocation
1112
import com.papsign.ktor.openapigen.model.operation.ParameterModel
1213
import com.papsign.ktor.openapigen.model.schema.SchemaModel
@@ -26,7 +27,10 @@ class ModularParameterHandler<T>(val parsers: Map<KParameter, Builder<*>>, val c
2627
ParameterHandler<T> {
2728

2829
override fun parse(parameters: Parameters, headers: Headers): T {
29-
return constructor.callBy(parsers.mapValues { it.value.build(it.key.name.toString(), it.key.remapOpenAPINames(parameters.toMap() + headers.toMap())) })
30+
return constructor.callBy(parsers.mapValues {
31+
it.value.build(it.key.name.toString(), it.key.remapOpenAPINames(parameters.toMap() + headers.toMap()))
32+
?: throw OpenAPIRequiredFieldException("""The field ${it.key.openAPIName ?: "unknow field"} is required""")
33+
})
3034
}
3135

3236
override fun getParameters(apiGen: OpenAPIGen, provider: ModuleProvider<*>): List<ParameterModel<*>> {

0 commit comments

Comments
 (0)