Skip to content

Commit 97298b8

Browse files
authored
fix(OptimizelyConfig): add new fields to OptimizelyConfig (#379)
The following new public properties are added to OptimizelyConfig (from java-sdk core): - sdkKey - environmentKey - attributes - audiences - events - experimentRules and deliveryRules to OptimizelyFeature - audiences to OptimizelyExperiment
1 parent a23c51d commit 97298b8

File tree

3 files changed

+87
-1
lines changed

3 files changed

+87
-1
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2034,6 +2034,11 @@ public void testGetOptimizelyConfig() {
20342034
assertNotNull(optimizelyConfig.getExperimentsMap());
20352035
assertNotNull(optimizelyConfig.getFeaturesMap());
20362036
assertNotNull(optimizelyConfig.getRevision());
2037+
assertNotNull(optimizelyConfig.getSdkKey());
2038+
assertNotNull(optimizelyConfig.getEnvironmentKey());
2039+
assertNotNull(optimizelyConfig.getAttributes());
2040+
assertNotNull(optimizelyConfig.getAudiences());
2041+
assertNotNull(optimizelyConfig.getEvents());
20372042
}
20382043

20392044
@Test

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ allprojects {
4646
google()
4747
mavenCentral()
4848
// SNAPSHOT support
49-
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
49+
maven {url "https://oss.sonatype.org/content/repositories/snapshots/" }
5050
}
5151
}
5252

test-app/src/main/java/com/optimizely/ab/android/test_app/SamplesForAPI.java

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@
2525
import com.optimizely.ab.android.sdk.OptimizelyStartListener;
2626
import com.optimizely.ab.config.Variation;
2727
import com.optimizely.ab.config.parser.JsonParseException;
28+
import com.optimizely.ab.notification.UpdateConfigNotification;
29+
import com.optimizely.ab.optimizelyconfig.OptimizelyAttribute;
30+
import com.optimizely.ab.optimizelyconfig.OptimizelyAudience;
31+
import com.optimizely.ab.optimizelyconfig.OptimizelyConfig;
32+
import com.optimizely.ab.optimizelyconfig.OptimizelyEvent;
33+
import com.optimizely.ab.optimizelyconfig.OptimizelyExperiment;
34+
import com.optimizely.ab.optimizelyconfig.OptimizelyFeature;
35+
import com.optimizely.ab.optimizelyconfig.OptimizelyVariable;
36+
import com.optimizely.ab.optimizelyconfig.OptimizelyVariation;
2837
import com.optimizely.ab.optimizelydecision.OptimizelyDecideOption;
2938
import com.optimizely.ab.optimizelydecision.OptimizelyDecision;
3039
import com.optimizely.ab.optimizelyjson.OptimizelyJSON;
@@ -177,4 +186,76 @@ static public void samplesForInitialization(Context context) {
177186

178187
}
179188

189+
static public void samplesForOptimizelyConfig(Context context) {
190+
191+
OptimizelyManager optimizelyManager = OptimizelyManager.builder()
192+
.withSDKKey("FCnSegiEkRry9rhVMroit4")
193+
.build(context);
194+
optimizelyManager.initialize(context, R.raw.datafile, optimizelyClient -> {
195+
196+
OptimizelyConfig config = optimizelyClient.getOptimizelyConfig();
197+
198+
System.out.println("[OptimizelyConfig] revision = " + config.getRevision());
199+
System.out.println("[OptimizelyConfig] sdkKey = " + config.getSdkKey());
200+
System.out.println("[OptimizelyConfig] environmentKey = " + config.getEnvironmentKey());
201+
202+
System.out.println("[OptimizelyConfig] attributes:");
203+
for (OptimizelyAttribute attribute: config.getAttributes()) {
204+
System.out.println("[OptimizelyAttribute] -- (id, key) = " + attribute.getId() + ", " + attribute.getKey());
205+
}
206+
207+
System.out.println("[OptimizelyConfig] audiences:");
208+
for (OptimizelyAudience audience: config.getAudiences()) {
209+
System.out.println("[OptimizelyAudience] -- (id, name, conditions) = " + audience.getId() + ", " + audience.getName() + ", " + audience.getConditions());
210+
}
211+
212+
System.out.println("[OptimizelyConfig] events:");
213+
for (OptimizelyEvent event: config.getEvents()) {
214+
System.out.println("[OptimizelyEvent] -- (id, key, experimentIds) = " + event.getId() + ", " + event.getKey() + ", " + Arrays.toString(event.getExperimentIds().toArray()));
215+
}
216+
217+
// all features
218+
for (String flagKey: config.getFeaturesMap().keySet()) {
219+
OptimizelyFeature flag = config.getFeaturesMap().get(flagKey);
220+
221+
for (OptimizelyExperiment experiment: flag.getExperimentRules()) {
222+
System.out.println("[OptimizelyExperiment] -- Experiment Rule Key: " + experiment.getKey());
223+
System.out.println("[OptimizelyExperiment] -- Experiment Audiences: " + experiment.getAudiences());
224+
225+
Map<String, OptimizelyVariation> variationsMap = experiment.getVariationsMap();
226+
for (String variationKey: variationsMap.keySet()) {
227+
OptimizelyVariation variation = variationsMap.get(variationKey);
228+
System.out.println("[OptimizelyVariation] -- variation = { key: " + variationKey + ", id: " + variation.getId() + ", featureEnabled: " + variation.getFeatureEnabled() + " }");
229+
// use variation data here...
230+
231+
Map<String, OptimizelyVariable> optimizelyVariableMap = variation.getVariablesMap();
232+
for (String variableKey: optimizelyVariableMap.keySet()) {
233+
OptimizelyVariable variable = optimizelyVariableMap.get(variableKey);
234+
System.out.println("[OptimizelyVariable] -- variable = key: " + variableKey + ", value: " + variable.getValue());
235+
// use variable data here...
236+
237+
}
238+
}
239+
240+
}
241+
242+
for (OptimizelyExperiment delivery: flag.getDeliveryRules()) {
243+
System.out.println("[OptimizelyExperiment] -- Delivery Rule Key: " + delivery.getKey());
244+
System.out.println("[OptimizelyExperiment] -- Delivery Audiences: " + delivery.getAudiences());
245+
}
246+
Map<String, OptimizelyExperiment> experimentsMap = flag.getExperimentsMap();
247+
// feature flag experiments
248+
Set<String> experimentKeys = experimentsMap.keySet();
249+
250+
// use experiments and other feature flag data here...
251+
252+
}
253+
254+
// listen to OPTIMIZELY_CONFIG_UPDATE to get updated data
255+
optimizelyClient.getNotificationCenter().addNotificationHandler(UpdateConfigNotification.class, handler -> {
256+
OptimizelyConfig newConfig = optimizelyClient.getOptimizelyConfig();
257+
});
258+
});
259+
}
260+
180261
}

0 commit comments

Comments
 (0)