Skip to content

Commit 762c44b

Browse files
committed
fix cmabservice instantiation
1 parent f57eefa commit 762c44b

File tree

3 files changed

+29
-18
lines changed

3 files changed

+29
-18
lines changed

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,15 @@
3939
import com.optimizely.ab.android.event_handler.EventDispatcher;
4040
import com.optimizely.ab.android.odp.DefaultODPApiManager;
4141
import com.optimizely.ab.android.odp.VuidManager;
42+
import com.optimizely.ab.android.sdk.cmab.DefaultCmabClient;
43+
import com.optimizely.ab.android.shared.Client;
4244
import com.optimizely.ab.android.shared.DatafileConfig;
45+
import com.optimizely.ab.android.shared.OptlyStorage;
4346
import com.optimizely.ab.android.user_profile.DefaultUserProfileService;
4447
import com.optimizely.ab.bucketing.UserProfileService;
48+
import com.optimizely.ab.cmab.client.CmabClient;
49+
import com.optimizely.ab.cmab.service.CmabService;
50+
import com.optimizely.ab.cmab.service.DefaultCmabService;
4551
import com.optimizely.ab.config.ProjectConfig;
4652
import com.optimizely.ab.config.parser.ConfigParseException;
4753
import com.optimizely.ab.error.ErrorHandler;
@@ -58,7 +64,6 @@
5864
import org.slf4j.Logger;
5965
import org.slf4j.LoggerFactory;
6066

61-
import java.beans.DefaultPersistenceDelegate;
6267
import java.io.IOException;
6368
import java.io.InputStream;
6469
import java.util.Collections;
@@ -786,7 +791,7 @@ public static class Builder {
786791
@Nullable private List<OptimizelyDecideOption> defaultDecideOptions = null;
787792
@Nullable private ODPEventManager odpEventManager;
788793
@Nullable private ODPSegmentManager odpSegmentManager;
789-
@Nullable private CMABClient cmabClient;
794+
@Nullable private CmabClient cmabClient;
790795

791796
private int odpSegmentCacheSize = 100;
792797
private int odpSegmentCacheTimeoutInSecs = 10*60;
@@ -1198,7 +1203,7 @@ public OptimizelyManager build(Context context) {
11981203

11991204
DefaultCmabService.Builder cmabBuilder = DefaultCmabService.builder();
12001205
if (cmabClient == null) {
1201-
cmabClient = new DefaultCmabClient();
1206+
cmabClient = new DefaultCmabClient(context);
12021207
}
12031208
cmabBuilder.withClient(cmabClient);
12041209
cmabBuilder.withCmabCacheSize(cmabCacheSize);

android-sdk/src/main/java/com/optimizely/ab/android/sdk/cmab/DefaultCmabClient.kt

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,33 @@
1414

1515
package com.optimizely.ab.android.sdk.cmab
1616

17+
import android.content.Context
1718
import androidx.annotation.VisibleForTesting
1819
import com.optimizely.ab.android.shared.Client
19-
import org.slf4j.Logger
20+
import com.optimizely.ab.android.shared.OptlyStorage
21+
import com.optimizely.ab.cmab.client.CmabClient
22+
import com.optimizely.ab.cmab.client.CmabClientHelper
23+
import com.optimizely.ab.cmab.client.CmabFetchException
24+
import com.optimizely.ab.cmab.client.CmabInvalidResponseException
25+
import org.slf4j.LoggerFactory
2026
import java.net.HttpURLConnection
2127
import java.net.URL
2228

2329
@VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
24-
open class DefaultCmabClient(private val client: Client, private val logger: Logger) {
30+
open class DefaultCmabClient(private val client: Client) : CmabClient {
31+
32+
private val logger = LoggerFactory.getLogger(DefaultCmabClient::class.java)
33+
34+
constructor(context: Context) : this(Client(OptlyStorage(context), LoggerFactory.getLogger(OptlyStorage::class.java)))
2535

2636
@VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
27-
fun fetchDecision(
37+
open fun fetchDecision(
2838
ruleId: String?,
2939
userId: String?,
3040
attributes: Map<String?, Any?>?,
3141
cmabUuid: String?
32-
): String {
33-
val request: Client.Request<String> = Client.Request {
42+
): String? {
43+
val request: Client.Request<String?> = Client.Request {
3444
var urlConnection: HttpURLConnection? = null
3545
try {
3646
val apiEndpoint = String.format(CmabClientHelper.CMAB_PREDICTION_ENDPOINT, ruleId)
@@ -40,6 +50,7 @@ open class DefaultCmabClient(private val client: Client, private val logger: Log
4050
val url = URL(apiEndpoint)
4151
urlConnection = client.openConnection(url)
4252
if (urlConnection == null) {
53+
logger.error("Error opening connection to $apiEndpoint")
4354
return@Request null
4455
}
4556

@@ -88,15 +99,7 @@ open class DefaultCmabClient(private val client: Client, private val logger: Log
8899
}
89100
}
90101
}
91-
val response = client.execute(request, REQUEST_BACKOFF_TIMEOUT, REQUEST_RETRIES_POWER)
92-
val parser: ResponseJsonParser = ResponseJsonParserFactory.getParser()
93-
try {
94-
return parser.parseQualifiedSegments(response)
95-
} catch (e: java.lang.Exception) {
96-
logger.error("Audience segments fetch failed (Error Parsing Response)")
97-
logger.debug(e.message)
98-
}
99-
return null
102+
return client.execute(request, REQUEST_BACKOFF_TIMEOUT, REQUEST_RETRIES_POWER)
100103
}
101104

102105
companion object {

shared/build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ android {
4545
}
4646

4747
dependencies {
48-
api ("com.optimizely.ab:core-api:$java_core_ver") {
48+
// api ("com.optimizely.ab:core-api:$java_core_ver") {
49+
// exclude group: 'com.google.code.findbugs'
50+
// }
51+
api ("com.optimizely.ab:core-api:3.1.0-SNAPSHOT") {
4952
exclude group: 'com.google.code.findbugs'
5053
}
5154

0 commit comments

Comments
 (0)