summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDico200 <dico.karssiens@gmail.com>2018-07-22 07:21:02 +0200
committerDico200 <dico.karssiens@gmail.com>2018-07-22 07:21:02 +0200
commit0aa8b1fa9052d67664a503a3f78d90c4b64b03b7 (patch)
treed79fd5aaa536e5ef1162532006b7e35df586df2d
parent9f81a74bd9e89541448bf79d73d0b9bc297e72ee (diff)
Fix relocation, some missing serializers
-rw-r--r--build.gradle.kts7
-rw-r--r--src/main/kotlin/io/dico/parcels2/storage/Jackson.kt28
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