From 7b72f888796df7e3e84d1d6ea487c520903e5f86 Mon Sep 17 00:00:00 2001 From: gary Date: Tue, 22 May 2018 12:45:30 -0700 Subject: [PATCH 1/6] Pass down config from open --- sift/src/main/java/siftscience/android/Sift.java | 1 + 1 file changed, 1 insertion(+) diff --git a/sift/src/main/java/siftscience/android/Sift.java b/sift/src/main/java/siftscience/android/Sift.java index 758ec88..f349f1b 100644 --- a/sift/src/main/java/siftscience/android/Sift.java +++ b/sift/src/main/java/siftscience/android/Sift.java @@ -73,6 +73,7 @@ public static void open(@NonNull Context context, } } + instance.setConfig(config); appStateCollector.setActivityName(activityName == null ? context.getClass().getSimpleName() : activityName); From 8414a00d7c84d4517bebefad2d3218887c5fd359 Mon Sep 17 00:00:00 2001 From: gary Date: Tue, 22 May 2018 12:52:14 -0700 Subject: [PATCH 2/6] Adds test --- .../java/siftscience/android/SiftImpl.java | 12 +++++------ .../java/siftscience/android/SiftTest.java | 21 +++++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/sift/src/main/java/siftscience/android/SiftImpl.java b/sift/src/main/java/siftscience/android/SiftImpl.java index 8fa37c1..59c8bde 100644 --- a/sift/src/main/java/siftscience/android/SiftImpl.java +++ b/sift/src/main/java/siftscience/android/SiftImpl.java @@ -271,10 +271,12 @@ public UnarchiveTask(boolean hasUnboundUserId) { public void run() { String archive; - // Unarchive Sift config - archive = archives.getString(ArchiveKey.CONFIG.key, null); - config = unarchiveConfig(archive); - Log.d(TAG, String.format("Unarchived Sift.Config: %s", archive)); + // Unarchive Sift config if we don't have one + if (config == null) { + archive = archives.getString(ArchiveKey.CONFIG.key, null); + config = unarchiveConfig(archive); + Log.d(TAG, String.format("Unarchived Sift.Config: %s", archive)); + } // Unarchive User ID if we didn't have an unbound one from the Sift class if (!this.hasUnboundUserId) { @@ -282,8 +284,6 @@ public void run() { Log.d(TAG, String.format("Unarchived User ID: %s", userId)); } - - // Unarchive Queues for (Map.Entry entry : archives.getAll().entrySet()) { String identifier = ArchiveKey.getQueueIdentifier(entry.getKey()); diff --git a/sift/src/test/java/siftscience/android/SiftTest.java b/sift/src/test/java/siftscience/android/SiftTest.java index 4997d5c..acf3571 100644 --- a/sift/src/test/java/siftscience/android/SiftTest.java +++ b/sift/src/test/java/siftscience/android/SiftTest.java @@ -209,6 +209,27 @@ public void testSift() throws Exception { assertTrue(preferences.fields.isEmpty()); } + @Test + public void testConfigPrecedence() { + MemorySharedPreferences preferences = new MemorySharedPreferences(); + + Sift.Config c1 = new Sift.Config.Builder().withAccountId("sandbox").build(); + Sift.Config c2 = new Sift.Config.Builder().withAccountId("prod").build(); + + MemorySharedPreferences.Editor editor = preferences.edit(); + editor.putString("config", Sift.GSON.toJson(c1)); + editor.apply(); + + SiftImpl sift = new SiftImpl( + mockContext(preferences), c2, "", false, mockTaskManager()); + + assertEquals(c2.accountId, sift.getConfig().accountId); + + sift.setConfig(c1); + + assertEquals(c1.accountId, sift.getConfig().accountId); + } + @Test public void testUnarchiveUnknownProperty() throws IOException { String jsonAsString = From 1ad3b338a182c8c5ebabc38f4945ee118c9744c8 Mon Sep 17 00:00:00 2001 From: gary Date: Tue, 22 May 2018 13:00:04 -0700 Subject: [PATCH 3/6] Only update config if null --- sift/src/main/java/siftscience/android/Sift.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sift/src/main/java/siftscience/android/Sift.java b/sift/src/main/java/siftscience/android/Sift.java index f349f1b..ae4af28 100644 --- a/sift/src/main/java/siftscience/android/Sift.java +++ b/sift/src/main/java/siftscience/android/Sift.java @@ -73,7 +73,9 @@ public static void open(@NonNull Context context, } } - instance.setConfig(config); + if (config != null) { + instance.setConfig(config); + } appStateCollector.setActivityName(activityName == null ? context.getClass().getSimpleName() : activityName); From 0b557a72afa9ff12fe7817574f076582cca63a92 Mon Sep 17 00:00:00 2001 From: gary Date: Tue, 22 May 2018 13:01:56 -0700 Subject: [PATCH 4/6] Add fallback test --- .../test/java/siftscience/android/SiftTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/sift/src/test/java/siftscience/android/SiftTest.java b/sift/src/test/java/siftscience/android/SiftTest.java index acf3571..1862f90 100644 --- a/sift/src/test/java/siftscience/android/SiftTest.java +++ b/sift/src/test/java/siftscience/android/SiftTest.java @@ -230,6 +230,22 @@ public void testConfigPrecedence() { assertEquals(c1.accountId, sift.getConfig().accountId); } + @Test + public void testConfigFallback() { + MemorySharedPreferences preferences = new MemorySharedPreferences(); + + Sift.Config c1 = new Sift.Config.Builder().withAccountId("sandbox").build(); + + MemorySharedPreferences.Editor editor = preferences.edit(); + editor.putString("config", Sift.GSON.toJson(c1)); + editor.apply(); + + SiftImpl sift = new SiftImpl( + mockContext(preferences), null, "", false, mockTaskManager()); + + assertEquals(c1.accountId, sift.getConfig().accountId); + } + @Test public void testUnarchiveUnknownProperty() throws IOException { String jsonAsString = From e6513162ac8de22378700f37cce74f7c8e7435a3 Mon Sep 17 00:00:00 2001 From: gary Date: Thu, 24 May 2018 15:22:22 -0700 Subject: [PATCH 5/6] Addresses PR feedback --- sift/src/main/java/siftscience/android/Sift.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/sift/src/main/java/siftscience/android/Sift.java b/sift/src/main/java/siftscience/android/Sift.java index ae4af28..6407728 100644 --- a/sift/src/main/java/siftscience/android/Sift.java +++ b/sift/src/main/java/siftscience/android/Sift.java @@ -70,15 +70,14 @@ public static void open(@NonNull Context context, appStateCollector = new AppStateCollector(instance, c); unboundUserId = null; hasUnboundUserId = false; + } else { + if (config != null) { + instance.setConfig(config); + } + appStateCollector.setActivityName(activityName == null ? + context.getClass().getSimpleName() : activityName); } } - - if (config != null) { - instance.setConfig(config); - } - appStateCollector.setActivityName(activityName == null ? - context.getClass().getSimpleName() : activityName); - } public static void open(@NonNull Context context, String activityName) { From 00986e7e84326f9f096e8e4d0bfd867682b2cab0 Mon Sep 17 00:00:00 2001 From: gary Date: Thu, 24 May 2018 15:28:52 -0700 Subject: [PATCH 6/6] Moves appStateCollector back out --- sift/src/main/java/siftscience/android/Sift.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sift/src/main/java/siftscience/android/Sift.java b/sift/src/main/java/siftscience/android/Sift.java index 6407728..7c3eaca 100644 --- a/sift/src/main/java/siftscience/android/Sift.java +++ b/sift/src/main/java/siftscience/android/Sift.java @@ -74,10 +74,11 @@ public static void open(@NonNull Context context, if (config != null) { instance.setConfig(config); } - appStateCollector.setActivityName(activityName == null ? - context.getClass().getSimpleName() : activityName); } } + + appStateCollector.setActivityName(activityName == null ? + context.getClass().getSimpleName() : activityName); } public static void open(@NonNull Context context, String activityName) {