You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1.2 KiB
Kotlin
31 lines
1.2 KiB
Kotlin
4 years ago
|
package wf.servitor.common.utils
|
||
|
|
||
|
import com.fasterxml.jackson.core.JsonGenerator
|
||
|
import com.fasterxml.jackson.core.JsonParser
|
||
|
import com.fasterxml.jackson.core.type.TypeReference
|
||
|
import com.fasterxml.jackson.databind.DeserializationContext
|
||
|
import com.fasterxml.jackson.databind.JsonDeserializer
|
||
|
import com.fasterxml.jackson.databind.JsonSerializer
|
||
|
import com.fasterxml.jackson.databind.SerializerProvider
|
||
|
import com.fasterxml.jackson.databind.module.SimpleModule
|
||
|
import org.joda.time.DateTime
|
||
|
import wf.servitor.common.workflow.Flow
|
||
|
import wf.servitor.common.workflow.Step
|
||
|
|
||
|
object JacksonModule : SimpleModule() {
|
||
|
val listStepType = object : TypeReference<List<Step>>() {}
|
||
|
|
||
|
init {
|
||
|
addDeserializer(Flow::class.java, object : JsonDeserializer<Flow>() {
|
||
|
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Flow {
|
||
|
return Flow(p.readValueAs<List<Step>>(listStepType).toMutableList())
|
||
|
}
|
||
|
})
|
||
|
|
||
|
addSerializer(DateTime::class.java, object : JsonSerializer<DateTime>() {
|
||
|
override fun serialize(value: DateTime, gen: JsonGenerator, serializers: SerializerProvider) {
|
||
|
gen.writeString(value.toString())
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|