From e154cec78044ca5eff762887efa64cdb9cc6ed79 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Mon, 6 Feb 2023 14:30:21 +0700 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=D1=81=D1=8F=20=D0=BE=D1=82=20=D1=83=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=80=D0=B5=D0=B2=D1=88=D0=B8=D1=85=20=D1=82=D0=B8=D0=BF?= =?UTF-8?q?=20=D0=B0=D0=B4=D0=B0=D0=BF=D1=82=D0=B5=D1=80=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../defs/item/ArmorItemPrototype.kt | 5 -- .../io/json/util/LazyTypeProvider.kt | 18 ------- .../kstarbound/io/json/util/ListAdapter.kt | 51 ------------------- .../kstarbound/io/json/util/MapAdapter.kt | 40 --------------- .../io/json/util/String2ObjectAdapter.kt | 41 --------------- 5 files changed, 155 deletions(-) delete mode 100644 src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/LazyTypeProvider.kt delete mode 100644 src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/ListAdapter.kt delete mode 100644 src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/MapAdapter.kt delete mode 100644 src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/String2ObjectAdapter.kt diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ArmorItemPrototype.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ArmorItemPrototype.kt index f8545a45..cbc5a7df 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ArmorItemPrototype.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/item/ArmorItemPrototype.kt @@ -1,15 +1,10 @@ package ru.dbotthepony.kstarbound.defs.item import com.google.common.collect.ImmutableList -import ru.dbotthepony.kstarbound.Starbound import ru.dbotthepony.kstarbound.defs.DirectAssetReference import ru.dbotthepony.kstarbound.defs.util.enrollMap -import ru.dbotthepony.kstarbound.io.json.builder.BuilderAdapter import ru.dbotthepony.kstarbound.io.json.builder.JsonBuilder import ru.dbotthepony.kstarbound.io.json.builder.JsonIgnoreProperty -import ru.dbotthepony.kstarbound.io.json.util.asJsonObject -import ru.dbotthepony.kstarbound.io.json.util.asList -import ru.dbotthepony.kstarbound.io.json.neverNull import ru.dbotthepony.kstarbound.util.NotNullVar @JsonBuilder diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/LazyTypeProvider.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/LazyTypeProvider.kt deleted file mode 100644 index 1b79210c..00000000 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/LazyTypeProvider.kt +++ /dev/null @@ -1,18 +0,0 @@ -package ru.dbotthepony.kstarbound.io.json.util - -import com.google.gson.TypeAdapter -import com.google.gson.stream.JsonReader -import com.google.gson.stream.JsonWriter -import ru.dbotthepony.kstarbound.Starbound - -class LazyTypeProvider(private val bound: Class, private val resolver: (Class) -> TypeAdapter = Starbound::getTypeAdapter) : TypeAdapter() { - private val resolved by lazy { resolver(bound) } - - override fun write(out: JsonWriter, value: T) { - resolved.write(out, value) - } - - override fun read(`in`: JsonReader): T { - return resolved.read(`in`) - } -} diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/ListAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/ListAdapter.kt deleted file mode 100644 index 248aa581..00000000 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/ListAdapter.kt +++ /dev/null @@ -1,51 +0,0 @@ -package ru.dbotthepony.kstarbound.io.json.util - -import com.google.common.collect.ImmutableList -import com.google.gson.JsonSyntaxException -import com.google.gson.TypeAdapter -import com.google.gson.stream.JsonReader -import com.google.gson.stream.JsonToken -import com.google.gson.stream.JsonWriter - -fun TypeAdapter.asList(valueTransformer: (T) -> T = { it }): TypeAdapter> { - return ListAdapter(this, valueTransformer = valueTransformer) -} - -class ListAdapter(val elementAdapter: TypeAdapter, val valueTransformer: (T) -> T = { it }) : TypeAdapter>() { - constructor(type: Class, valueTransformer: (T) -> T = { it }) : this(LazyTypeProvider(type), valueTransformer = valueTransformer) - - override fun write(out: JsonWriter, value: List) { - if (value.size == 1) { - elementAdapter.write(out, value[0]) - return - } - - out.beginArray() - - for (v in value) { - elementAdapter.write(out, v) - } - - out.endArray() - } - - override fun read(reader: JsonReader): List { - if (reader.peek() != JsonToken.BEGIN_ARRAY) { - // не массив, возможно упрощение структуры "a": [value] -> "a": value - return ImmutableList.of(elementAdapter.read(reader) ?: throw JsonSyntaxException("List does not accept nulls")) - } - - reader.beginArray() - - val builder = ImmutableList.builder() - - while (reader.peek() != JsonToken.END_ARRAY) { - val readObject = elementAdapter.read(reader) ?: throw JsonSyntaxException("List does not accept nulls") - builder.add(valueTransformer(readObject)) - } - - reader.endArray() - - return builder.build() - } -} diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/MapAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/MapAdapter.kt deleted file mode 100644 index c6871fd8..00000000 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/MapAdapter.kt +++ /dev/null @@ -1,40 +0,0 @@ -package ru.dbotthepony.kstarbound.io.json.util - -import com.google.common.collect.ImmutableMap -import com.google.gson.TypeAdapter -import com.google.gson.stream.JsonReader -import com.google.gson.stream.JsonToken -import com.google.gson.stream.JsonWriter - -class MapAdapter(val keyAdapter: TypeAdapter, val valueAdapter: TypeAdapter) : TypeAdapter>() { - constructor(keyType: Class, valueType: Class) : this(LazyTypeProvider(keyType), LazyTypeProvider(valueType)) - - override fun write(out: JsonWriter, value: Map) { - out.beginArray() - - for ((k, v) in value) { - out.beginArray() - keyAdapter.write(out, k) - valueAdapter.write(out, v) - out.endArray() - } - - out.endArray() - } - - override fun read(reader: JsonReader): Map { - reader.beginArray() - - val builder = ImmutableMap.builder() - - while (reader.peek() != JsonToken.END_ARRAY) { - reader.beginArray() - builder.put(keyAdapter.read(reader), valueAdapter.read(reader)) - reader.endArray() - } - - reader.endArray() - - return builder.build() - } -} diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/String2ObjectAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/String2ObjectAdapter.kt deleted file mode 100644 index 54914adc..00000000 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/json/util/String2ObjectAdapter.kt +++ /dev/null @@ -1,41 +0,0 @@ -package ru.dbotthepony.kstarbound.io.json.util - -import com.google.common.collect.ImmutableMap -import com.google.gson.TypeAdapter -import com.google.gson.stream.JsonReader -import com.google.gson.stream.JsonToken -import com.google.gson.stream.JsonWriter -import ru.dbotthepony.kstarbound.Starbound - -fun TypeAdapter.asJsonObject(valueTransformer: (T) -> T = { it }): TypeAdapter> { - return String2ObjectAdapter(this, valueTransformer = valueTransformer) -} - -class String2ObjectAdapter(val adapter: TypeAdapter, val valueTransformer: (T) -> T = { it }) : TypeAdapter>() { - constructor(type: Class, valueTransformer: (T) -> T = { it }) : this(LazyTypeProvider(type), valueTransformer = valueTransformer) - - override fun write(out: JsonWriter, value: Map) { - out.beginObject() - - for ((k, v) in value) { - out.name(k) - adapter.write(out, v) - } - - out.endObject() - } - - override fun read(reader: JsonReader): Map { - val builder = ImmutableMap.builder() - - reader.beginObject() - - while (reader.peek() != JsonToken.END_OBJECT) { - builder.put(Starbound.STRING_INTERNER.intern(reader.nextName()), valueTransformer(adapter.read(reader))) - } - - reader.endObject() - - return builder.build() - } -}