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

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())
}
})
}
}