From a2d52818495a1342669bd63a131d19da98c84340 Mon Sep 17 00:00:00 2001 From: RoccoDev Date: Wed, 14 Oct 2020 21:34:49 +0200 Subject: [PATCH] gson: downgrade to 2.2.4 for MC compatibility --- buildSrc/src/main/java/Config.kt | 2 +- gradle.properties | 2 +- .../UnknownPropertiesTypeAdapterFactory.java | 12 +++--------- .../adapters/ContextsDeserializerAdapter.java | 5 ++++- settings.gradle.kts | 19 +------------------ 5 files changed, 10 insertions(+), 30 deletions(-) diff --git a/buildSrc/src/main/java/Config.kt b/buildSrc/src/main/java/Config.kt index 32a3cffb826..1e65c45fb67 100644 --- a/buildSrc/src/main/java/Config.kt +++ b/buildSrc/src/main/java/Config.kt @@ -34,7 +34,7 @@ object Config { val appCompat = "androidx.appcompat:appcompat:1.2.0" val timber = "com.jakewharton.timber:timber:4.7.1" // only bump gson if https://github.com/google/gson/issues/1597 is fixed - val gson = "com.google.code.gson:gson:2.8.5" + val gson = "com.google.code.gson:gson:2.2.4" val leakCanary = "com.squareup.leakcanary:leakcanary-android:2.4" private val lifecycleVersion = "2.2.0" diff --git a/gradle.properties b/gradle.properties index 1dd9698c9b0..d890d49fa10 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ android.useAndroidX=true # Release information buildVersionCode=20045 -versionName=3.1.1-SNAPSHOT +versionName=3.1.1-MCFIX # disable renderscript, it's enabled by default android.defaults.buildfeatures.renderscript=false diff --git a/sentry/src/main/java/io/sentry/UnknownPropertiesTypeAdapterFactory.java b/sentry/src/main/java/io/sentry/UnknownPropertiesTypeAdapterFactory.java index e9c9c5b5d65..13ba8ab591b 100644 --- a/sentry/src/main/java/io/sentry/UnknownPropertiesTypeAdapterFactory.java +++ b/sentry/src/main/java/io/sentry/UnknownPropertiesTypeAdapterFactory.java @@ -1,12 +1,6 @@ package io.sentry; -import com.google.gson.FieldNamingStrategy; -import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.google.gson.TypeAdapter; -import com.google.gson.TypeAdapterFactory; +import com.google.gson.*; import com.google.gson.internal.Excluder; import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; @@ -43,9 +37,9 @@ public TypeAdapter create(final Gson gson, final TypeToken typeToken) (TypeAdapter) gson.getDelegateAdapter(this, typeToken); // Excluder is necessary to check if the field can be processed // Basically it's not required, but it makes the check more complete - final Excluder excluder = gson.excluder(); + final Excluder excluder = Excluder.DEFAULT; // This is crucial to map fields and JSON object properties since Gson supports name remapping - final FieldNamingStrategy fieldNamingStrategy = gson.fieldNamingStrategy(); + final FieldNamingStrategy fieldNamingStrategy = FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES; final TypeAdapter unknownPropertiesTypeAdapter = UnknownPropertiesTypeAdapter.create( rawType, delegateTypeAdapter, excluder, fieldNamingStrategy); diff --git a/sentry/src/main/java/io/sentry/adapters/ContextsDeserializerAdapter.java b/sentry/src/main/java/io/sentry/adapters/ContextsDeserializerAdapter.java index aaf90d90d67..b95cb3a54cc 100644 --- a/sentry/src/main/java/io/sentry/adapters/ContextsDeserializerAdapter.java +++ b/sentry/src/main/java/io/sentry/adapters/ContextsDeserializerAdapter.java @@ -15,6 +15,8 @@ import io.sentry.protocol.OperatingSystem; import io.sentry.protocol.SentryRuntime; import java.lang.reflect.Type; +import java.util.Map; +import java.util.stream.Collectors; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,7 +39,8 @@ public Contexts deserialize(JsonElement json, Type typeOfT, JsonDeserializationC final JsonObject jsonObject = json.getAsJsonObject(); if (jsonObject != null && !jsonObject.isJsonNull()) { - for (final String key : jsonObject.keySet()) { + for (final String key : + jsonObject.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList())) { switch (key) { case App.TYPE: App app = parseObject(context, jsonObject, key, App.class); diff --git a/settings.gradle.kts b/settings.gradle.kts index 41bec8e1dd4..085ebc5dcda 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,21 +1,4 @@ rootProject.name = "sentry-root" rootProject.buildFileName = "build.gradle.kts" -include("sentry-android", - "sentry-android-ndk", - "sentry-android-core", - "sentry", - "sentry-test-support", - "sentry-log4j2", - "sentry-logback", - "sentry-servlet", - "sentry-spring", - "sentry-spring-boot-starter", - "sentry-android-timber", - "sentry-samples:sentry-samples-android", - "sentry-samples:sentry-samples-console", - "sentry-samples:sentry-samples-log4j2", - "sentry-samples:sentry-samples-logback", - "sentry-samples:sentry-samples-servlet", - "sentry-samples:sentry-samples-spring", - "sentry-samples:sentry-samples-spring-boot") +include("sentry")