Skip to content

Commit 6486886

Browse files
[FSSDK-11448] Java Implementation: Add Experiment ID and Variation ID to Decision Notification (#566)
* [FSSDK-11448] Java Implementation: Add Experiment ID and Variation ID to Decision Notification * Fix test * Fix test * Fix decision test * Fix test * Fix the tests * Fix test * Fix last test case * Fix the test case * Remove experiment decision changes * Fix test * Fix test * Fix test
1 parent 84710cc commit 6486886

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

core-api/src/main/java/com/optimizely/ab/Optimizely.java

+6
Original file line numberDiff line numberDiff line change
@@ -1303,6 +1303,8 @@ private OptimizelyDecision createOptimizelyDecision(
13031303
ProjectConfig projectConfig
13041304
) {
13051305
String userId = user.getUserId();
1306+
String experimentId = null;
1307+
String variationId = null;
13061308

13071309
Boolean flagEnabled = false;
13081310
if (flagDecision.variation != null) {
@@ -1336,6 +1338,8 @@ private OptimizelyDecision createOptimizelyDecision(
13361338

13371339

13381340
Boolean decisionEventDispatched = false;
1341+
experimentId = flagDecision.experiment != null ? flagDecision.experiment.getId() : null;
1342+
variationId = flagDecision.variation != null ? flagDecision.variation.getId() : null;
13391343

13401344
Map<String, Object> attributes = user.getAttributes();
13411345
Map<String, ?> copiedAttributes = new HashMap<>(attributes);
@@ -1362,6 +1366,8 @@ private OptimizelyDecision createOptimizelyDecision(
13621366
.withRuleKey(ruleKey)
13631367
.withReasons(reasonsToReport)
13641368
.withDecisionEventDispatched(decisionEventDispatched)
1369+
.withExperimentId(experimentId)
1370+
.withVariationId(variationId)
13651371
.build();
13661372
notificationCenter.send(decisionNotification);
13671373

core-api/src/main/java/com/optimizely/ab/notification/DecisionNotification.java

+16
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,8 @@ public static class FlagDecisionNotificationBuilder {
364364
public final static String RULE_KEY = "ruleKey";
365365
public final static String REASONS = "reasons";
366366
public final static String DECISION_EVENT_DISPATCHED = "decisionEventDispatched";
367+
public final static String EXPERIMENT_ID = "experimentId";
368+
public final static String VARIATION_ID = "variationId";
367369

368370
private String flagKey;
369371
private Boolean enabled;
@@ -374,6 +376,8 @@ public static class FlagDecisionNotificationBuilder {
374376
private String ruleKey;
375377
private List<String> reasons;
376378
private Boolean decisionEventDispatched;
379+
private String experimentId;
380+
private String variationId;
377381

378382
private Map<String, Object> decisionInfo;
379383

@@ -422,6 +426,16 @@ public FlagDecisionNotificationBuilder withDecisionEventDispatched(Boolean dispa
422426
return this;
423427
}
424428

429+
public FlagDecisionNotificationBuilder withExperimentId(String experimentId) {
430+
this.experimentId = experimentId;
431+
return this;
432+
}
433+
434+
public FlagDecisionNotificationBuilder withVariationId(String variationId) {
435+
this.variationId = variationId;
436+
return this;
437+
}
438+
425439
public DecisionNotification build() {
426440
if (flagKey == null) {
427441
throw new OptimizelyRuntimeException("flagKey not set");
@@ -439,6 +453,8 @@ public DecisionNotification build() {
439453
put(RULE_KEY, ruleKey);
440454
put(REASONS, reasons);
441455
put(DECISION_EVENT_DISPATCHED, decisionEventDispatched);
456+
put(EXPERIMENT_ID, experimentId);
457+
put(VARIATION_ID, variationId);
442458
}};
443459

444460
return new DecisionNotification(

core-api/src/test/java/com/optimizely/ab/OptimizelyUserContextTest.java

+4
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,8 @@ public void decisionNotification() {
707707
OptimizelyJSON variables = optimizely.getAllFeatureVariables(flagKey, userId);
708708
String ruleKey = "exp_no_audience";
709709
List<String> reasons = Collections.emptyList();
710+
String experimentId = "10420810910";
711+
String variationId = "10418551353";
710712

711713
final Map<String, Object> testDecisionInfoMap = new HashMap<>();
712714
testDecisionInfoMap.put(FLAG_KEY, flagKey);
@@ -715,6 +717,8 @@ public void decisionNotification() {
715717
testDecisionInfoMap.put(VARIABLES, variables.toMap());
716718
testDecisionInfoMap.put(RULE_KEY, ruleKey);
717719
testDecisionInfoMap.put(REASONS, reasons);
720+
testDecisionInfoMap.put(EXPERIMENT_ID, experimentId);
721+
testDecisionInfoMap.put(VARIATION_ID, variationId);
718722

719723
Map<String, Object> attributes = Collections.singletonMap("gender", "f");
720724
OptimizelyUserContext user = optimizely.createUserContext(userId, attributes);

0 commit comments

Comments
 (0)