diff options
author | Dico200 <dico.karssiens@gmail.com> | 2018-07-22 07:21:02 +0200 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2018-07-22 07:21:02 +0200 |
commit | 0aa8b1fa9052d67664a503a3f78d90c4b64b03b7 (patch) | |
tree | d79fd5aaa536e5ef1162532006b7e35df586df2d | |
parent | 9f81a74bd9e89541448bf79d73d0b9bc297e72ee (diff) |
Fix relocation, some missing serializers
-rw-r--r-- | build.gradle.kts | 7 | ||||
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/storage/Jackson.kt | 28 |
2 files changed, 33 insertions, 2 deletions
diff --git a/build.gradle.kts b/build.gradle.kts index fe71506..3c9baf6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -65,9 +65,12 @@ tasks { } relocate("", "io.dico.parcels2.util.") { + exclude("kotlin*") exclude("META-INF/*") - exclude("logback*") - exclude("plugin*") + exclude("logback*xml") + exclude("plugin*yml") } + + relocate("kotlin", "kotlin") } }
\ No newline at end of file diff --git a/src/main/kotlin/io/dico/parcels2/storage/Jackson.kt b/src/main/kotlin/io/dico/parcels2/storage/Jackson.kt index 18ad31f..685ccb5 100644 --- a/src/main/kotlin/io/dico/parcels2/storage/Jackson.kt +++ b/src/main/kotlin/io/dico/parcels2/storage/Jackson.kt @@ -93,3 +93,31 @@ class StorageOptionsSerializer : StdSerializer<StorageOptions>(StorageOptions::c } */ + + +class GeneratorOptionsDeserializer : JsonDeserializer<GeneratorOptions>() { + + override fun deserialize(parser: JsonParser?, ctx: DeserializationContext?): GeneratorOptions? { + val node = parser!!.readValueAsTree<JsonNode>() + val name = node.get("name").asText() + val optionsNode = node.get("options") + val factory = GeneratorFactory.getFactory(name) ?: throw IllegalStateException("Unknown generator: $name") + + return parser.codec.treeToValue(optionsNode, factory.optionsClass.java) + } + +} + +class GeneratorOptionsSerializer(private val defaultSerializer: JsonSerializer<GeneratorOptions>) : JsonSerializer<GeneratorOptions>() { + + override fun serialize(input: GeneratorOptions?, generator: JsonGenerator?, provider: SerializerProvider?) { + with(generator!!) { + writeStartObject() + writeStringField("name", input!!.generatorFactory().name) + writeFieldName("options") + defaultSerializer.serialize(input, generator, provider) + writeEndObject() + } + } + +}
\ No newline at end of file |