Skip to content

Commit 427c153

Browse files
Remove groupId from holdout
1 parent ccf697b commit 427c153

File tree

6 files changed

+38
-71
lines changed

6 files changed

+38
-71
lines changed

core-api/src/main/java/com/optimizely/ab/config/Holdout.java

Lines changed: 22 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ public class Holdout implements ExperimentCore {
3838
private final String id;
3939
private final String key;
4040
private final String status;
41-
private final String groupId;
42-
41+
4342
private final List<String> audienceIds;
4443
private final Condition<AudienceIdCondition> audienceConditions;
4544
private final List<Variation> variations;
@@ -71,44 +70,31 @@ public String toString() {
7170

7271
@VisibleForTesting
7372
public Holdout(String id, String key) {
74-
this(id, key, null, Collections.emptyList(), null, Collections.emptyList(), Collections.emptyList(), null, null, "");
73+
this(id, key, "Running", Collections.emptyList(), null, Collections.emptyList(), Collections.emptyList(), null, null);
7574
}
7675

76+
// Keep only this constructor and add @JsonCreator to it
7777
@JsonCreator
78-
public Holdout(@JsonProperty("id") String id,
79-
@JsonProperty("key") String key,
80-
@JsonProperty("status") String status,
81-
@JsonProperty("audienceIds") List<String> audienceIds,
82-
@JsonProperty("audienceConditions") Condition audienceConditions,
83-
@JsonProperty("variations") List<Variation> variations,
84-
@JsonProperty("trafficAllocation") List<TrafficAllocation> trafficAllocation,
85-
@JsonProperty("includedFlags") List<String> includedFlags,
86-
@JsonProperty("excludedFlags") List<String> excludedFlags) {
87-
this(id, key, status, audienceIds, audienceConditions, variations, trafficAllocation, includedFlags, excludedFlags, "");
88-
}
89-
90-
public Holdout(@Nonnull String id,
91-
@Nonnull String key,
92-
@Nullable String status,
93-
@Nonnull List<String> audienceIds,
94-
@Nullable Condition audienceConditions,
95-
@Nonnull List<Variation> variations,
96-
@Nonnull List<TrafficAllocation> trafficAllocation,
97-
@Nullable List<String> includedFlags,
98-
@Nullable List<String> excludedFlags,
99-
@Nonnull String groupId) {
78+
public Holdout(@JsonProperty("id") @Nonnull String id,
79+
@JsonProperty("key") @Nonnull String key,
80+
@JsonProperty("status") @Nonnull String status,
81+
@JsonProperty("audienceIds") @Nonnull List<String> audienceIds,
82+
@JsonProperty("audienceConditions") @Nullable Condition audienceConditions,
83+
@JsonProperty("variations") @Nonnull List<Variation> variations,
84+
@JsonProperty("trafficAllocation") @Nonnull List<TrafficAllocation> trafficAllocation,
85+
@JsonProperty("includedFlags") @Nullable List<String> includedFlags,
86+
@JsonProperty("excludedFlags") @Nullable List<String> excludedFlags) {
10087
this.id = id;
10188
this.key = key;
102-
this.status = status == null ? HoldoutStatus.RUNNING.toString() : status;
103-
this.audienceIds = Collections.unmodifiableList(audienceIds);
89+
this.status = status;
90+
this.audienceIds = audienceIds;
10491
this.audienceConditions = audienceConditions;
105-
this.variations = Collections.unmodifiableList(variations);
106-
this.trafficAllocation = Collections.unmodifiableList(trafficAllocation);
92+
this.variations = variations;
93+
this.trafficAllocation = trafficAllocation;
10794
this.includedFlags = includedFlags == null ? Collections.emptyList() : Collections.unmodifiableList(includedFlags);
10895
this.excludedFlags = excludedFlags == null ? Collections.emptyList() : Collections.unmodifiableList(excludedFlags);
109-
this.groupId = groupId;
110-
this.variationKeyToVariationMap = ProjectConfigUtils.generateNameMapping(variations);
111-
this.variationIdToVariationMap = ProjectConfigUtils.generateIdMapping(variations);
96+
this.variationKeyToVariationMap = ProjectConfigUtils.generateNameMapping(this.variations);
97+
this.variationIdToVariationMap = ProjectConfigUtils.generateIdMapping(this.variations);
11298
}
11399

114100
public String getId() {
@@ -151,6 +137,10 @@ public List<TrafficAllocation> getTrafficAllocation() {
151137
return trafficAllocation;
152138
}
153139

140+
public String getGroupId() {
141+
return "";
142+
}
143+
154144
public List<String> getIncludedFlags() {
155145
return includedFlags;
156146
}
@@ -159,10 +149,6 @@ public List<String> getExcludedFlags() {
159149
return excludedFlags;
160150
}
161151

162-
public String getGroupId() {
163-
return groupId;
164-
}
165-
166152
public boolean isActive() {
167153
return status.equals(Holdout.HoldoutStatus.RUNNING.toString());
168154
}
@@ -176,7 +162,6 @@ public String toString() {
176162
return "Holdout {"
177163
+ "id='" + id + '\''
178164
+ ", key='" + key + '\''
179-
+ ", groupId='" + groupId + '\''
180165
+ ", status='" + status + '\''
181166
+ ", audienceIds=" + audienceIds
182167
+ ", audienceConditions=" + audienceConditions

core-api/src/main/java/com/optimizely/ab/config/parser/GsonHelpers.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ static Experiment parseExperiment(JsonObject experimentJson, JsonDeserialization
153153
return parseExperiment(experimentJson, "", context);
154154
}
155155

156-
static Holdout parseHoldout(JsonObject holdoutJson, String groupId, JsonDeserializationContext context) {
156+
static Holdout parseHoldout(JsonObject holdoutJson, JsonDeserializationContext context) {
157157
String id = holdoutJson.get("id").getAsString();
158158
String key = holdoutJson.get("key").getAsString();
159159
String status = holdoutJson.get("status").getAsString();
@@ -187,11 +187,7 @@ static Holdout parseHoldout(JsonObject holdoutJson, String groupId, JsonDeserial
187187
}
188188
}
189189

190-
return new Holdout(id, key, status, audienceIds, conditions, variations, trafficAllocations, includedFlags, excludedFlags, groupId);
191-
}
192-
193-
static Holdout parseHoldout(JsonObject holdoutJson, JsonDeserializationContext context) {
194-
return parseHoldout(holdoutJson, "", context);
190+
return new Holdout(id, key, status, audienceIds, conditions, variations, trafficAllocations, includedFlags, excludedFlags);
195191
}
196192

197193
static FeatureFlag parseFeatureFlag(JsonObject featureFlagJson, JsonDeserializationContext context) {

core-api/src/main/java/com/optimizely/ab/config/parser/JsonConfigParser.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -173,12 +173,8 @@ private List<Experiment> parseExperiments(JSONArray experimentJson, String group
173173

174174
return experiments;
175175
}
176-
176+
177177
private List<Holdout> parseHoldouts(JSONArray holdoutJson) {
178-
return parseHoldouts(holdoutJson, "");
179-
}
180-
181-
private List<Holdout> parseHoldouts(JSONArray holdoutJson, String groupId) {
182178
List<Holdout> holdouts = new ArrayList<Holdout>(holdoutJson.length());
183179

184180
for (int i = 0; i < holdoutJson.length(); i++) {
@@ -235,7 +231,7 @@ private List<Holdout> parseHoldouts(JSONArray holdoutJson, String groupId) {
235231
}
236232

237233
holdouts.add(new Holdout(id, key, status, audienceIds, conditions, variations,
238-
trafficAllocations, includedFlags, excludedFlags, groupId));
234+
trafficAllocations, includedFlags, excludedFlags));
239235
}
240236

241237
return holdouts;

core-api/src/main/java/com/optimizely/ab/config/parser/JsonSimpleConfigParser.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,7 @@ private List<Experiment> parseExperiments(JSONArray experimentJson, String group
181181
return experiments;
182182
}
183183

184-
185184
private List<Holdout> parseHoldouts(JSONArray holdoutJson) {
186-
return parseHoldouts(holdoutJson, "");
187-
}
188-
189-
private List<Holdout> parseHoldouts(JSONArray holdoutJson, String groupId) {
190185
List<Holdout> holdouts = new ArrayList<Holdout>(holdoutJson.size());
191186

192187
for (Object obj : holdoutJson) {
@@ -233,7 +228,7 @@ private List<Holdout> parseHoldouts(JSONArray holdoutJson, String groupId) {
233228
}
234229

235230
holdouts.add(new Holdout(id, key, status, audienceIds, conditions, variations,
236-
trafficAllocations, includedFlags, excludedFlags, groupId));
231+
trafficAllocations, includedFlags, excludedFlags));
237232
}
238233

239234
return holdouts;

core-api/src/test/java/com/optimizely/ab/config/HoldoutConfigTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ public void setUp() {
4242
globalHoldout = new Holdout("global1", "global_holdout");
4343

4444
// Holdout with included flags
45-
includedHoldout = new Holdout("included1", "included_holdout", null,
45+
includedHoldout = new Holdout("included1", "included_holdout", "Running",
4646
Collections.emptyList(), null, Collections.emptyList(),
47-
Collections.emptyList(), Arrays.asList("flag1", "flag2"), null, "");
47+
Collections.emptyList(), Arrays.asList("flag1", "flag2"), null);
4848

4949
// Global holdout with excluded flags
50-
excludedHoldout = new Holdout("excluded1", "excluded_holdout", null,
50+
excludedHoldout = new Holdout("excluded1", "excluded_holdout", "Running",
5151
Collections.emptyList(), null, Collections.emptyList(),
52-
Collections.emptyList(), null, Arrays.asList("flag3"), "");
52+
Collections.emptyList(), null, Arrays.asList("flag3"));
5353

5454
// Another global holdout for testing
5555
mixedHoldout = new Holdout("mixed1", "mixed_holdout");
@@ -210,9 +210,9 @@ public void testEmptyFlagHoldouts() {
210210
@Test
211211
public void testHoldoutWithBothIncludedAndExcluded() {
212212
// Create a holdout with both included and excluded flags (included takes precedence)
213-
Holdout bothHoldout = new Holdout("both1", "both_holdout", null,
213+
Holdout bothHoldout = new Holdout("both1", "both_holdout", "Running",
214214
Collections.emptyList(), null, Collections.emptyList(),
215-
Collections.emptyList(), Arrays.asList("flag1"), Arrays.asList("flag2"), "");
215+
Collections.emptyList(), Arrays.asList("flag1"), Arrays.asList("flag2"));
216216

217217
List<Holdout> holdouts = Arrays.asList(globalHoldout, bothHoldout);
218218
HoldoutConfig config = new HoldoutConfig(holdouts);

core-api/src/test/java/com/optimizely/ab/config/ValidProjectConfigV4.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -551,8 +551,7 @@ public class ValidProjectConfigV4 {
551551
)
552552
),
553553
null,
554-
null,
555-
""
554+
null
556555
);
557556

558557
private static final Holdout HOLDOUT_ZERO_TRAFFIC_HOLDOUT = new Holdout(
@@ -571,8 +570,7 @@ public class ValidProjectConfigV4 {
571570
)
572571
),
573572
null,
574-
null,
575-
""
573+
null
576574
);
577575

578576
private static final Holdout HOLDOUT_INCLUDED_FLAGS_HOLDOUT = new Holdout(
@@ -595,8 +593,7 @@ public class ValidProjectConfigV4 {
595593
"3926744821",
596594
"3281420120"
597595
),
598-
null,
599-
""
596+
null
600597
);
601598

602599
private static final Holdout HOLDOUT_EXCLUDED_FLAGS_HOLDOUT = new Holdout(
@@ -619,8 +616,7 @@ public class ValidProjectConfigV4 {
619616
"2591051011",
620617
"2079378557",
621618
"3263342226"
622-
),
623-
""
619+
)
624620
);
625621

626622
private static final Holdout HOLDOUT_TYPEDAUDIENCE_HOLDOUT = new Holdout(
@@ -644,8 +640,7 @@ public class ValidProjectConfigV4 {
644640
)
645641
),
646642
Collections.<String>emptyList(),
647-
Collections.<String>emptyList(),
648-
""
643+
Collections.<String>emptyList()
649644
);
650645
private static final String LAYER_TYPEDAUDIENCE_EXPERIMENT_ID = "1630555627";
651646
private static final String EXPERIMENT_TYPEDAUDIENCE_EXPERIMENT_ID = "1323241597";

0 commit comments

Comments
 (0)