Skip to content

Commit

Permalink
Merge pull request #1 from volanty/issue-74
Browse files Browse the repository at this point in the history
fix npe when missing required field
  • Loading branch information
inaiat authored Sep 14, 2020
2 parents 4d60e2a + 96c06ce commit 7444799
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package com.papsign.ktor.openapigen.exceptions

class OpenAPIRequiredFieldException (override val message: String) : Exception(message)
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.papsign.ktor.openapigen.annotations.parameters.HeaderParam
import com.papsign.ktor.openapigen.annotations.parameters.PathParam
import com.papsign.ktor.openapigen.annotations.parameters.QueryParam
import com.papsign.ktor.openapigen.annotations.parameters.apiParam
import com.papsign.ktor.openapigen.exceptions.OpenAPIRequiredFieldException
import com.papsign.ktor.openapigen.model.operation.ParameterLocation
import com.papsign.ktor.openapigen.model.operation.ParameterModel
import com.papsign.ktor.openapigen.model.schema.SchemaModel
Expand All @@ -26,7 +27,10 @@ class ModularParameterHandler<T>(val parsers: Map<KParameter, Builder<*>>, val c
ParameterHandler<T> {

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

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

0 comments on commit 7444799

Please sign in to comment.