jsoner is always newly generated when accessed

This commit is contained in:
minjaesong
2023-10-24 22:25:13 +09:00
parent 43cb9ec00e
commit 98d7c9f326

View File

@@ -46,16 +46,15 @@ object Common {
private fun Byte.tostr() = this.toInt().and(255).toString(16).padStart(2,'0') private fun Byte.tostr() = this.toInt().and(255).toString(16).padStart(2,'0')
private val digester = DigestUtils.getSha256Digest() private val digester = DigestUtils.getSha256Digest()
val jsoner = Json(JsonWriter.OutputType.json) val jsoner: Json
get() = Json(JsonWriter.OutputType.json).also {
// install custom (de)serialiser // install custom (de)serialiser
init { it.ignoreUnknownFields = true
jsoner.ignoreUnknownFields = true it.setUsePrototypes(false)
jsoner.setUsePrototypes(false) it.setIgnoreDeprecated(false)
jsoner.setIgnoreDeprecated(false)
// BigInteger // BigInteger
jsoner.setSerializer(BigInteger::class.java, object : Json.Serializer<BigInteger> { it.setSerializer(BigInteger::class.java, object : Json.Serializer<BigInteger> {
override fun write(json: Json, obj: BigInteger?, knownType: Class<*>?) { override fun write(json: Json, obj: BigInteger?, knownType: Class<*>?) {
json.writeValue(obj?.toString()) json.writeValue(obj?.toString())
} }
@@ -65,7 +64,7 @@ object Common {
} }
}) })
// ZipCodedStr // ZipCodedStr
jsoner.setSerializer(ZipCodedStr::class.java, object : Json.Serializer<ZipCodedStr> { it.setSerializer(ZipCodedStr::class.java, object : Json.Serializer<ZipCodedStr> {
override fun write(json: Json, obj: ZipCodedStr, knownType: Class<*>?) { override fun write(json: Json, obj: ZipCodedStr, knownType: Class<*>?) {
json.writeValue(zipStrAndEnascii(obj.doc)) json.writeValue(zipStrAndEnascii(obj.doc))
} }
@@ -75,7 +74,7 @@ object Common {
} }
}) })
// BlockLayer // BlockLayer
jsoner.setSerializer(BlockLayerI16::class.java, object : Json.Serializer<BlockLayerI16> { it.setSerializer(BlockLayerI16::class.java, object : Json.Serializer<BlockLayerI16> {
override fun write(json: Json, obj: BlockLayerI16, knownType: Class<*>?) { override fun write(json: Json, obj: BlockLayerI16, knownType: Class<*>?) {
digester.reset() digester.reset()
obj.bytesIterator().forEachRemaining { digester.update(it) } obj.bytesIterator().forEachRemaining { digester.update(it) }
@@ -103,7 +102,7 @@ object Common {
} }
}) })
// WorldTime // WorldTime
jsoner.setSerializer(WorldTime::class.java, object : Json.Serializer<WorldTime> { it.setSerializer(WorldTime::class.java, object : Json.Serializer<WorldTime> {
override fun write(json: Json, obj: WorldTime, knownType: Class<*>?) { override fun write(json: Json, obj: WorldTime, knownType: Class<*>?) {
json.writeValue(obj.TIME_T) json.writeValue(obj.TIME_T)
} }
@@ -113,7 +112,7 @@ object Common {
} }
}) })
// HashArray // HashArray
jsoner.setSerializer(HashArray::class.java, object : Json.Serializer<HashArray<*>> { it.setSerializer(HashArray::class.java, object : Json.Serializer<HashArray<*>> {
override fun write(json: Json, obj: HashArray<*>, knownType: Class<*>?) { override fun write(json: Json, obj: HashArray<*>, knownType: Class<*>?) {
json.writeObjectStart() json.writeObjectStart()
obj.forEach { (k, v) -> obj.forEach { (k, v) ->
@@ -131,7 +130,7 @@ object Common {
} }
}) })
// HashedWirings // HashedWirings
jsoner.setSerializer(HashedWirings::class.java, object : Json.Serializer<HashedWirings> { it.setSerializer(HashedWirings::class.java, object : Json.Serializer<HashedWirings> {
override fun write(json: Json, obj: HashedWirings, knownType: Class<*>?) { override fun write(json: Json, obj: HashedWirings, knownType: Class<*>?) {
json.writeObjectStart() json.writeObjectStart()
obj.forEach { (k, v) -> obj.forEach { (k, v) ->
@@ -149,7 +148,7 @@ object Common {
} }
}) })
// HashedWiringGraph // HashedWiringGraph
jsoner.setSerializer(HashedWiringGraph::class.java, object : Json.Serializer<HashedWiringGraph> { it.setSerializer(HashedWiringGraph::class.java, object : Json.Serializer<HashedWiringGraph> {
override fun write(json: Json, obj: HashedWiringGraph, knownType: Class<*>?) { override fun write(json: Json, obj: HashedWiringGraph, knownType: Class<*>?) {
json.writeObjectStart() json.writeObjectStart()
obj.forEach { (k, v) -> obj.forEach { (k, v) ->
@@ -167,7 +166,7 @@ object Common {
} }
}) })
// WiringGraphMap; this serialiser is here just to reduce the JSON filesize // WiringGraphMap; this serialiser is here just to reduce the JSON filesize
jsoner.setSerializer(WiringGraphMap::class.java, object : Json.Serializer<WiringGraphMap> { it.setSerializer(WiringGraphMap::class.java, object : Json.Serializer<WiringGraphMap> {
override fun write(json: Json, obj: WiringGraphMap, knownType: Class<*>?) { override fun write(json: Json, obj: WiringGraphMap, knownType: Class<*>?) {
json.writeObjectStart() json.writeObjectStart()
obj.forEach { (k, v) -> obj.forEach { (k, v) ->
@@ -185,7 +184,7 @@ object Common {
} }
}) })
// UUID // UUID
jsoner.setSerializer(UUID::class.java, object : Json.Serializer<UUID> { it.setSerializer(UUID::class.java, object : Json.Serializer<UUID> {
override fun write(json: Json, obj: UUID, knownType: Class<*>?) { override fun write(json: Json, obj: UUID, knownType: Class<*>?) {
json.writeValue(obj.toString()) json.writeValue(obj.toString())
} }
@@ -195,7 +194,7 @@ object Common {
} }
}) })
// HQRNG // HQRNG
jsoner.setSerializer(HQRNG::class.java, object : Json.Serializer<HQRNG> { it.setSerializer(HQRNG::class.java, object : Json.Serializer<HQRNG> {
override fun write(json: Json, obj: HQRNG, knownType: Class<*>?) { override fun write(json: Json, obj: HQRNG, knownType: Class<*>?) {
json.writeValue("${obj.state0.toString()},${obj.state1.toString()}") json.writeValue("${obj.state0.toString()},${obj.state1.toString()}")
} }
@@ -208,7 +207,7 @@ object Common {
} }
}) })
// kotlin.ByteArray // kotlin.ByteArray
jsoner.setSerializer(ByteArray::class.java, object : Json.Serializer<ByteArray> { it.setSerializer(ByteArray::class.java, object : Json.Serializer<ByteArray> {
override fun write(json: Json, obj: ByteArray, knownType: Class<*>?) { override fun write(json: Json, obj: ByteArray, knownType: Class<*>?) {
json.writeValue(bytesToZipdStr(obj.iterator())) json.writeValue(bytesToZipdStr(obj.iterator()))
} }
@@ -218,7 +217,7 @@ object Common {
} }
}) })
// WeatherStateBox // WeatherStateBox
jsoner.setSerializer(WeatherStateBox::class.java, object : Json.Serializer<WeatherStateBox> { it.setSerializer(WeatherStateBox::class.java, object : Json.Serializer<WeatherStateBox> {
override fun write(json: Json, obj: WeatherStateBox, knownType: Class<*>?) { override fun write(json: Json, obj: WeatherStateBox, knownType: Class<*>?) {
json.writeValue("${obj.x};${obj.pM2};${obj.pM1};${obj.p0};${obj.p1};${obj.p2};${obj.p3}") json.writeValue("${obj.x};${obj.pM2};${obj.pM1};${obj.p0};${obj.p1};${obj.p2};${obj.p3}")
} }
@@ -230,7 +229,7 @@ object Common {
} }
}) })
// WeatherDirBox // WeatherDirBox
jsoner.setSerializer(WeatherDirBox::class.java, object : Json.Serializer<WeatherDirBox> { it.setSerializer(WeatherDirBox::class.java, object : Json.Serializer<WeatherDirBox> {
override fun write(json: Json, obj: WeatherDirBox, knownType: Class<*>?) { override fun write(json: Json, obj: WeatherDirBox, knownType: Class<*>?) {
json.writeValue("${obj.x};${obj.pM2};${obj.pM1};${obj.p0};${obj.p1};${obj.p2};${obj.p3}") json.writeValue("${obj.x};${obj.pM2};${obj.pM1};${obj.p0};${obj.p1};${obj.p2};${obj.p3}")
} }
@@ -256,7 +255,7 @@ object Common {
} }
}) })
// BaseModularWeather // BaseModularWeather
jsoner.setSerializer(BaseModularWeather::class.java, object : Json.Serializer<BaseModularWeather> { it.setSerializer(BaseModularWeather::class.java, object : Json.Serializer<BaseModularWeather> {
override fun write(json: Json, obj: BaseModularWeather, knownType: Class<*>?) { override fun write(json: Json, obj: BaseModularWeather, knownType: Class<*>?) {
json.writeValue(obj.identifier) json.writeValue(obj.identifier)
} }
@@ -266,7 +265,7 @@ object Common {
} }
}) })
// Fill // Fill
jsoner.setSerializer(Fill::class.java, object : Json.Serializer<Fill> { it.setSerializer(Fill::class.java, object : Json.Serializer<Fill> {
override fun write(json: Json, obj: Fill, knownType: Class<*>?) { override fun write(json: Json, obj: Fill, knownType: Class<*>?) {
json.writeValue("${obj.item};${obj.amount}") json.writeValue("${obj.item};${obj.amount}")
} }
@@ -277,7 +276,7 @@ object Common {
} }
}) })
// OrePlacement // OrePlacement
jsoner.setSerializer(OrePlacement::class.java, object : Json.Serializer<OrePlacement> { it.setSerializer(OrePlacement::class.java, object : Json.Serializer<OrePlacement> {
override fun write(json: Json, obj: OrePlacement, knownType: Class<*>?) { override fun write(json: Json, obj: OrePlacement, knownType: Class<*>?) {
json.writeValue("${obj.item};${obj.tilePlacement}") json.writeValue("${obj.item};${obj.tilePlacement}")
} }