Skip to content

Commit 9736f76

Browse files
authored
Merge pull request #426 from Ecwid/ECWID_144513
ECWID-144513 startersite error Caused by IllegalStateException: Expected but was STRING at line column path at JsonReader.beginObject(JsonReader.java:) - removed unused imports
2 parents bae933c + 140adac commit 9736f76

4 files changed

Lines changed: 19 additions & 3 deletions

File tree

src/main/kotlin/com/ecwid/apiclient/v3/ApiClientHelper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ class ApiClientHelper private constructor(
196196
val responseBody = responseBytes.asString()
197197
logErrorResponseIfNeeded(requestId, requestTime, httpResponse.statusCode, responseBody)
198198
val ecwidError = if (responseBody.isNotBlank()) {
199-
jsonTransformer.deserialize(responseBody, EcwidApiError::class.java)
199+
jsonTransformer.deserializeOrNull(responseBody, EcwidApiError::class.java)
200200
} else {
201201
null
202202
}

src/main/kotlin/com/ecwid/apiclient/v3/jsontransformer/JsonTransformer.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ package com.ecwid.apiclient.v3.jsontransformer
22

33
interface JsonTransformer {
44
fun serialize(src: Any?, srcExt: Any? = null): String
5-
fun <V> deserialize(json: String, clazz: Class<V>): V?
5+
fun <V> deserialize(json: String, clazz: Class<V>): V
6+
fun <V> deserializeOrNull(json: String, clazz: Class<V>): V?
67
}

src/main/kotlin/com/ecwid/apiclient/v3/jsontransformer/gson/GsonTransformer.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,21 @@ class GsonTransformer(polymorphicTypes: List<PolymorphicType<*>>) : JsonTransfor
3636
}
3737
}
3838

39-
override fun <V> deserialize(json: String, clazz: Class<V>): V? {
39+
override fun <V> deserialize(json: String, clazz: Class<V>): V {
4040
try {
4141
return gson.fromJson(json, clazz)
4242
} catch (e: JsonParseException) {
4343
throw JsonDeserializationException(e.message, e)
4444
}
4545
}
46+
47+
override fun <V> deserializeOrNull(json: String, clazz: Class<V>): V? {
48+
return try {
49+
return gson.fromJson(json, clazz)
50+
} catch (e: JsonParseException) {
51+
null
52+
}
53+
}
4654
}
4755

4856
private fun JsonObject.mergeJsonObject(from: JsonObject) {

src/test/kotlin/com/ecwid/apiclient/v3/jsontransformer/gson/GsonTransformerTest.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,13 @@ internal class GsonTransformerTest {
230230
)
231231
}
232232

233+
@Test
234+
fun `deserializeOrNull of broken ParsedResponseWithExt`() {
235+
val json = "'testField': {'baseField': 'base', 'extField': 'ext'}}"
236+
val deserializedValue = transformer.deserializeOrNull(json, TestParsedResponseWithExt::class.java)
237+
assertEquals(null, deserializedValue)
238+
}
239+
233240
}
234241

235242
private fun assertJsonEquals(expected: String, actual: String) {

0 commit comments

Comments
 (0)