From a627d49b98e9e8a6984964fe194007a5db8fd279 Mon Sep 17 00:00:00 2001 From: Gaston Thea Date: Tue, 28 Jan 2025 13:44:56 -0300 Subject: [PATCH 1/2] Update config & method parser in Android implementation --- splitio_android/android/build.gradle | 2 +- .../splitio/SplitClientConfigHelper.java | 20 +++++++++++++++++++ .../split/splitio/SplitMethodParserImpl.java | 1 + .../splitio/SplitClientConfigHelperTest.java | 16 +++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/splitio_android/android/build.gradle b/splitio_android/android/build.gradle index f943883..e808137 100644 --- a/splitio_android/android/build.gradle +++ b/splitio_android/android/build.gradle @@ -36,7 +36,7 @@ android { } dependencies { - implementation 'io.split.client:android-client:5.0.0' + implementation 'io.split.client:android-client:5.1.0-rc1' testImplementation 'junit:junit:4.13.2' testImplementation 'org.mockito:mockito-core:3.12.4' diff --git a/splitio_android/android/src/main/java/io/split/splitio/SplitClientConfigHelper.java b/splitio_android/android/src/main/java/io/split/splitio/SplitClientConfigHelper.java index ce83e03..2df8e0d 100644 --- a/splitio_android/android/src/main/java/io/split/splitio/SplitClientConfigHelper.java +++ b/splitio_android/android/src/main/java/io/split/splitio/SplitClientConfigHelper.java @@ -10,6 +10,7 @@ import java.util.Set; import java.util.concurrent.TimeUnit; +import io.split.android.client.RolloutCacheConfiguration; import io.split.android.client.ServiceEndpoints; import io.split.android.client.SplitClientConfig; import io.split.android.client.SplitFilter; @@ -51,6 +52,9 @@ class SplitClientConfigHelper { private static final String READY_TIMEOUT = "readyTimeout"; private static final String CERTIFICATE_PINNING_CONFIGURATION = "certificatePinningConfiguration"; private static final String CERTIFICATE_PINNING_CONFIGURATION_PINS = "pins"; + private static final String ROLLOUT_CACHE_CONFIGURATION = "rolloutCacheConfiguration"; + private static final String ROLLOUT_CACHE_CONFIGURATION_EXPIRATION = "expirationDays"; + private static final String ROLLOUT_CACHE_CONFIGURATION_CLEAR_ON_INIT = "clearOnInit"; /** * Creates a {@link SplitClientConfig} object from a map. @@ -242,6 +246,22 @@ static SplitClientConfig fromMap(@NonNull Map configurationMap, } } + Map rolloutCacheConfiguration = getObjectMap(configurationMap, ROLLOUT_CACHE_CONFIGURATION); + if (rolloutCacheConfiguration != null) { + Integer expirationDays = getInteger(rolloutCacheConfiguration, ROLLOUT_CACHE_CONFIGURATION_EXPIRATION); + Boolean clearOnInit = getBoolean(rolloutCacheConfiguration, ROLLOUT_CACHE_CONFIGURATION_CLEAR_ON_INIT); + if (expirationDays != null || clearOnInit != null) { + RolloutCacheConfiguration.Builder cacheConfigBuilder = RolloutCacheConfiguration.builder(); + if (expirationDays != null) { + cacheConfigBuilder.expirationDays(expirationDays); + } + if (clearOnInit != null) { + cacheConfigBuilder.clearOnInit(clearOnInit); + } + builder.rolloutCacheConfiguration(cacheConfigBuilder.build()); + } + } + return builder.serviceEndpoints(serviceEndpointsBuilder.build()).build(); } diff --git a/splitio_android/android/src/main/java/io/split/splitio/SplitMethodParserImpl.java b/splitio_android/android/src/main/java/io/split/splitio/SplitMethodParserImpl.java index 812143c..7631b13 100644 --- a/splitio_android/android/src/main/java/io/split/splitio/SplitMethodParserImpl.java +++ b/splitio_android/android/src/main/java/io/split/splitio/SplitMethodParserImpl.java @@ -474,6 +474,7 @@ private static Map getSplitViewAsMap(@Nullable SplitView splitVi splitViewMap.put("configs", splitView.configs); splitViewMap.put("defaultTreatment", splitView.defaultTreatment); splitViewMap.put("sets", splitView.sets); + splitViewMap.put("impressionsDisabled", splitView.impressionsDisabled); return splitViewMap; } diff --git a/splitio_android/android/src/test/java/io/split/splitio/SplitClientConfigHelperTest.java b/splitio_android/android/src/test/java/io/split/splitio/SplitClientConfigHelperTest.java index 18691f0..23a5215 100644 --- a/splitio_android/android/src/test/java/io/split/splitio/SplitClientConfigHelperTest.java +++ b/splitio_android/android/src/test/java/io/split/splitio/SplitClientConfigHelperTest.java @@ -219,4 +219,20 @@ public void certificatePinningConfigurationValuesAreMappedCorrectly() { Set host2Pins = actualConfig.getPins().get("host2"); assertEquals("sha256", host2Pins.iterator().next().getAlgorithm()); } + + @Test + public void rolloutCacheConfigurationValuesAreMappedCorrectly() { + Map configValues = new HashMap<>(); + Map rolloutCacheConfigValues = new HashMap<>(); + + rolloutCacheConfigValues.put("expirationDays", 5); + rolloutCacheConfigValues.put("clearOnInit", true); + configValues.put("rolloutCacheConfiguration", rolloutCacheConfigValues); + + SplitClientConfig splitClientConfig = SplitClientConfigHelper + .fromMap(configValues, mock(ImpressionListener.class)); + + assertEquals(5, splitClientConfig.rolloutCacheConfiguration().getExpirationDays()); + assertTrue(splitClientConfig.rolloutCacheConfiguration().isClearOnInit()); + } } From f7a7260039bc03cdb16fb7c2add0d098daffe50f Mon Sep 17 00:00:00 2001 From: Gaston Thea Date: Tue, 28 Jan 2025 13:50:06 -0300 Subject: [PATCH 2/2] Temporal relative dependency --- splitio/example/pubspec.lock | 7 +++---- splitio/pubspec.yaml | 4 +++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/splitio/example/pubspec.lock b/splitio/example/pubspec.lock index 8da00b5..00b0f01 100644 --- a/splitio/example/pubspec.lock +++ b/splitio/example/pubspec.lock @@ -170,10 +170,9 @@ packages: splitio_android: dependency: transitive description: - name: splitio_android - sha256: "44b0e1dddd374fc73fc1b5ef89598b96ea405d533a8211c06a45665f5d6187b5" - url: "https://pub.dev" - source: hosted + path: "../../splitio_android" + relative: true + source: path version: "0.2.0" splitio_ios: dependency: transitive diff --git a/splitio/pubspec.yaml b/splitio/pubspec.yaml index 3e6d086..f15dc10 100644 --- a/splitio/pubspec.yaml +++ b/splitio/pubspec.yaml @@ -1,3 +1,4 @@ +publish_to: none # TODO name: splitio description: Official plugin for split.io, the platform for controlled rollouts, which serves features to your users via feature flags to manage your complete customer experience. version: 0.2.0 @@ -19,7 +20,8 @@ flutter: dependencies: flutter: sdk: flutter - splitio_android: ^0.2.0 + splitio_android: + path: ../splitio_android splitio_ios: ^0.2.0 splitio_platform_interface: ^1.5.0