From ec965fbd0b1f8c16ae01d5410a43f15b56f0d545 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Mon, 6 Dec 2021 00:39:12 +0100 Subject: [PATCH] dump moshi, use jackson --- .../config/profile/GlobalProfileManager.kt | 2 +- .../minosoft/config/profile/ProfileManager.kt | 2 +- .../minosoft/data/text/ChatComponent.kt | 4 +- .../data/text/events/data/EntityHoverData.kt | 6 +- .../opengl/texture/OpenGLTextureArray.kt | 4 +- .../properties/AnimationProperties.kt | 11 ++-- .../protocol/protocol/InByteBuffer.kt | 4 +- .../java/de/bixilon/minosoft/util/KUtil.kt | 21 ++---- .../de/bixilon/minosoft/util/http/HTTP2.kt | 10 +-- .../ChatComponentColorSerializer.kt | 2 +- .../util/json/ChatComponentSerializer.kt | 36 ----------- .../minosoft/util/json/JSONSerializer.kt | 40 ------------ .../util/json/{jackson => }/Jackson.kt | 2 +- .../json/{jackson => }/LocaleSerializer.kt | 2 +- .../minosoft/util/json/RGBColorSerializer.kt | 64 ++++++++----------- .../util/json/ResourceLocationSerializer.kt | 51 +++++++-------- .../util/json/ServerAddressSerializer.kt | 37 ----------- .../minosoft/util/json/UUIDSerializer.kt | 37 ----------- .../minosoft/util/json/Vec2Serializer.kt | 30 --------- .../minosoft/util/json/VersionSerializer.kt | 39 ----------- .../util/json/jackson/RGBColorSerializer.kt | 38 ----------- .../jackson/ResourceLocationSerializer.kt | 33 ---------- 22 files changed, 84 insertions(+), 391 deletions(-) rename src/main/java/de/bixilon/minosoft/util/json/{jackson => }/ChatComponentColorSerializer.kt (96%) delete mode 100644 src/main/java/de/bixilon/minosoft/util/json/ChatComponentSerializer.kt delete mode 100644 src/main/java/de/bixilon/minosoft/util/json/JSONSerializer.kt rename src/main/java/de/bixilon/minosoft/util/json/{jackson => }/Jackson.kt (96%) rename src/main/java/de/bixilon/minosoft/util/json/{jackson => }/LocaleSerializer.kt (96%) delete mode 100644 src/main/java/de/bixilon/minosoft/util/json/ServerAddressSerializer.kt delete mode 100644 src/main/java/de/bixilon/minosoft/util/json/UUIDSerializer.kt delete mode 100644 src/main/java/de/bixilon/minosoft/util/json/Vec2Serializer.kt delete mode 100644 src/main/java/de/bixilon/minosoft/util/json/VersionSerializer.kt delete mode 100644 src/main/java/de/bixilon/minosoft/util/json/jackson/RGBColorSerializer.kt delete mode 100644 src/main/java/de/bixilon/minosoft/util/json/jackson/ResourceLocationSerializer.kt diff --git a/src/main/java/de/bixilon/minosoft/config/profile/GlobalProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/GlobalProfileManager.kt index 2ad549801..ddfca0d75 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/GlobalProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/GlobalProfileManager.kt @@ -22,7 +22,7 @@ import de.bixilon.minosoft.util.KUtil.lockMapOf import de.bixilon.minosoft.util.KUtil.unsafeCast import de.bixilon.minosoft.util.Util import de.bixilon.minosoft.util.collections.LockMap -import de.bixilon.minosoft.util.json.jackson.Jackson +import de.bixilon.minosoft.util.json.Jackson import de.bixilon.minosoft.util.task.pool.DefaultThreadPool import de.bixilon.minosoft.util.task.time.TimeWorker import de.bixilon.minosoft.util.task.time.TimeWorkerTask diff --git a/src/main/java/de/bixilon/minosoft/config/profile/ProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/ProfileManager.kt index 03cebb7d2..229197d83 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/ProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/ProfileManager.kt @@ -15,7 +15,7 @@ import de.bixilon.minosoft.util.KUtil.toInt import de.bixilon.minosoft.util.Util import de.bixilon.minosoft.util.filewatcher.FileWatcher import de.bixilon.minosoft.util.filewatcher.FileWatcherService -import de.bixilon.minosoft.util.json.jackson.Jackson +import de.bixilon.minosoft.util.json.Jackson import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType diff --git a/src/main/java/de/bixilon/minosoft/data/text/ChatComponent.kt b/src/main/java/de/bixilon/minosoft/data/text/ChatComponent.kt index 39755444c..51d529cd6 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/ChatComponent.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/ChatComponent.kt @@ -16,7 +16,7 @@ import com.squareup.moshi.JsonEncodingException import de.bixilon.minosoft.data.language.Translator import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.text import de.bixilon.minosoft.util.KUtil.unsafeCast -import de.bixilon.minosoft.util.json.JSONSerializer +import de.bixilon.minosoft.util.json.Jackson import javafx.collections.FXCollections import javafx.collections.ObservableList import javafx.scene.Node @@ -91,7 +91,7 @@ interface ChatComponent { } if (!ignoreJson && string.startsWith('{')) { try { - return BaseComponent(translator, parent, JSONSerializer.MAP_ADAPTER.fromJson(string)!!, restrictedMode) + return BaseComponent(translator, parent, Jackson.MAPPER.readValue(string, Jackson.JSON_MAP_TYPE), restrictedMode) } catch (ignored: JsonEncodingException) { } } diff --git a/src/main/java/de/bixilon/minosoft/data/text/events/data/EntityHoverData.kt b/src/main/java/de/bixilon/minosoft/data/text/events/data/EntityHoverData.kt index 850ae7dc3..6baf3433e 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/events/data/EntityHoverData.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/events/data/EntityHoverData.kt @@ -18,7 +18,7 @@ import de.bixilon.minosoft.util.KUtil.asUUID import de.bixilon.minosoft.util.KUtil.nullCast import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.KUtil.unsafeCast -import de.bixilon.minosoft.util.json.JSONSerializer +import de.bixilon.minosoft.util.json.Jackson import de.bixilon.minosoft.util.nbt.tag.NBTUtil.asCompound import java.util.* @@ -31,13 +31,13 @@ class EntityHoverData( companion object { fun deserialize(data: Any): EntityHoverData { var json: Map = if (data is String) { - JSONSerializer.MAP_ADAPTER.fromJson(data) + Jackson.MAPPER.readValue(data, Jackson.JSON_MAP_TYPE) } else { data }.asCompound() json["text"]?.let { // 1.14.3.... lol - json = JSONSerializer.MAP_ADAPTER.fromJson(it.unsafeCast())!! + json = Jackson.MAPPER.readValue(it.unsafeCast(), Jackson.JSON_MAP_TYPE) } var type: ResourceLocation? = null json["type"]?.nullCast()?.let { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt index 64d05e2fd..a834f9687 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/texture/OpenGLTextureArray.kt @@ -24,7 +24,7 @@ import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.SpriteTextu import de.bixilon.minosoft.gui.rendering.textures.TextureAnimation import de.bixilon.minosoft.gui.rendering.textures.properties.ImageProperties import de.bixilon.minosoft.util.KUtil.synchronizedMapOf -import de.bixilon.minosoft.util.json.JSONSerializer +import de.bixilon.minosoft.util.json.Jackson import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType @@ -54,7 +54,7 @@ class OpenGLTextureArray( // load .mcmeta val properties = try { - JSONSerializer.IMAGE_PROPERTIES_ADAPTER.fromJson(renderWindow.connection.assetsManager.readStringAsset(ResourceLocation("$resourceLocation.mcmeta")))!! + Jackson.MAPPER.readValue(renderWindow.connection.assetsManager.readStringAsset(ResourceLocation("$resourceLocation.mcmeta")), ImageProperties::class.java) } catch (exception: FileNotFoundException) { ImageProperties() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/textures/properties/AnimationProperties.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/textures/properties/AnimationProperties.kt index 7a891405b..c989261d6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/textures/properties/AnimationProperties.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/textures/properties/AnimationProperties.kt @@ -13,7 +13,8 @@ package de.bixilon.minosoft.gui.rendering.textures.properties -import com.squareup.moshi.Json +import com.fasterxml.jackson.annotation.JsonIgnore +import com.fasterxml.jackson.annotation.JsonProperty import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTexture import de.bixilon.minosoft.util.KUtil.toInt @@ -21,15 +22,17 @@ data class AnimationProperties( val interpolate: Boolean = false, var width: Int = -1, var height: Int = -1, - @Json(name = "frametime") private val frameTime: Int = 1, - @Json(name = "frames") private val _frames: List = listOf(), + @JsonProperty("frametime") private val frameTime: Int = 1, + @JsonProperty("frames") private val _frames: List = listOf(), ) { + @JsonIgnore private var initialized = false - @Transient + @JsonIgnore lateinit var frames: Array private set + @JsonIgnore var frameCount = -1 private set diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt index 558dc115c..9705aa432 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.kt @@ -23,7 +23,7 @@ import de.bixilon.minosoft.data.tags.Tag import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.util.Util -import de.bixilon.minosoft.util.json.JSONSerializer +import de.bixilon.minosoft.util.json.Jackson import de.bixilon.minosoft.util.nbt.tag.NBTTagTypes import glm_.vec2.Vec2i import glm_.vec3.Vec3 @@ -271,7 +271,7 @@ open class InByteBuffer { fun readJson(): Map { - return JSONSerializer.MUTABLE_MAP_ADAPTER.fromJson(readString())!! + return Jackson.MAPPER.readValue(readString(), Jackson.JSON_MAP_TYPE) } fun readJsonArray(length: Int = readVarInt()): Array> { diff --git a/src/main/java/de/bixilon/minosoft/util/KUtil.kt b/src/main/java/de/bixilon/minosoft/util/KUtil.kt index ab9efa508..f208ea71b 100644 --- a/src/main/java/de/bixilon/minosoft/util/KUtil.kt +++ b/src/main/java/de/bixilon/minosoft/util/KUtil.kt @@ -13,8 +13,6 @@ package de.bixilon.minosoft.util -import com.squareup.moshi.JsonAdapter -import com.squareup.moshi.JsonWriter import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.data.inventory.ItemStack import de.bixilon.minosoft.data.registries.ResourceLocation @@ -28,11 +26,10 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.util.collections.LockMap import de.bixilon.minosoft.util.collections.SynchronizedMap import de.bixilon.minosoft.util.enum.AliasableEnum -import de.bixilon.minosoft.util.json.JSONSerializer +import de.bixilon.minosoft.util.json.Jackson import glm_.vec2.Vec2t import glm_.vec3.Vec3t import glm_.vec4.Vec4t -import okio.Buffer import sun.misc.Unsafe import java.io.* import java.lang.reflect.Field @@ -362,20 +359,16 @@ object KUtil { return this.unsafeCast() } - fun Any.toJson(beautiful: Boolean = false, adapter: JsonAdapter = JSONSerializer.ANY_ADAPTER): String { - val buffer = Buffer() - val jsonWriter: JsonWriter = JsonWriter.of(buffer) - if (beautiful) { - jsonWriter.indent = " " + fun Any.toJson(beautiful: Boolean = false): String { + return if (beautiful) { + Jackson.MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(this) + } else { + Jackson.MAPPER.writeValueAsString(this) } - synchronized(this) { - adapter.toJson(jsonWriter, this) - } - return buffer.readUtf8() } fun String.fromJson(): Any { - return JSONSerializer.ANY_ADAPTER.fromJson(this)!! + return Jackson.MAPPER.readValue(this, Jackson.JSON_MAP_TYPE) } fun Any?.toInt(): Int { diff --git a/src/main/java/de/bixilon/minosoft/util/http/HTTP2.kt b/src/main/java/de/bixilon/minosoft/util/http/HTTP2.kt index 6357d5958..6f40983bc 100644 --- a/src/main/java/de/bixilon/minosoft/util/http/HTTP2.kt +++ b/src/main/java/de/bixilon/minosoft/util/http/HTTP2.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.util.http import de.bixilon.minosoft.util.KUtil.decide import de.bixilon.minosoft.util.KUtil.extend import de.bixilon.minosoft.util.Util -import de.bixilon.minosoft.util.json.JSONSerializer +import de.bixilon.minosoft.util.json.Jackson import java.net.URI import java.net.http.HttpClient import java.net.http.HttpRequest @@ -52,8 +52,8 @@ object HTTP2 { return post( url = url, data = this, - bodyPublisher = { JSONSerializer.MAP_ADAPTER.toJson(it) }, - bodyBuilder = { it.isBlank().decide(null) { JSONSerializer.MAP_ADAPTER.fromJson(it) } }, + bodyPublisher = { Jackson.MAPPER.writeValueAsString(it) }, + bodyBuilder = { it.isBlank().decide(null) { Jackson.MAPPER.readValue(it, Jackson.JSON_MAP_TYPE) } }, headers = headers.extend( "Content-Type" to "application/json", "Accept" to "application/json", @@ -66,7 +66,7 @@ object HTTP2 { url = url, data = this, bodyPublisher = { Util.mapToUrlQuery(this) }, - bodyBuilder = { it.isBlank().decide(null) { JSONSerializer.MAP_ADAPTER.fromJson(it) } }, + bodyBuilder = { it.isBlank().decide(null) { Jackson.MAPPER.readValue(it, Jackson.JSON_MAP_TYPE) } }, headers = headers.extend( "Content-Type" to "application/x-www-form-urlencoded", ) @@ -87,7 +87,7 @@ object HTTP2 { fun String.getJson(headers: Map = mapOf()): HTTPResponse?> { return this.get( - bodyBuilder = { it.isBlank().decide(null) { JSONSerializer.MAP_ADAPTER.fromJson(it) } }, + bodyBuilder = { it.isBlank().decide(null) { Jackson.MAPPER.readValue(it, Jackson.JSON_MAP_TYPE) } }, headers = headers.extend( "Content-Type" to "application/json", "Accept" to "application/json", diff --git a/src/main/java/de/bixilon/minosoft/util/json/jackson/ChatComponentColorSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/ChatComponentColorSerializer.kt similarity index 96% rename from src/main/java/de/bixilon/minosoft/util/json/jackson/ChatComponentColorSerializer.kt rename to src/main/java/de/bixilon/minosoft/util/json/ChatComponentColorSerializer.kt index bc9934ba9..82f11bf02 100644 --- a/src/main/java/de/bixilon/minosoft/util/json/jackson/ChatComponentColorSerializer.kt +++ b/src/main/java/de/bixilon/minosoft/util/json/ChatComponentColorSerializer.kt @@ -1,4 +1,4 @@ -package de.bixilon.minosoft.util.json.jackson +package de.bixilon.minosoft.util.json import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.core.JsonParser diff --git a/src/main/java/de/bixilon/minosoft/util/json/ChatComponentSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/ChatComponentSerializer.kt deleted file mode 100644 index c0118b864..000000000 --- a/src/main/java/de/bixilon/minosoft/util/json/ChatComponentSerializer.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.util.json - -import com.squareup.moshi.* -import de.bixilon.minosoft.data.text.ChatComponent - -object ChatComponentSerializer : JsonAdapter() { - @FromJson - override fun fromJson(jsonReader: JsonReader): ChatComponent? { - if (jsonReader.peek() == JsonReader.Token.NULL) { - return null - } - return ChatComponent.of(jsonReader.nextString()) - } - - @ToJson - override fun toJson(jsonWriter: JsonWriter, chatComponent: ChatComponent?) { - if (chatComponent == null) { - jsonWriter.nullValue() - return - } - jsonWriter.value(chatComponent.legacyText) - } -} diff --git a/src/main/java/de/bixilon/minosoft/util/json/JSONSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/JSONSerializer.kt deleted file mode 100644 index 1c4675829..000000000 --- a/src/main/java/de/bixilon/minosoft/util/json/JSONSerializer.kt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.util.json - -import com.squareup.moshi.JsonAdapter -import com.squareup.moshi.Moshi -import com.squareup.moshi.Types -import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory -import de.bixilon.minosoft.gui.rendering.textures.properties.ImageProperties - -@Deprecated("Moshi is deprecated, use klaxon or mbf instead") -object JSONSerializer { - val MOSHI = Moshi.Builder() - .add(RGBColorSerializer) - .add(Vec2Serializer) - .add(ChatComponentSerializer) - .add(ServerAddressSerializer) - .add(ResourceLocationSerializer) - .add(UUIDSerializer) - .add(VersionSerializer) - .add(KotlinJsonAdapterFactory()) - .build()!! - - val ANY_ADAPTER = MOSHI.adapter(Any::class.java)!! - val MUTABLE_MAP_ADAPTER: JsonAdapter> = MOSHI.adapter(Types.newParameterizedType(MutableMap::class.java, String::class.java, Any::class.java)) - val MAP_ADAPTER: JsonAdapter> = MOSHI.adapter(Types.newParameterizedType(Map::class.java, String::class.java, Any::class.java)) - - val IMAGE_PROPERTIES_ADAPTER = MOSHI.adapter(ImageProperties::class.java)!! -} diff --git a/src/main/java/de/bixilon/minosoft/util/json/jackson/Jackson.kt b/src/main/java/de/bixilon/minosoft/util/json/Jackson.kt similarity index 96% rename from src/main/java/de/bixilon/minosoft/util/json/jackson/Jackson.kt rename to src/main/java/de/bixilon/minosoft/util/json/Jackson.kt index c896d1a3a..b089fc6df 100644 --- a/src/main/java/de/bixilon/minosoft/util/json/jackson/Jackson.kt +++ b/src/main/java/de/bixilon/minosoft/util/json/Jackson.kt @@ -1,4 +1,4 @@ -package de.bixilon.minosoft.util.json.jackson +package de.bixilon.minosoft.util.json import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.ObjectMapper diff --git a/src/main/java/de/bixilon/minosoft/util/json/jackson/LocaleSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/LocaleSerializer.kt similarity index 96% rename from src/main/java/de/bixilon/minosoft/util/json/jackson/LocaleSerializer.kt rename to src/main/java/de/bixilon/minosoft/util/json/LocaleSerializer.kt index 48c82a3fd..7f1127674 100644 --- a/src/main/java/de/bixilon/minosoft/util/json/jackson/LocaleSerializer.kt +++ b/src/main/java/de/bixilon/minosoft/util/json/LocaleSerializer.kt @@ -1,4 +1,4 @@ -package de.bixilon.minosoft.util.json.jackson +package de.bixilon.minosoft.util.json import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.core.JsonParser diff --git a/src/main/java/de/bixilon/minosoft/util/json/RGBColorSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/RGBColorSerializer.kt index 23f75b5e4..571f39d7d 100644 --- a/src/main/java/de/bixilon/minosoft/util/json/RGBColorSerializer.kt +++ b/src/main/java/de/bixilon/minosoft/util/json/RGBColorSerializer.kt @@ -1,48 +1,38 @@ -/* - * Minosoft - * Copyright (C) 2020 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - package de.bixilon.minosoft.util.json -import com.squareup.moshi.* +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParser +import com.fasterxml.jackson.core.JsonToken +import com.fasterxml.jackson.databind.DeserializationContext +import com.fasterxml.jackson.databind.SerializerProvider +import com.fasterxml.jackson.databind.deser.std.StdDeserializer +import com.fasterxml.jackson.databind.module.SimpleModule +import com.fasterxml.jackson.databind.ser.std.StdSerializer +import de.bixilon.minosoft.data.text.ChatCode.Companion.toColor import de.bixilon.minosoft.data.text.RGBColor -import de.bixilon.minosoft.data.text.RGBColor.Companion.asColor -import de.bixilon.minosoft.data.text.RGBColor.Companion.asRGBColor -object RGBColorSerializer : JsonAdapter() { - @FromJson - override fun fromJson(jsonReader: JsonReader): RGBColor? { - return when (jsonReader.peek()) { - JsonReader.Token.NUMBER -> { - val rgb = jsonReader.nextInt() - if (rgb == 0) { - return null - } - return rgb.asRGBColor() +object RGBColorSerializer : SimpleModule() { + + init { + addDeserializer(RGBColor::class.java, Deserializer) + addSerializer(RGBColor::class.java, Serializer) + } + + object Deserializer : StdDeserializer(RGBColor::class.java) { + + override fun deserialize(parser: JsonParser, context: DeserializationContext?): RGBColor { + return when (parser.currentToken) { + JsonToken.VALUE_NUMBER_INT -> RGBColor(parser.valueAsInt) + JsonToken.VALUE_STRING -> parser.valueAsString.toColor()!! + else -> TODO("Can not parse color!") } - JsonReader.Token.STRING -> jsonReader.nextString().asColor() - else -> null } } - @ToJson - override fun toJson(jsonWriter: JsonWriter, color: RGBColor?) { - if (color == null) { - jsonWriter.nullValue() - return + object Serializer : StdSerializer(RGBColor::class.java) { + + override fun serialize(value: RGBColor?, generator: JsonGenerator, provider: SerializerProvider?) { + generator.writeString(value?.toString()) } - if (color.rgba == 0) { - jsonWriter.nullValue() - } - jsonWriter.value(color.toString()) } } diff --git a/src/main/java/de/bixilon/minosoft/util/json/ResourceLocationSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/ResourceLocationSerializer.kt index 7bd3487df..5ba6849eb 100644 --- a/src/main/java/de/bixilon/minosoft/util/json/ResourceLocationSerializer.kt +++ b/src/main/java/de/bixilon/minosoft/util/json/ResourceLocationSerializer.kt @@ -1,36 +1,33 @@ -/* - * Minosoft - * Copyright (C) 2020 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - package de.bixilon.minosoft.util.json -import com.squareup.moshi.* +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParser +import com.fasterxml.jackson.databind.DeserializationContext +import com.fasterxml.jackson.databind.SerializerProvider +import com.fasterxml.jackson.databind.deser.std.StdDeserializer +import com.fasterxml.jackson.databind.module.SimpleModule +import com.fasterxml.jackson.databind.ser.std.StdSerializer import de.bixilon.minosoft.data.registries.ResourceLocation +import de.bixilon.minosoft.util.KUtil.toResourceLocation -object ResourceLocationSerializer : JsonAdapter() { - @FromJson - override fun fromJson(jsonReader: JsonReader): ResourceLocation? { - if (jsonReader.peek() == JsonReader.Token.NULL) { - return null - } - return ResourceLocation.getResourceLocation(jsonReader.nextString()) +object ResourceLocationSerializer : SimpleModule() { + + init { + addDeserializer(ResourceLocation::class.java, Deserializer) + addSerializer(ResourceLocation::class.java, Serializer) } - @ToJson - override fun toJson(jsonWriter: JsonWriter, resourceLocation: ResourceLocation?) { - if (resourceLocation == null) { - jsonWriter.nullValue() - return + object Deserializer : StdDeserializer(ResourceLocation::class.java) { + + override fun deserialize(parser: JsonParser, context: DeserializationContext?): ResourceLocation { + return parser.valueAsString.toResourceLocation() + } + } + + object Serializer : StdSerializer(ResourceLocation::class.java) { + + override fun serialize(value: ResourceLocation?, generator: JsonGenerator, provider: SerializerProvider?) { + generator.writeString(value?.full) } - jsonWriter.value(resourceLocation.full) } } diff --git a/src/main/java/de/bixilon/minosoft/util/json/ServerAddressSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/ServerAddressSerializer.kt deleted file mode 100644 index ab86d5283..000000000 --- a/src/main/java/de/bixilon/minosoft/util/json/ServerAddressSerializer.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.util.json - -import com.squareup.moshi.* -import de.bixilon.minosoft.util.DNSUtil -import de.bixilon.minosoft.util.ServerAddress - -object ServerAddressSerializer : JsonAdapter() { - @FromJson - override fun fromJson(jsonReader: JsonReader): ServerAddress? { - if (jsonReader.peek() == JsonReader.Token.NULL) { - return null - } - return DNSUtil.getServerAddress(jsonReader.nextString()) - } - - @ToJson - override fun toJson(jsonWriter: JsonWriter, serverAddress: ServerAddress?) { - if (serverAddress == null) { - jsonWriter.nullValue() - return - } - jsonWriter.value(serverAddress.toString()) - } -} diff --git a/src/main/java/de/bixilon/minosoft/util/json/UUIDSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/UUIDSerializer.kt deleted file mode 100644 index 7c653c955..000000000 --- a/src/main/java/de/bixilon/minosoft/util/json/UUIDSerializer.kt +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.util.json - -import com.squareup.moshi.* -import de.bixilon.minosoft.util.Util -import java.util.* - -object UUIDSerializer : JsonAdapter() { - @FromJson - override fun fromJson(jsonReader: JsonReader): UUID? { - if (jsonReader.peek() == JsonReader.Token.NULL) { - return null - } - return Util.getUUIDFromString(jsonReader.nextString()) - } - - @ToJson - override fun toJson(jsonWriter: JsonWriter, uuid: UUID?) { - if (uuid == null) { - jsonWriter.nullValue() - return - } - jsonWriter.value(uuid.toString()) - } -} diff --git a/src/main/java/de/bixilon/minosoft/util/json/Vec2Serializer.kt b/src/main/java/de/bixilon/minosoft/util/json/Vec2Serializer.kt deleted file mode 100644 index 4a8f2c00b..000000000 --- a/src/main/java/de/bixilon/minosoft/util/json/Vec2Serializer.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.util.json - -import com.squareup.moshi.FromJson -import com.squareup.moshi.ToJson -import glm_.vec2.Vec2 - -object Vec2Serializer { - @FromJson - fun fromJson(json: List): Vec2 { - return Vec2(json[0], json[1]) - } - - @ToJson - fun toJson(vec2: Vec2): List { - return listOf(vec2.x, vec2.y) - } -} diff --git a/src/main/java/de/bixilon/minosoft/util/json/VersionSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/VersionSerializer.kt deleted file mode 100644 index c1bd61e3a..000000000 --- a/src/main/java/de/bixilon/minosoft/util/json/VersionSerializer.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.util.json - -import com.squareup.moshi.* -import de.bixilon.minosoft.data.registries.versions.Version -import de.bixilon.minosoft.data.registries.versions.Versions - -object VersionSerializer : JsonAdapter() { - @FromJson - override fun fromJson(jsonReader: JsonReader): Version? { - return when (jsonReader.peek()) { - JsonReader.Token.NULL -> null - JsonReader.Token.NUMBER -> Versions.getVersionById(jsonReader.nextInt()) - JsonReader.Token.STRING -> Versions.getVersionByName(jsonReader.nextString()) - else -> TODO() - } - } - - @ToJson - override fun toJson(jsonWriter: JsonWriter, version: Version?) { - if (version == null) { - jsonWriter.nullValue() - return - } - jsonWriter.value(version.versionId) - } -} diff --git a/src/main/java/de/bixilon/minosoft/util/json/jackson/RGBColorSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/jackson/RGBColorSerializer.kt deleted file mode 100644 index 7f5686c0b..000000000 --- a/src/main/java/de/bixilon/minosoft/util/json/jackson/RGBColorSerializer.kt +++ /dev/null @@ -1,38 +0,0 @@ -package de.bixilon.minosoft.util.json.jackson - -import com.fasterxml.jackson.core.JsonGenerator -import com.fasterxml.jackson.core.JsonParser -import com.fasterxml.jackson.core.JsonToken -import com.fasterxml.jackson.databind.DeserializationContext -import com.fasterxml.jackson.databind.SerializerProvider -import com.fasterxml.jackson.databind.deser.std.StdDeserializer -import com.fasterxml.jackson.databind.module.SimpleModule -import com.fasterxml.jackson.databind.ser.std.StdSerializer -import de.bixilon.minosoft.data.text.ChatCode.Companion.toColor -import de.bixilon.minosoft.data.text.RGBColor - -object RGBColorSerializer : SimpleModule() { - - init { - addDeserializer(RGBColor::class.java, Deserializer) - addSerializer(RGBColor::class.java, Serializer) - } - - object Deserializer : StdDeserializer(RGBColor::class.java) { - - override fun deserialize(parser: JsonParser, context: DeserializationContext?): RGBColor { - return when (parser.currentToken) { - JsonToken.VALUE_NUMBER_INT -> RGBColor(parser.valueAsInt) - JsonToken.VALUE_STRING -> parser.valueAsString.toColor()!! - else -> TODO("Can not parse color!") - } - } - } - - object Serializer : StdSerializer(RGBColor::class.java) { - - override fun serialize(value: RGBColor?, generator: JsonGenerator, provider: SerializerProvider?) { - generator.writeString(value?.toString()) - } - } -} diff --git a/src/main/java/de/bixilon/minosoft/util/json/jackson/ResourceLocationSerializer.kt b/src/main/java/de/bixilon/minosoft/util/json/jackson/ResourceLocationSerializer.kt deleted file mode 100644 index 3217811a0..000000000 --- a/src/main/java/de/bixilon/minosoft/util/json/jackson/ResourceLocationSerializer.kt +++ /dev/null @@ -1,33 +0,0 @@ -package de.bixilon.minosoft.util.json.jackson - -import com.fasterxml.jackson.core.JsonGenerator -import com.fasterxml.jackson.core.JsonParser -import com.fasterxml.jackson.databind.DeserializationContext -import com.fasterxml.jackson.databind.SerializerProvider -import com.fasterxml.jackson.databind.deser.std.StdDeserializer -import com.fasterxml.jackson.databind.module.SimpleModule -import com.fasterxml.jackson.databind.ser.std.StdSerializer -import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.util.KUtil.toResourceLocation - -object ResourceLocationSerializer : SimpleModule() { - - init { - addDeserializer(ResourceLocation::class.java, Deserializer) - addSerializer(ResourceLocation::class.java, Serializer) - } - - object Deserializer : StdDeserializer(ResourceLocation::class.java) { - - override fun deserialize(parser: JsonParser, context: DeserializationContext?): ResourceLocation { - return parser.valueAsString.toResourceLocation() - } - } - - object Serializer : StdSerializer(ResourceLocation::class.java) { - - override fun serialize(value: ResourceLocation?, generator: JsonGenerator, provider: SerializerProvider?) { - generator.writeString(value?.full) - } - } -}