From ce2fe64c37c66313273a6776d82d0fbc0f5fd391 Mon Sep 17 00:00:00 2001 From: rhunk <101876869+rhunk@users.noreply.github.com> Date: Mon, 4 Dec 2023 23:17:35 +0100 Subject: [PATCH] fix(common): config deserializer error handler --- .../rhunk/snapenhance/common/config/ConfigContainer.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/config/ConfigContainer.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/ConfigContainer.kt index 769649ae..eeef5759 100644 --- a/common/src/main/kotlin/me/rhunk/snapenhance/common/config/ConfigContainer.kt +++ b/common/src/main/kotlin/me/rhunk/snapenhance/common/config/ConfigContainer.kt @@ -2,6 +2,7 @@ package me.rhunk.snapenhance.common.config import android.content.Context import com.google.gson.JsonObject +import me.rhunk.snapenhance.common.logger.AbstractLogger import kotlin.reflect.KProperty typealias ConfigParamsBuilder = ConfigParams.() -> Unit @@ -78,9 +79,12 @@ open class ConfigContainer( fun fromJson(json: JsonObject) { properties.forEach { (key, _) -> - val jsonElement = json.get(key.name) ?: return@forEach - //TODO: check incoming values - properties[key]?.setAny(key.dataType.deserializeAny(jsonElement)) + runCatching { + val jsonElement = json.get(key.name) ?: return@forEach + properties[key]?.setAny(key.dataType.deserializeAny(jsonElement)) + }.onFailure { + AbstractLogger.directError("Failed to deserialize property ${key.name}", it) + } } }