Skip to content

Commit ee4848e

Browse files
jaeoptclaude
andcommitted
[FSSDK-13023] Fix Holdout parsers to read excludeTargetedDeliveries as camelCase
GSON, org.json, and JSON-simple looked for the snake_case "exclude_targeted_deliveries" key while every other datafile field is camelCase, so a real datafile using the conventional camelCase spelling silently parsed as false in those 3 parsers. Jackson already matched the conventional spelling. Aligns all 4 parsers on "excludeTargetedDeliveries", turning the previously-red parser tests green. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 95b0e68 commit ee4848e

4 files changed

Lines changed: 7 additions & 7 deletions

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public Holdout(@JsonProperty("id") @Nonnull String id,
108108
@JsonProperty("variations") @Nonnull List<Variation> variations,
109109
@JsonProperty("trafficAllocation") @Nonnull List<TrafficAllocation> trafficAllocation,
110110
@JsonProperty("includedRules") @Nullable List<String> includedRules,
111-
@JsonProperty("exclude_targeted_deliveries") @Nullable Boolean excludeTargetedDeliveries) {
111+
@JsonProperty("excludeTargetedDeliveries") @Nullable Boolean excludeTargetedDeliveries) {
112112
this.id = id;
113113
this.key = key;
114114
this.status = status;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,8 @@ static Holdout parseHoldout(JsonObject holdoutJson, JsonDeserializationContext c
213213
}
214214

215215
boolean excludeTargetedDeliveries = false;
216-
if (holdoutJson.has("exclude_targeted_deliveries") && !holdoutJson.get("exclude_targeted_deliveries").isJsonNull()) {
217-
excludeTargetedDeliveries = holdoutJson.get("exclude_targeted_deliveries").getAsBoolean();
216+
if (holdoutJson.has("excludeTargetedDeliveries") && !holdoutJson.get("excludeTargetedDeliveries").isJsonNull()) {
217+
excludeTargetedDeliveries = holdoutJson.get("excludeTargetedDeliveries").getAsBoolean();
218218
}
219219

220220
return new Holdout(id, key, status, audienceIds, conditions, variations, trafficAllocations, includedRules, excludeTargetedDeliveries);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,8 @@ private List<Holdout> parseHoldouts(JSONArray holdoutJson) {
239239
}
240240

241241
boolean excludeTargetedDeliveries = false;
242-
if (holdoutObject.has("exclude_targeted_deliveries") && !holdoutObject.isNull("exclude_targeted_deliveries")) {
243-
excludeTargetedDeliveries = holdoutObject.getBoolean("exclude_targeted_deliveries");
242+
if (holdoutObject.has("excludeTargetedDeliveries") && !holdoutObject.isNull("excludeTargetedDeliveries")) {
243+
excludeTargetedDeliveries = holdoutObject.getBoolean("excludeTargetedDeliveries");
244244
}
245245

246246
holdouts.add(new Holdout(id, key, status, audienceIds, conditions, variations,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,8 @@ private List<Holdout> parseHoldouts(JSONArray holdoutJson) {
258258
}
259259

260260
boolean excludeTargetedDeliveries = false;
261-
if (hoObject.containsKey("exclude_targeted_deliveries") && hoObject.get("exclude_targeted_deliveries") != null) {
262-
excludeTargetedDeliveries = (Boolean) hoObject.get("exclude_targeted_deliveries");
261+
if (hoObject.containsKey("excludeTargetedDeliveries") && hoObject.get("excludeTargetedDeliveries") != null) {
262+
excludeTargetedDeliveries = (Boolean) hoObject.get("excludeTargetedDeliveries");
263263
}
264264

265265
holdouts.add(new Holdout(id, key, status, audienceIds, conditions, variations,

0 commit comments

Comments
 (0)