@@ -4,6 +4,7 @@ import com.amazonaws.services.lambda.runtime.Context
44import com.amazonaws.services.lambda.runtime.RequestHandler
55import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent
66import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent
7+ import com.fasterxml.jackson.databind.exc.InvalidFormatException
78import com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException
89import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
910import com.google.common.net.MediaType
@@ -119,8 +120,7 @@ abstract class RequestHandler : RequestHandler<APIGatewayProxyRequestEvent, APIG
119120 /* *
120121 * Customize the format of an unprocessable entity error
121122 */
122- open fun createUnprocessableEntityErrorBody (error : UnprocessableEntityError ): Any =
123- error
123+ open fun createUnprocessableEntityErrorBody (errors : List <UnprocessableEntityError >): Any = errors
124124
125125 open fun createApiExceptionErrorResponse (contentType : MediaType , input : APIGatewayProxyRequestEvent , ex : ApiException ): APIGatewayProxyResponseEvent =
126126 createErrorBody(ex.toApiError()).let {
@@ -138,12 +138,19 @@ abstract class RequestHandler : RequestHandler<APIGatewayProxyRequestEvent, APIG
138138
139139 open fun createUnexpectedErrorResponse (contentType : MediaType , input : APIGatewayProxyRequestEvent , ex : Exception ): APIGatewayProxyResponseEvent =
140140 when (ex) {
141+ is InvalidFormatException ->
142+ createResponse(contentType, input,
143+ ResponseEntity (422 , createUnprocessableEntityErrorBody(listOf (
144+ UnprocessableEntityError (
145+ message = " INVALID_FIELD_FORMAT" ,
146+ code = " FIELD" ,
147+ path = ex.path.last().fieldName.orEmpty())))))
141148 is MissingKotlinParameterException ->
142149 createResponse(contentType, input,
143- ResponseEntity (422 , createUnprocessableEntityErrorBody(UnprocessableEntityError (
144- message = " Missing required field " ,
145- code = " MISSING_REQUIRED_FIELDS " ,
146- path = ex.parameter.name.orEmpty()))))
150+ ResponseEntity (422 , createUnprocessableEntityErrorBody(listOf ( UnprocessableEntityError (
151+ message = " MISSING_REQUIRED_FIELDS " ,
152+ code = " FIELD " ,
153+ path = ex.parameter.name.orEmpty())))))
147154 else -> createResponse(contentType, input,
148155 ResponseEntity (500 , createErrorBody(ApiError (ex.message.orEmpty(), " INTERNAL_SERVER_ERROR" ))))
149156 }
0 commit comments