mirror of
https://gitlab.bixilon.de/bixilon/pixlyzer.git
synced 2025-09-27 14:10:01 -04:00
properly serialize message types in 1.19
This commit is contained in:
parent
2a55f289c0
commit
27f146c317
@ -3,6 +3,7 @@ package de.bixilon.pixlyzer.generator.generators
|
|||||||
import de.bixilon.pixlyzer.generator.Generator
|
import de.bixilon.pixlyzer.generator.Generator
|
||||||
import de.bixilon.pixlyzer.util.ReflectionUtil.getClass
|
import de.bixilon.pixlyzer.util.ReflectionUtil.getClass
|
||||||
import de.bixilon.pixlyzer.util.ReflectionUtil.getField
|
import de.bixilon.pixlyzer.util.ReflectionUtil.getField
|
||||||
|
import de.bixilon.pixlyzer.util.ReflectionUtil.variable
|
||||||
import de.bixilon.pixlyzer.util.RegistryUtil
|
import de.bixilon.pixlyzer.util.RegistryUtil
|
||||||
import de.bixilon.pixlyzer.util.Util
|
import de.bixilon.pixlyzer.util.Util
|
||||||
import de.bixilon.pixlyzer.util.Util.JSON_MAP_TYPE
|
import de.bixilon.pixlyzer.util.Util.JSON_MAP_TYPE
|
||||||
@ -34,18 +35,31 @@ object MessageTypeGenerator : Generator(
|
|||||||
val json = compound()
|
val json = compound()
|
||||||
|
|
||||||
json["id"] = registry.getRawId(type)
|
json["id"] = registry.getRawId(type)
|
||||||
getField(messageTypeClass, "chat")?.get(type)?.serializeChat()?.let { json["chat"] = it }
|
getField(messageTypeClass, "chat")?.get(type)?.getOptional()?.getDecoration()?.serializeChat()?.let { json["chat"] = it }
|
||||||
getField(messageTypeClass, "narration")?.get(type)?.nullCast<Any>()?.serializeDecoration()?.let { json["narration"] = it }
|
getField(messageTypeClass, "narration")?.get(type)?.getOptional()?.getDecoration()?.serializeDecoration()?.let { json["narration"] = it }
|
||||||
|
|
||||||
this.data[identifier.toString()] = json
|
this.data[identifier.toString()] = json
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Any.getOptional(): Any? {
|
||||||
|
if (this is Optional<*>) {
|
||||||
|
return if (this.isPresent) this.get() else null
|
||||||
|
}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Any.getDecoration(): Any? {
|
||||||
|
this.variable<Any>("decoration")?.let { return it.getOptional() }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
private fun Any.serializeChat(): Map<String, Any?>? {
|
private fun Any.serializeChat(): Map<String, Any?>? {
|
||||||
if (this::class.java.simpleName == "Decoration") {
|
if (this::class.java.simpleName == "Decoration") {
|
||||||
return this.serializeDecoration()
|
return this.serializeDecoration()
|
||||||
}
|
}
|
||||||
return getField(this::class.java, "decoration")?.get(this)?.nullCast<Optional<Any>>()?.get()?.serializeDecoration()
|
var value = this.getOptional() ?: return null
|
||||||
|
return getField(value::class.java, "decoration")?.get(value)?.nullCast<Optional<Any>>()?.get()?.serializeDecoration()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Any.serializeDecoration(): Map<String, Any?> {
|
fun Any.serializeDecoration(): Map<String, Any?> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user