From 9de5ddb915e7d6ba749dff2973dfdf9d4ff95510 Mon Sep 17 00:00:00 2001 From: tore-statsig <74584483+tore-statsig@users.noreply.github.com> Date: Tue, 3 Jan 2023 10:39:55 -0800 Subject: [PATCH 1/2] Send back json string of config specs from rulesUpdatedCallback --- src/main/kotlin/com/statsig/sdk/StatsigServer.kt | 6 +++++- src/test/java/com/statsig/sdk/StatsigE2ETest.kt | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/statsig/sdk/StatsigServer.kt b/src/main/kotlin/com/statsig/sdk/StatsigServer.kt index fc5c347..5d0cbfd 100644 --- a/src/main/kotlin/com/statsig/sdk/StatsigServer.kt +++ b/src/main/kotlin/com/statsig/sdk/StatsigServer.kt @@ -1,6 +1,8 @@ package com.statsig.sdk import com.google.gson.Gson +import com.google.gson.GsonBuilder +import com.google.gson.ToNumberPolicy import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineStart @@ -171,6 +173,8 @@ private class StatsigServerImpl(serverSecret: String, private val options: Stats } } + private val gson = GsonBuilder().setObjectToNumberStrategy(ToNumberPolicy.LONG_OR_DOUBLE).create() + override val errorBoundary = ErrorBoundary(serverSecret, options) private val coroutineExceptionHandler = CoroutineExceptionHandler { _, ex -> @@ -204,7 +208,7 @@ private class StatsigServerImpl(serverSecret: String, private val options: Stats return } try { - val configString = configSpecs.toString() + val configString = gson.toJson(configSpecs) options.rulesUpdatedCallback?.accept(configString) } catch (e: Exception) {} } diff --git a/src/test/java/com/statsig/sdk/StatsigE2ETest.kt b/src/test/java/com/statsig/sdk/StatsigE2ETest.kt index b3142f7..523ab70 100644 --- a/src/test/java/com/statsig/sdk/StatsigE2ETest.kt +++ b/src/test/java/com/statsig/sdk/StatsigE2ETest.kt @@ -376,6 +376,8 @@ class StatsigE2ETest { bootstrapValues = downloadConfigSpecsResponse, rulesUpdatedCallback = { bootstrap_callback_count++ + val specs = gson.fromJson(it, APIDownloadedConfigs::class.java) + assert(gson.toJson(specs) == gson.toJson(gson.fromJson(downloadConfigSpecsResponse, APIDownloadedConfigs::class.java))) } ).apply { api = server.url("/v1").toString() @@ -385,7 +387,11 @@ class StatsigE2ETest { } else { options = StatsigOptions( bootstrapValues = downloadConfigSpecsResponse, - rulesUpdatedCallback = { bootstrap_callback_count++ } + rulesUpdatedCallback = { + bootstrap_callback_count++ + val specs = gson.fromJson(it, APIDownloadedConfigs::class.java) + assert(gson.toJson(specs) == gson.toJson(gson.fromJson(downloadConfigSpecsResponse, APIDownloadedConfigs::class.java))) + } ).apply { api = server.url("/v1").toString() } From f2baf17cbf2f9cf01075bee9644106772bafe29e Mon Sep 17 00:00:00 2001 From: tore-statsig <74584483+tore-statsig@users.noreply.github.com> Date: Tue, 3 Jan 2023 11:44:11 -0800 Subject: [PATCH 2/2] v1.2.1 --- gradle.properties | 2 +- src/main/kotlin/com/statsig/sdk/StatsigMetadata.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8660701..9c68583 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ RELEASE_SIGNING_ENABLED=true GROUP=com.statsig.serversdk POM_ARTIFACT_ID=serversdk -VERSION_NAME=1.2.0 +VERSION_NAME=1.2.1 POM_NAME=Statsig Server SDK POM_DESCRIPTION=A feature gating and a/b testing library for statsig diff --git a/src/main/kotlin/com/statsig/sdk/StatsigMetadata.kt b/src/main/kotlin/com/statsig/sdk/StatsigMetadata.kt index f7ac997..e05ef54 100644 --- a/src/main/kotlin/com/statsig/sdk/StatsigMetadata.kt +++ b/src/main/kotlin/com/statsig/sdk/StatsigMetadata.kt @@ -2,7 +2,7 @@ package com.statsig.sdk import java.util.Properties -private const val VERSION = "1.2.0" +private const val VERSION = "1.2.1" internal class StatsigMetadata { companion object {