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