Skip to content
Merged
Show file tree
Hide file tree
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.fasterxml.jackson.module.kotlin.deserializers

import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.DeserializationContext
import com.fasterxml.jackson.databind.deser.std.StdDeserializer

/**
* @author Konstantin Volivach
*/
class SequenceDeserializer : StdDeserializer<Sequence<*>>(Sequence::class.java) {
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Sequence<*> {
return ctxt.readValue(p, List::class.java).asSequence()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.fasterxml.jackson.module.kotlin.serializers

import com.fasterxml.jackson.core.JsonGenerator
import com.fasterxml.jackson.databind.SerializerProvider
import com.fasterxml.jackson.databind.ser.std.StdSerializer

/**
* @author Konstantin Volivach
*/
class SequenceSerializer : StdSerializer<Sequence<*>>(Sequence::class.java) {
override fun serialize(value: Sequence<*>, gen: JsonGenerator, provider: SerializerProvider) {
provider.defaultSerializeValue(value.toList(), gen)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.fasterxml.jackson.module.kotlin.test.deserializers

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import com.fasterxml.jackson.module.kotlin.KotlinModule
import com.fasterxml.jackson.module.kotlin.deserializers.SequenceDeserializer
import com.fasterxml.jackson.module.kotlin.readValue
import org.junit.Test
import kotlin.test.assertEquals

/**
* @author Konstantin Volivach
*/
class SequenceDeserializerTest {
data class Data(
@field:JsonDeserialize(using = SequenceDeserializer::class)
val value: Sequence<String>
)

@Test
fun deserializeSequence() {
val list = listOf("Test", "Test1")
val objectMapper = ObjectMapper()
objectMapper.registerModule(KotlinModule())
val result = objectMapper.readValue<Data>("{\"value\":[\"Test\",\"Test1\"]}")
assertEquals(list, result.value.toList())
}

@Test
fun deserializeEmptySequence() {
val list = listOf<String>()
val objectMapper = ObjectMapper()
objectMapper.registerModule(KotlinModule())
val result = objectMapper.readValue<Data>("{\"value\":[]}")
assertEquals(list, result.value.toList())
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.fasterxml.jackson.module.kotlin.test.serializers

import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.databind.annotation.JsonSerialize
import com.fasterxml.jackson.module.kotlin.KotlinModule
import com.fasterxml.jackson.module.kotlin.serializers.SequenceSerializer
import org.junit.Test
import kotlin.test.assertEquals

/**
* @author Konstantin Volivach
*/
class SequenceSerializerTest {

data class Data(
@field:JsonSerialize(using = SequenceSerializer::class)
val value: Sequence<String>
)

@Test
fun testSerializeSequence() {
val sequence = listOf("Test", "Test1").asSequence()
val data = Data(
sequence
)
val objectMapper = ObjectMapper()
objectMapper.registerModule(KotlinModule())
val result = objectMapper.writeValueAsString(data)
assertEquals("{\"value\":[\"Test\",\"Test1\"]}", result)
}

@Test
fun testSerializeEmptySequence() {
val sequence = listOf<String>().asSequence()
val data = Data(
sequence
)
val objectMapper = ObjectMapper()
val result = objectMapper.writeValueAsString(data)
assertEquals("{\"value\":[]}", result)
}
}