diff --git a/plugins/stats-collector/log-events/src/com/intellij/stats/completion/LogEventSerializer.kt b/plugins/stats-collector/log-events/src/com/intellij/stats/completion/LogEventSerializer.kt index bb01e321bbd9..0d0e95a842ee 100644 --- a/plugins/stats-collector/log-events/src/com/intellij/stats/completion/LogEventSerializer.kt +++ b/plugins/stats-collector/log-events/src/com/intellij/stats/completion/LogEventSerializer.kt @@ -19,6 +19,7 @@ import com.google.gson.GsonBuilder import com.google.gson.internal.LinkedTreeMap import com.intellij.stats.completion.events.* import java.lang.reflect.Field +import java.lang.reflect.Modifier object JsonSerializer { private val gson = GsonBuilder().serializeNulls().create() @@ -40,7 +41,9 @@ object JsonSerializer { } private fun allFields(clazz: Class): List { - val fields: List = clazz.declaredFields.toList() + val fields: List = clazz.declaredFields.asSequence() + .filter { !Modifier.isStatic(it.modifiers) } + .toList() if (clazz.superclass != null) { return fields + allFields(clazz.superclass) } diff --git a/plugins/stats-collector/log-events/test/com/intellij/stats/completion/EventSerializeDeserializeTest.kt b/plugins/stats-collector/log-events/test/com/intellij/stats/completion/EventSerializeDeserializeTest.kt index 72e31ac400ba..22b939ef88de 100644 --- a/plugins/stats-collector/log-events/test/com/intellij/stats/completion/EventSerializeDeserializeTest.kt +++ b/plugins/stats-collector/log-events/test/com/intellij/stats/completion/EventSerializeDeserializeTest.kt @@ -125,7 +125,13 @@ class EventSerializeDeserializeTest { assertThat(obj.unknownFields).hasSize(1) assertThat(obj.unknownFields).contains("unknown_field") } - + + @Test + fun `ignore static fields`() { + val obj = JsonSerializer.fromJson(JsonSerializer.toJson(WithStaticField()), WithStaticField::class.java) + assertThat(obj.absentFields).hasSize(0) + assertThat(obj.unknownFields).hasSize(0) + } } @@ -142,3 +148,11 @@ class Second { val absent_field1: Double = 1.0 } +@Suppress("unused") +class WithStaticField { + companion object { + @JvmStatic + val STATIC_FIELD = 10 + } +} +