![JAR search and dependency download from the Maven repository](/logo.png)
com.netflix.rewrite.jackson.TreeJacksonSerializer.kt Maven / Gradle / Ivy
package com.netflix.rewrite.jackson
import com.fasterxml.jackson.annotation.JsonInclude
import com.fasterxml.jackson.core.type.TypeReference
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.dataformat.smile.SmileFactory
import com.fasterxml.jackson.dataformat.smile.SmileGenerator
import com.fasterxml.jackson.module.kotlin.KotlinModule
import com.netflix.rewrite.ast.Tr
import java.io.InputStream
import java.io.OutputStream
class TreeJacksonSerializer {
companion object {
val cuListType = object : TypeReference>() {}
}
val mapper: ObjectMapper by lazy {
val f = SmileFactory()
f.configure(SmileGenerator.Feature.CHECK_SHARED_STRING_VALUES, true)
ObjectMapper(f)
.registerModule(KotlinModule())
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
}
fun Tr.CompilationUnit.writePretty(): String =
ObjectMapper().registerModule(KotlinModule())
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
.writerWithDefaultPrettyPrinter()
.writeValueAsString(this)
fun write(cus: List, out: OutputStream) {
mapper.writeValue(out, cus)
}
fun write(cus: List): ByteArray = mapper.writeValueAsBytes(cus)
fun write(cu: Tr.CompilationUnit, out: OutputStream) {
mapper.writeValue(out, cu)
}
fun write(cu: Tr.CompilationUnit): ByteArray = mapper.writeValueAsBytes(cu)
fun readList(input: InputStream): List {
return mapper.readValue>(input, cuListType)
}
fun readList(bytes: ByteArray): List =
mapper.readValue>(bytes, cuListType)
fun read(input: InputStream): Tr.CompilationUnit = mapper.readValue(input, Tr.CompilationUnit::class.java)
fun read(bytes: ByteArray): Tr.CompilationUnit = mapper.readValue(bytes, Tr.CompilationUnit::class.java)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy