Skip to content

Commit b0ca8ef

Browse files
authored
Merge pull request #48 from optimizely/josh/tweaks
Josh/tweaks
2 parents 0624c59 + 8916979 commit b0ca8ef

File tree

5 files changed

+13
-15
lines changed

5 files changed

+13
-15
lines changed

android-sdk/src/androidTest/java/com/optimizely/ab/android/sdk/OptimizelyManagerTest.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,22 @@
1919
import android.content.Intent;
2020
import android.os.Build;
2121
import android.support.annotation.RequiresApi;
22-
import android.support.test.InstrumentationRegistry;
2322
import android.support.test.espresso.core.deps.guava.util.concurrent.ListeningExecutorService;
2423
import android.support.test.espresso.core.deps.guava.util.concurrent.MoreExecutors;
2524
import android.support.test.runner.AndroidJUnit4;
2625

27-
import com.optimizely.ab.android.shared.Cache;
2826
import com.optimizely.ab.android.shared.ServiceScheduler;
2927
import com.optimizely.ab.android.user_experiment_record.AndroidUserExperimentRecord;
3028

31-
import org.junit.After;
3229
import org.junit.Before;
3330
import org.junit.Test;
3431
import org.junit.runner.RunWith;
3532
import org.mockito.ArgumentCaptor;
36-
import org.mockito.Mock;
3733
import org.slf4j.Logger;
3834

3935
import java.util.concurrent.TimeUnit;
4036

4137
import static junit.framework.Assert.assertEquals;
42-
import static junit.framework.Assert.assertFalse;
4338
import static junit.framework.Assert.assertNotNull;
4439
import static junit.framework.Assert.assertNull;
4540
import static junit.framework.Assert.assertTrue;

android-sdk/src/main/java/com/optimizely/ab/android/sdk/OptimizelyManager.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ void setOptimizelyStartListener(@Nullable OptimizelyStartListener optimizelyStar
123123
* <p>
124124
* Instantiates and returns an {@link OptimizelyClient} instance. Will also cache the instance
125125
* for future lookups via getClient
126+
*
126127
* @param context any {@link Context} instance
127128
* @param datafile the datafile
128129
* @return an {@link OptimizelyClient} instance
@@ -162,7 +163,7 @@ public OptimizelyClient initialize(@NonNull Context context, @NonNull String dat
162163
* Instantiates and returns an {@link OptimizelyClient} instance. Will also cache the instance
163164
* for future lookups via getClient. The datafile should be stored in res/raw.
164165
*
165-
* @param context any {@link Context} instance
166+
* @param context any {@link Context} instance
166167
* @param dataFileRes the R id that the data file is located under.
167168
* @return an {@link OptimizelyClient} instance
168169
*/
@@ -184,14 +185,15 @@ public OptimizelyClient initialize(@NonNull Context context, @RawRes int dataFil
184185
* <p>
185186
* Instantiates and returns an {@link OptimizelyClient} instance using the datafile cached on disk
186187
* if not available then it will return a dummy instance.
188+
*
187189
* @param context any {@link Context} instance
188190
* @return an {@link OptimizelyClient} instance
189191
*/
190192
public OptimizelyClient initialize(@NonNull Context context) {
191193
DataFileCache dataFileCache = new DataFileCache(
192-
projectId,
193-
new Cache(context, LoggerFactory.getLogger(Cache.class)),
194-
LoggerFactory.getLogger(DataFileCache.class)
194+
projectId,
195+
new Cache(context, LoggerFactory.getLogger(Cache.class)),
196+
LoggerFactory.getLogger(DataFileCache.class)
195197
);
196198

197199
JSONObject datafile = dataFileCache.load();
@@ -304,6 +306,7 @@ private String loadRawResource(Context context, @RawRes int rawRes) throws IOExc
304306

305307
/**
306308
* Check if the datafile is cached on the disk
309+
*
307310
* @param context any {@link Context} instance
308311
* @return True if the datafile is cached on the disk
309312
*/

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ ext {
5252
min_sdk_version = 10
5353
target_sdk_version = 24
5454

55-
java_core_ver = "1.0.2"
55+
java_core_ver = "1.0.3"
5656
android_logger_ver = "1.3.1"
5757
support_annotations_ver = "24.2.1"
5858
junit_ver = "4.12"

test-app/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ dependencies {
3232
// compile 'com.optimizely.ab:android-sdk:0.2.0'
3333
compile 'com.android.support:appcompat-v7:24.2.1'
3434
compile 'com.android.support:design:24.2.1'
35-
compile 'com.fasterxml.jackson.core:jackson-annotations:2.7.1'
3635

3736
testCompile "junit:junit:$junit_ver"
3837
testCompile "org.mockito:mockito-core:$mockito_ver"

user-experiment-record/src/main/java/com/optimizely/ab/android/user_experiment_record/AndroidUserExperimentRecord.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import java.util.HashMap;
3636
import java.util.Iterator;
3737
import java.util.Map;
38+
import java.util.concurrent.ConcurrentHashMap;
3839
import java.util.concurrent.Executor;
3940
import java.util.concurrent.Executors;
4041

@@ -68,7 +69,7 @@ public class AndroidUserExperimentRecord implements UserExperimentRecord {
6869
* @return the instance as {@link UserExperimentRecord}
6970
*/
7071
public static UserExperimentRecord newInstance(@NonNull String projectId, @NonNull Context context) {
71-
HashMap<String, Map<String, String>> memoryUserExperimentRecordCache = new HashMap<>();
72+
Map<String, Map<String, String>> memoryUserExperimentRecordCache = new ConcurrentHashMap<>();
7273
UserExperimentRecordCache userExperimentRecordCache =
7374
new UserExperimentRecordCache(projectId,
7475
new Cache(context,
@@ -98,7 +99,7 @@ public void start() {
9899
String varId = expIdToVarIdJson.getString(expId);
99100
Map<String, String> expIdToVarIdMap = writeThroughCacheTaskFactory.getMemoryUserExperimentRecordCache().get(userId);
100101
if (expIdToVarIdMap == null) {
101-
expIdToVarIdMap = new HashMap<>();
102+
expIdToVarIdMap = new ConcurrentHashMap<>();
102103
}
103104
expIdToVarIdMap.put(expId, varId);
104105
writeThroughCacheTaskFactory.getMemoryUserExperimentRecordCache().put(userId, expIdToVarIdMap);
@@ -238,7 +239,7 @@ protected Boolean doInBackground(Void[] params) {
238239
protected void onPreExecute() {
239240
Map<String, String> expIdToVarIdMap = memoryUserExperimentRecordCache.get(userId);
240241
if (expIdToVarIdMap == null) {
241-
expIdToVarIdMap = new HashMap<>();
242+
expIdToVarIdMap = new ConcurrentHashMap<>();
242243
}
243244
expIdToVarIdMap.put(experimentKey, variationKey);
244245
memoryUserExperimentRecordCache.put(userId, expIdToVarIdMap);
@@ -288,7 +289,7 @@ protected Pair<String, Boolean> doInBackground(String... params) {
288289
protected void onPostExecute(Pair<String, Boolean> result) {
289290
// Put the mapping back in the write through cache if removing failed
290291
if (!result.second) {
291-
Map<String, String> expIdToVarIdMap = new HashMap<>();
292+
Map<String, String> expIdToVarIdMap = new ConcurrentHashMap<>();
292293
expIdToVarIdMap.put(experimentKey, result.first);
293294
memoryUserExperimentRecordCache.put(userId, expIdToVarIdMap);
294295
logger.error("Restored experimentKey: {} variationKey: {} record for user: {} to memory", experimentKey, result.first, userId);

0 commit comments

Comments
 (0)