Skip to content

Commit 5cb4eb3

Browse files
fix: update method parameters in Optimizely.java and Bucketer.java to use ExperimentCore instead of Experiment. Fix ActivateNotification, ExperimentUtils, ActivateNotificationListener, NotificationCenterTest to reflect these changes.
1 parent 962ca8f commit 5cb4eb3

File tree

10 files changed

+94
-72
lines changed

10 files changed

+94
-72
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.optimizely.ab.config.DatafileProjectConfig;
2525
import com.optimizely.ab.config.EventType;
2626
import com.optimizely.ab.config.Experiment;
27+
import com.optimizely.ab.config.ExperimentCore;
2728
import com.optimizely.ab.config.FeatureFlag;
2829
import com.optimizely.ab.config.FeatureVariable;
2930
import com.optimizely.ab.config.FeatureVariableUsageInstance;
@@ -319,7 +320,7 @@ private void sendImpression(@Nonnull ProjectConfig projectConfig,
319320
* @param ruleType It can either be experiment in case impression event is sent from activate or it's feature-test or rollout
320321
*/
321322
private boolean sendImpression(@Nonnull ProjectConfig projectConfig,
322-
@Nullable Experiment experiment,
323+
@Nullable ExperimentCore experiment,
323324
@Nonnull String userId,
324325
@Nonnull Map<String, ?> filteredAttributes,
325326
@Nullable Variation variation,

core-api/src/main/java/com/optimizely/ab/bucketing/Bucketer.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,25 @@
1616
*/
1717
package com.optimizely.ab.bucketing;
1818

19+
import java.util.List;
20+
21+
import javax.annotation.Nonnull;
22+
import javax.annotation.concurrent.Immutable;
23+
24+
import org.slf4j.Logger;
25+
import org.slf4j.LoggerFactory;
26+
1927
import com.optimizely.ab.annotations.VisibleForTesting;
2028
import com.optimizely.ab.bucketing.internal.MurmurHash3;
21-
import com.optimizely.ab.config.*;
29+
import com.optimizely.ab.config.Experiment;
30+
import com.optimizely.ab.config.ExperimentCore;
31+
import com.optimizely.ab.config.Group;
32+
import com.optimizely.ab.config.ProjectConfig;
33+
import com.optimizely.ab.config.TrafficAllocation;
34+
import com.optimizely.ab.config.Variation;
2235
import com.optimizely.ab.optimizelydecision.DecisionReasons;
2336
import com.optimizely.ab.optimizelydecision.DecisionResponse;
2437
import com.optimizely.ab.optimizelydecision.DefaultDecisionReasons;
25-
import org.slf4j.Logger;
26-
import org.slf4j.LoggerFactory;
27-
28-
import javax.annotation.Nonnull;
29-
import javax.annotation.concurrent.Immutable;
30-
import java.util.List;
3138

3239
/**
3340
* Default Optimizely bucketing algorithm that evenly distributes users using the Murmur3 hash of some provided
@@ -89,7 +96,7 @@ private Experiment bucketToExperiment(@Nonnull Group group,
8996
}
9097

9198
@Nonnull
92-
private DecisionResponse<Variation> bucketToVariation(@Nonnull Experiment experiment,
99+
private DecisionResponse<Variation> bucketToVariation(@Nonnull ExperimentCore experiment,
93100
@Nonnull String bucketingId) {
94101
DecisionReasons reasons = DefaultDecisionReasons.newInstance();
95102

@@ -130,7 +137,7 @@ private DecisionResponse<Variation> bucketToVariation(@Nonnull Experiment experi
130137
* @return A {@link DecisionResponse} including the {@link Variation} that user is bucketed into (or null) and the decision reasons
131138
*/
132139
@Nonnull
133-
public DecisionResponse<Variation> bucket(@Nonnull Experiment experiment,
140+
public DecisionResponse<Variation> bucket(@Nonnull ExperimentCore experiment,
134141
@Nonnull String bucketingId,
135142
@Nonnull ProjectConfig projectConfig) {
136143
DecisionReasons reasons = DefaultDecisionReasons.newInstance();

core-api/src/main/java/com/optimizely/ab/bucketing/FeatureDecision.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,18 @@
1515
***************************************************************************/
1616
package com.optimizely.ab.bucketing;
1717

18+
import javax.annotation.Nullable;
19+
1820
import com.optimizely.ab.config.Experiment;
21+
import com.optimizely.ab.config.ExperimentCore;
1922
import com.optimizely.ab.config.Variation;
2023

21-
import javax.annotation.Nullable;
22-
2324
public class FeatureDecision {
2425
/**
2526
* The {@link Experiment} the Feature is associated with.
2627
*/
2728
@Nullable
28-
public Experiment experiment;
29+
public ExperimentCore experiment;
2930

3031
/**
3132
* The {@link Variation} the user was bucketed into.
@@ -41,7 +42,8 @@ public class FeatureDecision {
4142

4243
public enum DecisionSource {
4344
FEATURE_TEST("feature-test"),
44-
ROLLOUT("rollout");
45+
ROLLOUT("rollout"),
46+
HOLDOUT("holdout");
4547

4648
private final String key;
4749

@@ -62,7 +64,7 @@ public String toString() {
6264
* @param variation The {@link Variation} the user was bucketed into.
6365
* @param decisionSource The source of the variation.
6466
*/
65-
public FeatureDecision(@Nullable Experiment experiment, @Nullable Variation variation,
67+
public FeatureDecision(@Nullable ExperimentCore experiment, @Nullable Variation variation,
6668
@Nullable DecisionSource decisionSource) {
6769
this.experiment = experiment;
6870
this.variation = variation;

core-api/src/main/java/com/optimizely/ab/event/internal/UserEventFactory.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,26 @@
1616
*/
1717
package com.optimizely.ab.event.internal;
1818

19+
import java.util.Map;
20+
21+
import javax.annotation.Nonnull;
22+
import javax.annotation.Nullable;
23+
24+
import org.slf4j.Logger;
25+
import org.slf4j.LoggerFactory;
26+
1927
import com.optimizely.ab.bucketing.FeatureDecision;
20-
import com.optimizely.ab.config.Experiment;
28+
import com.optimizely.ab.config.ExperimentCore;
2129
import com.optimizely.ab.config.ProjectConfig;
2230
import com.optimizely.ab.config.Variation;
2331
import com.optimizely.ab.event.internal.payload.DecisionMetadata;
2432
import com.optimizely.ab.internal.EventTagUtils;
25-
import org.slf4j.Logger;
26-
import org.slf4j.LoggerFactory;
27-
import javax.annotation.Nonnull;
28-
import javax.annotation.Nullable;
29-
import java.util.Map;
3033

3134
public class UserEventFactory {
3235
private static final Logger logger = LoggerFactory.getLogger(UserEventFactory.class);
3336

3437
public static ImpressionEvent createImpressionEvent(@Nonnull ProjectConfig projectConfig,
35-
@Nullable Experiment activatedExperiment,
38+
@Nullable ExperimentCore activatedExperiment,
3639
@Nullable Variation variation,
3740
@Nonnull String userId,
3841
@Nonnull Map<String, ?> attributes,

core-api/src/main/java/com/optimizely/ab/internal/ExperimentUtils.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,24 @@
1616
*/
1717
package com.optimizely.ab.internal;
1818

19+
import java.util.ArrayList;
20+
import java.util.List;
21+
22+
import javax.annotation.Nonnull;
23+
24+
import org.slf4j.Logger;
25+
import org.slf4j.LoggerFactory;
26+
1927
import com.optimizely.ab.OptimizelyUserContext;
2028
import com.optimizely.ab.config.Experiment;
29+
import com.optimizely.ab.config.ExperimentCore;
2130
import com.optimizely.ab.config.ProjectConfig;
2231
import com.optimizely.ab.config.audience.AudienceIdCondition;
2332
import com.optimizely.ab.config.audience.Condition;
2433
import com.optimizely.ab.config.audience.OrCondition;
2534
import com.optimizely.ab.optimizelydecision.DecisionReasons;
2635
import com.optimizely.ab.optimizelydecision.DecisionResponse;
2736
import com.optimizely.ab.optimizelydecision.DefaultDecisionReasons;
28-
import org.slf4j.Logger;
29-
import org.slf4j.LoggerFactory;
30-
31-
import javax.annotation.Nonnull;
32-
import java.util.ArrayList;
33-
import java.util.List;
34-
import java.util.Map;
3537

3638
public final class ExperimentUtils {
3739

@@ -62,7 +64,7 @@ public static boolean isExperimentActive(@Nonnull Experiment experiment) {
6264
*/
6365
@Nonnull
6466
public static DecisionResponse<Boolean> doesUserMeetAudienceConditions(@Nonnull ProjectConfig projectConfig,
65-
@Nonnull Experiment experiment,
67+
@Nonnull ExperimentCore experiment,
6668
@Nonnull OptimizelyUserContext user,
6769
@Nonnull String loggingEntityType,
6870
@Nonnull String loggingKey) {
@@ -86,7 +88,7 @@ public static DecisionResponse<Boolean> doesUserMeetAudienceConditions(@Nonnull
8688

8789
@Nonnull
8890
public static DecisionResponse<Boolean> evaluateAudience(@Nonnull ProjectConfig projectConfig,
89-
@Nonnull Experiment experiment,
91+
@Nonnull ExperimentCore experiment,
9092
@Nonnull OptimizelyUserContext user,
9193
@Nonnull String loggingEntityType,
9294
@Nonnull String loggingKey) {
@@ -118,7 +120,7 @@ public static DecisionResponse<Boolean> evaluateAudience(@Nonnull ProjectConfig
118120

119121
@Nonnull
120122
public static DecisionResponse<Boolean> evaluateAudienceConditions(@Nonnull ProjectConfig projectConfig,
121-
@Nonnull Experiment experiment,
123+
@Nonnull ExperimentCore experiment,
122124
@Nonnull OptimizelyUserContext user,
123125
@Nonnull String loggingEntityType,
124126
@Nonnull String loggingKey) {

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
*/
1717
package com.optimizely.ab.notification;
1818

19+
import java.util.Map;
20+
1921
import com.optimizely.ab.annotations.VisibleForTesting;
20-
import com.optimizely.ab.config.Experiment;
22+
import com.optimizely.ab.config.ExperimentCore;
2123
import com.optimizely.ab.config.Variation;
2224
import com.optimizely.ab.event.LogEvent;
2325

24-
import java.util.Map;
25-
2626
/**
2727
* ActivateNotification supplies notification for AB activatation.
2828
*
@@ -32,7 +32,7 @@
3232
@Deprecated
3333
public final class ActivateNotification {
3434

35-
private final Experiment experiment;
35+
private final ExperimentCore experiment;
3636
private final String userId;
3737
private final Map<String, ?> attributes;
3838
private final Variation variation;
@@ -50,15 +50,15 @@ public final class ActivateNotification {
5050
* @param variation - The variation that was returned from activate.
5151
* @param event - The impression event that was triggered.
5252
*/
53-
public ActivateNotification(Experiment experiment, String userId, Map<String, ?> attributes, Variation variation, LogEvent event) {
53+
public ActivateNotification(ExperimentCore experiment, String userId, Map<String, ?> attributes, Variation variation, LogEvent event) {
5454
this.experiment = experiment;
5555
this.userId = userId;
5656
this.attributes = attributes;
5757
this.variation = variation;
5858
this.event = event;
5959
}
6060

61-
public Experiment getExperiment() {
61+
public ExperimentCore getExperiment() {
6262
return experiment;
6363
}
6464

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717

1818
package com.optimizely.ab.notification;
1919

20+
import java.util.Map;
21+
22+
import javax.annotation.Nonnull;
23+
2024
import com.optimizely.ab.config.Experiment;
25+
import com.optimizely.ab.config.ExperimentCore;
2126
import com.optimizely.ab.config.Variation;
2227
import com.optimizely.ab.event.LogEvent;
2328

24-
import javax.annotation.Nonnull;
25-
import java.util.Map;
26-
2729
/**
2830
* ActivateNotificationListener handles the activate event notification.
2931
*
@@ -80,7 +82,7 @@ public final void handle(ActivateNotification message) {
8082
* @param variation - The variation that was returned from activate.
8183
* @param event - The impression event that was triggered.
8284
*/
83-
public abstract void onActivate(@Nonnull Experiment experiment,
85+
public abstract void onActivate(@Nonnull ExperimentCore experiment,
8486
@Nonnull String userId,
8587
@Nonnull Map<String, ?> attributes,
8688
@Nonnull Variation variation,

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

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@
1616
*/
1717
package com.optimizely.ab.notification;
1818

19-
import com.optimizely.ab.config.Experiment;
20-
import com.optimizely.ab.config.Variation;
21-
import com.optimizely.ab.event.LogEvent;
19+
import java.util.Map;
2220

2321
import javax.annotation.Nonnull;
24-
import java.util.Map;
22+
23+
import com.optimizely.ab.config.ExperimentCore;
24+
import com.optimizely.ab.config.Variation;
25+
import com.optimizely.ab.event.LogEvent;
2526

2627
/**
2728
* ActivateNotificationListenerInterface provides and interface for activate event notification.
@@ -40,7 +41,7 @@ public interface ActivateNotificationListenerInterface {
4041
* @param variation - The variation that was returned from activate.
4142
* @param event - The impression event that was triggered.
4243
*/
43-
public void onActivate(@Nonnull Experiment experiment,
44+
public void onActivate(@Nonnull ExperimentCore experiment,
4445
@Nonnull String userId,
4546
@Nonnull Map<String, ?> attributes,
4647
@Nonnull Variation variation,

core-api/src/test/java/com/optimizely/ab/notification/ActivateNotificationListenerTest.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,21 @@
1616
*/
1717
package com.optimizely.ab.notification;
1818

19-
import com.optimizely.ab.config.Experiment;
20-
import com.optimizely.ab.config.Variation;
21-
import com.optimizely.ab.event.LogEvent;
22-
import org.junit.Before;
23-
import org.junit.Test;
24-
25-
import javax.annotation.Nonnull;
2619
import java.util.Collections;
2720
import java.util.Map;
2821

29-
import static org.junit.Assert.*;
22+
import javax.annotation.Nonnull;
23+
24+
import static org.junit.Assert.assertEquals;
25+
import org.junit.Before;
26+
import org.junit.Test;
3027
import static org.mockito.Mockito.mock;
3128

29+
import com.optimizely.ab.config.Experiment;
30+
import com.optimizely.ab.config.ExperimentCore;
31+
import com.optimizely.ab.config.Variation;
32+
import com.optimizely.ab.event.LogEvent;
33+
3234
public class ActivateNotificationListenerTest {
3335

3436
private static final Experiment EXPERIMENT = mock(Experiment.class);
@@ -64,7 +66,7 @@ public void testNotifyWithActivateNotificationArg() {
6466
private static class ActivateNotificationHandler extends ActivateNotificationListener {
6567

6668
@Override
67-
public void onActivate(@Nonnull Experiment experiment, @Nonnull String userId, @Nonnull Map<String, ?> attributes, @Nonnull Variation variation, @Nonnull LogEvent event) {
69+
public void onActivate(@Nonnull ExperimentCore experiment, @Nonnull String userId, @Nonnull Map<String, ?> attributes, @Nonnull Variation variation, @Nonnull LogEvent event) {
6870
assertEquals(EXPERIMENT, experiment);
6971
assertEquals(USER_ID, userId);
7072
assertEquals(USER_ATTRIBUTES, attributes);

0 commit comments

Comments
 (0)