Skip to content

Commit cbc60df

Browse files
MateuszNaKodachsmcvb
authored andcommitted
[#380] docs: add missing test case for malformed json
(cherry picked from commit a14f3df)
1 parent dc912c3 commit cbc60df

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

kotlin/src/main/kotlin/org/axonframework/extensions/kotlin/serialization/AxonSerializers.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ val replayTokenContextSerializer = String.serializer().nullable
7474

7575
/**
7676
* Module defining serializers for Axon Framework's core event handling and messaging components.
77-
* This module includes serializers for TrackingTokens, ScheduleTokens, and ResponseTypes, enabling
77+
* This module includes serializers for TrackingTokens, ScheduleTokens, ResponseTypes and MetaData enabling
7878
* seamless integration with Axon-based applications.
7979
*/
8080
val AxonSerializersModule = SerializersModule {

kotlin/src/main/kotlin/org/axonframework/extensions/kotlin/serialization/MetaDataSerializer.kt

+2-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import kotlinx.serialization.encoding.Encoder
1010
import kotlinx.serialization.json.*
1111
import org.axonframework.messaging.MetaData
1212
import java.time.Instant
13-
import java.util.Date
1413
import java.util.UUID
1514

1615
/**
@@ -23,14 +22,14 @@ import java.util.UUID
2322
* ### Supported value types
2423
* Each entry in the MetaData map must conform to one of the following:
2524
* - Primitives: [String], [Int], [Long], [Float], [Double], [Boolean]
26-
* - Complex types: [UUID], [Instant], [Date]
25+
* - Complex types: [UUID], [Instant]
2726
* - Collections: [Collection], [List], [Set]
2827
* - Arrays: [Array]
2928
* - Nested Maps: [Map] with keys convertible to [String]
3029
*
3130
* ### Limitations
3231
* - Custom types that do not fall into the above categories will throw a [SerializationException]
33-
* - Deserialized non-primitive types (like [UUID], [Instant], [Date]) are restored as [String], not their original types
32+
* - Deserialized non-primitive types (like [UUID], [Instant]) are restored as [String], not their original types
3433
*
3534
* This serializer guarantees structural integrity of nested metadata (e.g. map within list within map), while remaining format-agnostic.
3635
*
@@ -67,7 +66,6 @@ object MetaDataSerializer : KSerializer<MetaData> {
6766
is Float -> JsonPrimitive(value)
6867
is Double -> JsonPrimitive(value)
6968
is UUID -> JsonPrimitive(value.toString())
70-
is Date -> JsonPrimitive(value.toString())
7169
is Instant -> JsonPrimitive(value.toString())
7270
is Map<*, *> -> JsonObject(value.entries.associate { (k, v) -> k.toString() to toJsonElement(v) })
7371
is Collection<*> -> JsonArray(value.map { toJsonElement(it) })

kotlin/src/test/kotlin/org/axonframework/extensions/kotlin/serializer/MetaDataSerializerTest.kt

+15-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import org.axonframework.extensions.kotlin.serialization.AxonSerializersModule
77
import org.axonframework.extensions.kotlin.serialization.KotlinSerializer
88
import org.axonframework.messaging.MetaData
99
import org.axonframework.serialization.SerializationException
10+
import org.axonframework.serialization.SimpleSerializedObject
11+
import org.axonframework.serialization.SimpleSerializedType
1012
import org.junit.jupiter.api.Assertions.*
1113
import org.junit.jupiter.api.Test
1214
import org.junit.jupiter.api.assertThrows
@@ -229,4 +231,16 @@ class MetaDataSerializerTest {
229231
}
230232
}
231233

232-
}
234+
@Test
235+
fun `should throw exception when deserializing malformed JSON`() {
236+
val serializedType = SimpleSerializedType(MetaData::class.java.name, null)
237+
238+
val syntaxErrorJson = """{"key": value}""" // missing quotes around value
239+
val syntaxErrorObject = SimpleSerializedObject(syntaxErrorJson, String::class.java, serializedType)
240+
241+
assertThrows<SerializationException> {
242+
jsonSerializer.deserialize<String, MetaData>(syntaxErrorObject)
243+
}
244+
}
245+
246+
}

0 commit comments

Comments
 (0)