@@ -4,6 +4,7 @@ import com.amazonaws.services.lambda.runtime.Context
4
4
import com.amazonaws.services.lambda.runtime.RequestHandler
5
5
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent
6
6
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent
7
+ import com.fasterxml.jackson.databind.exc.InvalidFormatException
7
8
import com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException
8
9
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
9
10
import com.google.common.net.MediaType
@@ -119,8 +120,7 @@ abstract class RequestHandler : RequestHandler<APIGatewayProxyRequestEvent, APIG
119
120
/* *
120
121
* Customize the format of an unprocessable entity error
121
122
*/
122
- open fun createUnprocessableEntityErrorBody (error : UnprocessableEntityError ): Any =
123
- error
123
+ open fun createUnprocessableEntityErrorBody (errors : List <UnprocessableEntityError >): Any = errors
124
124
125
125
open fun createApiExceptionErrorResponse (contentType : MediaType , input : APIGatewayProxyRequestEvent , ex : ApiException ): APIGatewayProxyResponseEvent =
126
126
createErrorBody(ex.toApiError()).let {
@@ -138,12 +138,19 @@ abstract class RequestHandler : RequestHandler<APIGatewayProxyRequestEvent, APIG
138
138
139
139
open fun createUnexpectedErrorResponse (contentType : MediaType , input : APIGatewayProxyRequestEvent , ex : Exception ): APIGatewayProxyResponseEvent =
140
140
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())))))
141
148
is MissingKotlinParameterException ->
142
149
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())))))
147
154
else -> createResponse(contentType, input,
148
155
ResponseEntity (500 , createErrorBody(ApiError (ex.message.orEmpty(), " INTERNAL_SERVER_ERROR" ))))
149
156
}
0 commit comments