mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[stats-collector] Ignore static fields in serialized objects
This commit is contained in:
+4
-1
@@ -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 <T> allFields(clazz: Class<T>): List<Field> {
|
||||
val fields: List<Field> = clazz.declaredFields.toList()
|
||||
val fields: List<Field> = clazz.declaredFields.asSequence()
|
||||
.filter { !Modifier.isStatic(it.modifiers) }
|
||||
.toList()
|
||||
if (clazz.superclass != null) {
|
||||
return fields + allFields(clazz.superclass)
|
||||
}
|
||||
|
||||
+15
-1
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user