From 4e48c076e83ac668b3fe70e5b37cdbe7383fc2a4 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Tue, 12 Apr 2022 15:18:15 +0200 Subject: [PATCH] Make RuntimeJsonAdapterFactory internal and cleanup --- .../parsing/RuntimeJsonAdapterFactory.kt | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/parsing/RuntimeJsonAdapterFactory.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/parsing/RuntimeJsonAdapterFactory.kt index e18d66e5ad..36fce2b094 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/parsing/RuntimeJsonAdapterFactory.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/parsing/RuntimeJsonAdapterFactory.kt @@ -16,19 +16,13 @@ package org.matrix.android.sdk.internal.network.parsing import com.squareup.moshi.JsonAdapter -import org.matrix.android.sdk.internal.network.parsing.RuntimeJsonAdapterFactory -import com.squareup.moshi.Moshi -import org.matrix.android.sdk.internal.network.parsing.RuntimeJsonAdapterFactory.RuntimeJsonAdapter -import kotlin.Throws import com.squareup.moshi.JsonDataException import com.squareup.moshi.JsonReader import com.squareup.moshi.JsonWriter +import com.squareup.moshi.Moshi import com.squareup.moshi.Types import java.io.IOException -import java.lang.IllegalArgumentException -import java.lang.NullPointerException import java.lang.reflect.Type -import java.util.LinkedHashMap import javax.annotation.CheckReturnValue /** @@ -36,8 +30,12 @@ import javax.annotation.CheckReturnValue * decoding the JSON. This factory's adapters expect JSON in the format of a JSON object with a * key whose value is a label that determines the type to which to map the JSON object. */ -class RuntimeJsonAdapterFactory internal constructor(val baseType: Class, val labelKey: String, val fallbackType: Class<*>?) : JsonAdapter.Factory { - val labelToType: MutableMap = LinkedHashMap() +internal class RuntimeJsonAdapterFactory( + private val baseType: Class, + private val labelKey: String, + private val fallbackType: Class<*> +) : JsonAdapter.Factory { + private val labelToType: MutableMap = LinkedHashMap() /** * Register the subtype that can be created based on the label. When an unknown type is found @@ -69,8 +67,11 @@ class RuntimeJsonAdapterFactory internal constructor(val baseType: Class, objectJsonAdapter, fallbackAdapter).nullSafe() } - internal class RuntimeJsonAdapter(val labelKey: String, val labelToAdapter: Map>, - val typeToLabel: Map, val objectJsonAdapter: JsonAdapter, + @Suppress("UNCHECKED_CAST") + internal class RuntimeJsonAdapter(val labelKey: String, + val labelToAdapter: Map>, + val typeToLabel: Map, + val objectJsonAdapter: JsonAdapter, val fallbackAdapter: JsonAdapter) : JsonAdapter() { @Throws(IOException::class) override fun fromJson(reader: JsonReader): Any? { @@ -117,11 +118,9 @@ class RuntimeJsonAdapterFactory internal constructor(val baseType: Class, * JSON object. */ @CheckReturnValue - fun of(baseType: Class?, labelKey: String?, fallbackType: Class?): RuntimeJsonAdapterFactory { - if (baseType == null) throw NullPointerException("baseType == null") - if (labelKey == null) throw NullPointerException("labelKey == null") + fun of(baseType: Class, labelKey: String, fallbackType: Class): RuntimeJsonAdapterFactory { require(baseType != Any::class.java) { "The base type must not be Object. Consider using a marker interface." } return RuntimeJsonAdapterFactory(baseType, labelKey, fallbackType) } } -} \ No newline at end of file +}