Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 37 additions & 14 deletions jacodb-ets/src/main/kotlin/org/jacodb/ets/dto/Serializers.kt
Original file line number Diff line number Diff line change
Expand Up @@ -91,10 +91,17 @@ object RawStmtSerializer : KSerializer<RawStmtDto> {
override fun deserialize(decoder: Decoder): RawStmtDto {
require(decoder is JsonDecoder)
val element = decoder.decodeJsonElement().jsonObject
val kind = element.getValue("_").jsonPrimitive.content
val details = element.toMutableMap()
details.remove("_")
return RawStmtDto(kind, JsonObject(details))
if ("_" in element.keys) {
val kind = element.getValue("_").jsonPrimitive.content
val details = element.toMutableMap()
details.remove("_")
return RawStmtDto(kind, JsonObject(details))
} else {
val kind = element.getValue("kind").jsonPrimitive.content
val details = element.toMutableMap()
details.remove("kind")
return RawStmtDto(kind, JsonObject(details))
}
}

override fun serialize(encoder: Encoder, value: RawStmtDto) {
Expand All @@ -110,12 +117,21 @@ object RawValueSerializer : KSerializer<RawValueDto> {
override fun deserialize(decoder: Decoder): RawValueDto {
require(decoder is JsonDecoder)
val element = decoder.decodeJsonElement().jsonObject
val kind = element.getValue("_").jsonPrimitive.content
val type = decoder.json.decodeFromJsonElement<TypeDto>(element.getValue("type"))
val details = element.toMutableMap()
details.remove("_")
details.remove("type")
return RawValueDto(kind, JsonObject(details), type)
if ("_" in element.keys) {
val kind = element.getValue("_").jsonPrimitive.content
val type = decoder.json.decodeFromJsonElement<TypeDto>(element.getValue("type"))
val details = element.toMutableMap()
details.remove("_")
details.remove("type")
return RawValueDto(kind, JsonObject(details), type)
} else {
val kind = element.getValue("kind").jsonPrimitive.content
val type = decoder.json.decodeFromJsonElement<TypeDto>(element.getValue("type"))
val details = element.toMutableMap()
details.remove("kind")
details.remove("type")
return RawValueDto(kind, JsonObject(details), type)
}
}

override fun serialize(encoder: Encoder, value: RawValueDto) {
Expand All @@ -131,10 +147,17 @@ object RawTypeSerializer : KSerializer<RawTypeDto> {
override fun deserialize(decoder: Decoder): RawTypeDto {
require(decoder is JsonDecoder)
val element = decoder.decodeJsonElement().jsonObject
val kind = element.getValue("_").jsonPrimitive.content
val details = element.toMutableMap()
details.remove("_")
return RawTypeDto(kind, JsonObject(details))
if ("_" in element.keys) {
val kind = element.getValue("_").jsonPrimitive.content
val details = element.toMutableMap()
details.remove("_")
return RawTypeDto(kind, JsonObject(details))
} else {
val kind = element.getValue("kind").jsonPrimitive.content
val details = element.toMutableMap()
details.remove("kind")
return RawTypeDto(kind, JsonObject(details))
}
}

override fun serialize(encoder: Encoder, value: RawTypeDto) {
Expand Down
Loading