I have a complex obj stored in dynamo db which I'm trying to serialize using my converter class.
The problem is dynamo wrapper is still using default method and I can't get the debugger to reach my overridden method.
Is there any config I'm missing ?
@DynamoDBTable(tableName = "")
data class DynamoDataClass
(
@DynamoDBHashKey
var msgId: String = "",
@DynamoDBTypeConverted(converter = MetaConverter::class)
@DynamoDBAttribute
var meta: Map<String, Object> = HashMap(),
@DynamoDBTypeConverted(converter = PayloadConverter::class)
@DynamoDBAttribute
var payload: List<Map<String, Object>> = ArrayList()
){
constructor(): this(
msgId = "",
meta = HashMap(),
payload = ArrayList()
)
}
class PayloadConverter : DynamoDBTypeConverter<String, List<Map<String, Object>>> {
override fun convert(`object`: List<Map<String, Object>>): String {
val itemMeta: Map<String, Object> = `object` as Map<String, Object>
var meta: String = ""
try {
if (itemMeta != null) {
meta = itemMeta.toString()
}
} catch (e: Exception) {
e.printStackTrace()
}
return meta
}
override fun unconvert(s: String): List<Map<String, Object>> {
val itemMeta = ArrayList<HashMap<String, Object>>()
try {
var a = 1
var b = 2
} catch (e: Exception) {
e.printStackTrace()
}
return itemMeta
}
}
class MetaConverter : DynamoDBTypeConverter<String, Map<String, Object>> {
override fun convert(`object`: Map<String, Object>): String {
val itemMeta: Map<String, Object> = `object` as Map<String, Object>
var meta: String = ""
try {
if (itemMeta != null) {
meta = itemMeta.toString()
}
} catch (e: Exception) {
e.printStackTrace()
}
return meta
}
override fun unconvert(s: String): Map<String, Object> {
val itemMeta = HashMap<String, Object>()
try {
var a = 1
var b = 2
} catch (e: Exception) {
e.printStackTrace()
}
return itemMeta
}
}
The body of the overridden methods are not important as I wanna first see why they are not being used. The conversion logic will be added later