while trying to send message to sqs , during parsing receiving error :
{"message":"Exception com.fasterxml.jackson.core.JsonParseException: Unexpected character ('i' (code 105)): was expecting comma to separate Array entries\n at [Source: (String)\
Class structure:
data class TriggerPayoutPayload(
val customerId: String,
val bookingType: BookingEntityType,
val itemsId: List<ListItems>?,
)
enum class BookingEntityType {
PREBOOKED,
RETURN,
}
enum class ItemType {
HEALTH,
BEVERAGE,
}
data class ListItems(
val itemType: ItemType,
val description: List<String>,
)
Used below payload :
{
"type": "test.payout",
"id":"sqsMsgId-01-03-01",
"body": {
"customer_id": "cus123",
"booking_type": "PREBOOKED",
"items_id":["{"item_type":"HEALTH","description":"Healthy"}"]
}
}
Code fails to parse event.payload with TriggerPayoutPayload. Only log statement printed but cannot proceed to payoutProcessor.process()
Sqs event processing:
private fun eventsProcessor(sqsEvent: SqsEvent<*>) {
log.info("Handling event ${sqsEvent.id} type: ${sqsEvent.type}")
when (sqsEvent.type) {
PREBOOKED ->
payoutProcessor.process(
sqsEvent.payload as TriggerPayoutPayload,
)
}
data class SqsEvent<T>(
val id: String,
val time: Instant? = null,
val type: String,
@JsonSubTypes(
Type(value = TriggerPayoutPayload::class, name = "PREBOOKED"))
val payload: T? = null,
val metadata: EventMetadata? = null,
var messageId: String? = null,
var receiptHandler: String? = null)
StackTrace
{"message":"Exception java.lang.NullPointerException: null cannot be cast to non-null type com.testproject.checkout.britania.migration.domain.TriggerPayoutPayload, stacktrace: java.lang.NullPointerException: null cannot be cast to non-null type com.testproject.checkout.britania.migration.domain.TriggerPayoutPayload\n\tat com.testproject.checkout.britania.migration.ApplicationHandler.eventsProcessor(ApplicationHandler.kt:114)\n\tat com.testproject.checkout.britania.migration.ApplicationHandler.handleRequest(ApplicationHandler.kt:72)\n\tat com.testproject.checkout.britania.migration.ApplicationHandler.handleRequest(ApplicationHandler.kt:35)\n\tat com.amazonaws.services.lambda.runtime.api.client.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:202)\n\tat com.amazonaws.services.lambda.runtime.api.client.EventHandlerLoader$2.call(EventHandlerLoader.java:905)\n\tat com.amazonaws.services.lambda.runtime.api.client.AWSLambda.startRuntime(AWSLambda.java:245)\n\tat com.amazonaws.services.lambda.runtime.api.client.AWSLambda.startRuntime(AWSLambda.java:197)\n\tat