From 43a025f62a4f58eb755026e916bbb62fa6172fff Mon Sep 17 00:00:00 2001 From: "Vitaliy.Bibaev" Date: Thu, 21 Mar 2019 19:35:30 +0300 Subject: [PATCH] [stats-collector] EA-138414 - ISE: JsonReader.beginObject Just ignore a case when json could not be parsed --- .../stats/experiment/WebServiceStatusProvider.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/stats-collector/src/com/intellij/stats/experiment/WebServiceStatusProvider.kt b/plugins/stats-collector/src/com/intellij/stats/experiment/WebServiceStatusProvider.kt index 83279004a1a8..875cba4182d3 100644 --- a/plugins/stats-collector/src/com/intellij/stats/experiment/WebServiceStatusProvider.kt +++ b/plugins/stats-collector/src/com/intellij/stats/experiment/WebServiceStatusProvider.kt @@ -6,6 +6,7 @@ import com.google.gson.Gson import com.google.gson.JsonSyntaxException import com.google.gson.internal.LinkedTreeMap import com.intellij.ide.util.PropertiesComponent +import com.intellij.openapi.diagnostic.logger import com.intellij.stats.network.assertNotEDT import com.intellij.stats.network.service.RequestService import java.util.concurrent.TimeUnit @@ -17,6 +18,7 @@ class WebServiceStatusProvider(private val requestSender: RequestService) : WebS const val STATUS_URL: String = "https://www.jetbrains.com/config/features-service-status.json" private val GSON = Gson() + private val LOG = logger() private const val SALT = "completion.stats.experiment.salt" private const val EXPERIMENT_VERSION_KEY = "completion.stats.experiment.version" @@ -51,7 +53,7 @@ class WebServiceStatusProvider(private val requestSender: RequestService) : WebS assertNotEDT() val response = requestSender.get(STATUS_URL) if (response != null && response.isOK()) { - val map = parseServerResponse(response.text) + val map = parseServerResponse(response.text) ?: return val salt = map["salt"]?.toString() val experimentVersion = map["experimentVersion"]?.toString() @@ -76,12 +78,13 @@ class WebServiceStatusProvider(private val requestSender: RequestService) : WebS } } - private fun parseServerResponse(responseText: String): LinkedTreeMap<*, *> { + private fun parseServerResponse(responseText: String): LinkedTreeMap<*, *>? { try { return GSON.fromJson(responseText, LinkedTreeMap::class.java) } catch (e: JsonSyntaxException) { - throw JsonSyntaxException("Expected valid JSON object, but received: $responseText", e) + LOG.warn("Could not parse server response") + return null } }