File tree Expand file tree Collapse file tree 4 files changed +107
-0
lines changed
main/kotlin/com/fasterxml/jackson/module/kotlin
test/kotlin/com/fasterxml/jackson/module/kotlin/test Expand file tree Collapse file tree 4 files changed +107
-0
lines changed Original file line number Diff line number Diff line change 1+ package com.fasterxml.jackson.module.kotlin.deserializers
2+
3+ import com.fasterxml.jackson.core.JsonParser
4+ import com.fasterxml.jackson.databind.DeserializationContext
5+ import com.fasterxml.jackson.databind.deser.std.StdDeserializer
6+
7+ /* *
8+ * @author Konstantin Volivach
9+ */
10+ class SequenceDeserializer : StdDeserializer <Sequence <* >>(Sequence : :class.java) {
11+ override fun deserialize (p : JsonParser , ctxt : DeserializationContext ): Sequence <* > {
12+ return ctxt.readValue(p, List ::class .java).asSequence()
13+ }
14+ }
Original file line number Diff line number Diff line change 1+ package com.fasterxml.jackson.module.kotlin.serializers
2+
3+ import com.fasterxml.jackson.core.JsonGenerator
4+ import com.fasterxml.jackson.databind.SerializerProvider
5+ import com.fasterxml.jackson.databind.ser.std.StdSerializer
6+
7+ /* *
8+ * @author Konstantin Volivach
9+ */
10+ class SequenceSerializer : StdSerializer <Sequence <* >>(Sequence : :class.java) {
11+ override fun serialize (value : Sequence <* >, gen : JsonGenerator , provider : SerializerProvider ) {
12+ provider.defaultSerializeValue(value.toList(), gen)
13+ }
14+ }
Original file line number Diff line number Diff line change 1+ package com.fasterxml.jackson.module.kotlin.test.deserializers
2+
3+ import com.fasterxml.jackson.databind.ObjectMapper
4+ import com.fasterxml.jackson.databind.annotation.JsonDeserialize
5+ import com.fasterxml.jackson.module.kotlin.KotlinModule
6+ import com.fasterxml.jackson.module.kotlin.deserializers.SequenceDeserializer
7+ import com.fasterxml.jackson.module.kotlin.readValue
8+ import org.junit.Test
9+ import kotlin.test.assertEquals
10+
11+ /* *
12+ * @author Konstantin Volivach
13+ */
14+ class SequenceDeserializerTest {
15+ data class Data (
16+ @field:JsonDeserialize(using = SequenceDeserializer ::class)
17+ val value : Sequence <String >
18+ )
19+
20+ @Test
21+ fun deserializeSequence () {
22+ val list = listOf (" Test" , " Test1" )
23+ val objectMapper = ObjectMapper ()
24+ objectMapper.registerModule(KotlinModule ())
25+ val result = objectMapper.readValue<Data >(" {\" value\" :[\" Test\" ,\" Test1\" ]}" )
26+ assertEquals(list, result.value.toList())
27+ }
28+
29+ @Test
30+ fun deserializeEmptySequence () {
31+ val list = listOf<String >()
32+ val objectMapper = ObjectMapper ()
33+ objectMapper.registerModule(KotlinModule ())
34+ val result = objectMapper.readValue<Data >(" {\" value\" :[]}" )
35+ assertEquals(list, result.value.toList())
36+ }
37+ }
Original file line number Diff line number Diff line change 1+ package com.fasterxml.jackson.module.kotlin.test.serializers
2+
3+ import com.fasterxml.jackson.databind.ObjectMapper
4+ import com.fasterxml.jackson.databind.annotation.JsonSerialize
5+ import com.fasterxml.jackson.module.kotlin.KotlinModule
6+ import com.fasterxml.jackson.module.kotlin.serializers.SequenceSerializer
7+ import org.junit.Test
8+ import kotlin.test.assertEquals
9+
10+ /* *
11+ * @author Konstantin Volivach
12+ */
13+ class SequenceSerializerTest {
14+
15+ data class Data (
16+ @field:JsonSerialize(using = SequenceSerializer ::class)
17+ val value : Sequence <String >
18+ )
19+
20+ @Test
21+ fun testSerializeSequence () {
22+ val sequence = listOf (" Test" , " Test1" ).asSequence()
23+ val data = Data (
24+ sequence
25+ )
26+ val objectMapper = ObjectMapper ()
27+ objectMapper.registerModule(KotlinModule ())
28+ val result = objectMapper.writeValueAsString(data)
29+ assertEquals(" {\" value\" :[\" Test\" ,\" Test1\" ]}" , result)
30+ }
31+
32+ @Test
33+ fun testSerializeEmptySequence () {
34+ val sequence = listOf<String >().asSequence()
35+ val data = Data (
36+ sequence
37+ )
38+ val objectMapper = ObjectMapper ()
39+ val result = objectMapper.writeValueAsString(data)
40+ assertEquals(" {\" value\" :[]}" , result)
41+ }
42+ }
You can’t perform that action at this time.
0 commit comments