From b0913d15229a85d32b1387c24b867f8935c2f674 Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 26 Apr 2024 15:01:11 +0700 Subject: [PATCH] Remove unused json stuff --- .../defs/projectile/ProjectileDefinition.kt | 8 --- .../kstarbound/defs/util/ImmutableEnroller.kt | 39 ------------ .../kstarbound/defs/util/JsonFlattener.kt | 62 ------------------- .../kstarbound/defs/util/MutableFlattener.kt | 34 ---------- .../kstarbound/json/builder/BuilderAdapter.kt | 9 +-- .../kstarbound/json/builder/FactoryAdapter.kt | 19 +++--- .../kstarbound/json/builder/IJsonHolder.kt | 15 ----- .../json/builder/INativeJsonHolder.kt | 15 ----- 8 files changed, 8 insertions(+), 193 deletions(-) delete mode 100644 src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/ProjectileDefinition.kt delete mode 100644 src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/ImmutableEnroller.kt delete mode 100644 src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/JsonFlattener.kt delete mode 100644 src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/MutableFlattener.kt delete mode 100644 src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/IJsonHolder.kt delete mode 100644 src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/INativeJsonHolder.kt diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/ProjectileDefinition.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/ProjectileDefinition.kt deleted file mode 100644 index 530896a8..00000000 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/projectile/ProjectileDefinition.kt +++ /dev/null @@ -1,8 +0,0 @@ -package ru.dbotthepony.kstarbound.defs.projectile - -import ru.dbotthepony.kstarbound.json.builder.JsonFactory - -@JsonFactory -data class ProjectileDefinition( - val projectileName: String -) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/ImmutableEnroller.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/ImmutableEnroller.kt deleted file mode 100644 index 6d417784..00000000 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/ImmutableEnroller.kt +++ /dev/null @@ -1,39 +0,0 @@ -package ru.dbotthepony.kstarbound.defs.util - -import com.github.benmanes.caffeine.cache.Interner -import com.google.common.collect.ImmutableList -import com.google.common.collect.ImmutableMap - -/** - * Возвращает глубокую, неизменяемую копию [input] примитивов/List'ов/Map'ов - */ -fun enrollList(input: List, interner: Interner = Interner { it }): ImmutableList { - val builder = ImmutableList.builder() - - for (v in input) { - when (v) { - is Map<*, *> -> builder.add(enrollMap(v as Map, interner)) - is List<*> -> builder.add(enrollList(v as List, interner)) - else -> builder.add((v as? String)?.let(interner::intern) ?: v) - } - } - - return builder.build() -} - -/** - * Возвращает глубокую, неизменяемую копию [input] примитивов/List'ов/Map'ов - */ -fun enrollMap(input: Map, interner: Interner = Interner { it }): ImmutableMap { - val builder = ImmutableMap.builder() - - for ((k, v) in input) { - when (v) { - is Map<*, *> -> builder.put(interner.intern(k), enrollMap(v as Map, interner)) - is List<*> -> builder.put(interner.intern(k), enrollList(v as List, interner)) - else -> builder.put(interner.intern(k), (v as? String)?.let(interner::intern) ?: v) - } - } - - return builder.build() -} diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/JsonFlattener.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/JsonFlattener.kt deleted file mode 100644 index 8f0cef26..00000000 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/JsonFlattener.kt +++ /dev/null @@ -1,62 +0,0 @@ -package ru.dbotthepony.kstarbound.defs.util - -import com.github.benmanes.caffeine.cache.Interner -import com.google.gson.JsonArray -import com.google.gson.JsonElement -import com.google.gson.JsonNull -import com.google.gson.JsonObject -import com.google.gson.JsonPrimitive -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap - -private fun flattenJsonPrimitive(input: JsonPrimitive, interner: Interner = Interner { it }): Any { - if (input.isNumber) { - return input.asNumber - } else if (input.isString) { - return interner.intern(input.asString) - } else { - return input.asBoolean - } -} - -private fun flattenJsonArray(input: JsonArray, interner: Interner = Interner { it }): ArrayList { - val flattened = ArrayList(input.size()) - - for (v in input) { - when (v) { - is JsonObject -> flattened.add(flattenJsonObject(v, interner)) - is JsonArray -> flattened.add(flattenJsonArray(v, interner)) - is JsonPrimitive -> flattened.add(flattenJsonPrimitive(v, interner)) - // is JsonNull -> baked.add(null) - } - } - - return flattened -} - -private fun flattenJsonObject(input: JsonObject, interner: Interner = Interner { it }): MutableMap { - val flattened = HashMap() - - for ((k, v) in input.entrySet()) { - when (v) { - is JsonObject -> flattened[k] = flattenJsonObject(v, interner) - is JsonArray -> flattened[k] = flattenJsonArray(v, interner) - is JsonPrimitive -> flattened[k] = flattenJsonPrimitive(v, interner) - } - } - - return flattened -} - -fun flattenJsonElement(input: JsonElement, interner: Interner = Interner { it }): Any? { - return when (input) { - is JsonObject -> flattenJsonObject(input, interner) - is JsonArray -> flattenJsonArray(input, interner) - is JsonPrimitive -> flattenJsonPrimitive(input, interner) - is JsonNull -> null - else -> throw IllegalArgumentException("Unknown argument $input") - } -} - -fun flattenJsonElement(input: JsonObject, interner: Interner = Interner { it }) = flattenJsonObject(input, interner) -fun flattenJsonElement(input: JsonArray, interner: Interner = Interner { it }) = flattenJsonArray(input, interner) -fun flattenJsonElement(input: JsonPrimitive, interner: Interner = Interner { it }) = flattenJsonPrimitive(input, interner) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/MutableFlattener.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/MutableFlattener.kt deleted file mode 100644 index e59e51cb..00000000 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/defs/util/MutableFlattener.kt +++ /dev/null @@ -1,34 +0,0 @@ -package ru.dbotthepony.kstarbound.defs.util - -import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap - -/** - * Возвращает глубокую изменяемую копию [input] примитивов/List'ов/Map'ов - */ -fun flattenList(input: List): ArrayList { - val list = ArrayList(input.size) - - for (v in input) { - when (v) { - is Map<*, *> -> list.add(flattenMap(v as Map)) - is List<*> -> list.add(flattenList(v as List)) - else -> list.add(v) - } - } - - return list -} - -fun flattenMap(input: Map): Object2ObjectArrayMap { - val map = Object2ObjectArrayMap() - - for ((k, v) in input) { - when (v) { - is Map<*, *> -> map[k] = flattenMap(v as Map) - is List<*> -> map[k] = flattenList(v as List) - else -> map[k] = v - } - } - - return map -} diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/BuilderAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/BuilderAdapter.kt index 1c1bfbca..af8cdc79 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/BuilderAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/BuilderAdapter.kt @@ -17,7 +17,6 @@ import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap import org.apache.logging.log4j.LogManager -import ru.dbotthepony.kstarbound.defs.util.flattenJsonElement import kotlin.properties.Delegates import kotlin.reflect.KClass import kotlin.reflect.KMutableProperty1 @@ -60,15 +59,9 @@ class BuilderAdapter private constructor( val instance = factory.invoke() var json: JsonObject by Delegates.notNull() - if (instance is IJsonHolder || flatProperties.isNotEmpty()) { + if (flatProperties.isNotEmpty()) { json = TypeAdapters.JSON_ELEMENT.read(reader) as JsonObject reader = JsonTreeReader(json) - - if (instance is INativeJsonHolder) { - instance.acceptJson(flattenJsonElement(json, stringInterner::intern)) - } else if (instance is IJsonHolder) { - instance.acceptJson(json) - } } // загружаем указатели на стек diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/FactoryAdapter.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/FactoryAdapter.kt index 7c2399c3..c77ff02a 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/FactoryAdapter.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/FactoryAdapter.kt @@ -1,10 +1,8 @@ package ru.dbotthepony.kstarbound.json.builder -import com.google.common.collect.ImmutableList -import com.google.common.collect.ImmutableMap import com.github.benmanes.caffeine.cache.Interner +import com.google.common.collect.ImmutableList import com.google.gson.Gson -import com.google.gson.JsonArray import com.google.gson.JsonElement import com.google.gson.JsonNull import com.google.gson.JsonObject @@ -18,26 +16,23 @@ import com.google.gson.stream.JsonReader import com.google.gson.stream.JsonToken import com.google.gson.stream.JsonWriter import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap import it.unimi.dsi.fastutil.ints.IntArrayList import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap import it.unimi.dsi.fastutil.objects.ObjectArraySet import org.apache.logging.log4j.LogManager -import ru.dbotthepony.kommons.util.Either -import ru.dbotthepony.kstarbound.Starbound -import ru.dbotthepony.kstarbound.defs.util.enrollList -import ru.dbotthepony.kstarbound.defs.util.enrollMap -import ru.dbotthepony.kstarbound.defs.util.flattenJsonElement import ru.dbotthepony.kommons.gson.consumeNull import ru.dbotthepony.kommons.gson.value +import ru.dbotthepony.kommons.util.Either +import ru.dbotthepony.kstarbound.Starbound import java.lang.reflect.Constructor -import java.util.Collections +import java.util.* import java.util.function.Function import kotlin.jvm.internal.DefaultConstructorMarker import kotlin.properties.Delegates -import kotlin.reflect.* +import kotlin.reflect.KClass +import kotlin.reflect.KFunction +import kotlin.reflect.KProperty1 import kotlin.reflect.full.declaredMembers -import kotlin.reflect.full.isSubclassOf import kotlin.reflect.full.isSupertypeOf import kotlin.reflect.full.primaryConstructor diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/IJsonHolder.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/IJsonHolder.kt deleted file mode 100644 index 834fb1ee..00000000 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/IJsonHolder.kt +++ /dev/null @@ -1,15 +0,0 @@ -package ru.dbotthepony.kstarbound.json.builder - -import com.google.gson.JsonObject - -/** - * Данный интерфейс имеет один единственный метод: [acceptJson] - * - * Используется в связке с [BuilderAdapter] для классов, которым необходимо хранить оригинальную JSON структуру - */ -interface IJsonHolder { - /** - * Выставляет [JsonObject], который является источником данных для данной структуры - */ - fun acceptJson(json: JsonObject) -} \ No newline at end of file diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/INativeJsonHolder.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/INativeJsonHolder.kt deleted file mode 100644 index 66b6523b..00000000 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/json/builder/INativeJsonHolder.kt +++ /dev/null @@ -1,15 +0,0 @@ -package ru.dbotthepony.kstarbound.json.builder - -import com.google.gson.JsonObject -import ru.dbotthepony.kstarbound.defs.util.flattenJsonElement - -/** - * Для классов, которые хотят принимать Java'вские [Map] напрямую, как оригинальную JSON структуру - */ -interface INativeJsonHolder : IJsonHolder { - override fun acceptJson(json: JsonObject) { - acceptJson(flattenJsonElement(json)) - } - - fun acceptJson(json: MutableMap) -} \ No newline at end of file