Commit ef214b7
authored
[AI-FSSDK] [FSSDK-12813] Normalize decision event campaign_id, variation_id, and entity_id (#634)
* [FSSDK-12813] Normalize decision event campaign_id, variation_id, and entity_id
* [FSSDK-12813] Relax campaign_id/entity_id validation to non-empty string per updated spec
Per the updated FSSDK-12813 spec, decision-event campaign_id and impression
entity_id only require a non-empty string (IDs may be opaque, e.g.
"default-12345" or "layer_abc"). Fallback to experiment_id now fires only
when the value is null or "". variation_id retains the stricter
numeric-string-only contract.
- EventIdNormalizer: add isNonEmptyString predicate and route
normalizeCampaignId through it; isNumericString and normalizeVariationId
unchanged.
- EventIdNormalizerTest: add isNonEmptyString coverage; flip
normalizeCampaignId tests so non-numeric/whitespace inputs assert
passthrough; variation_id assertions unchanged.
- EventFactoryNormalizationTest: flip whitespace and non-numeric
campaign_id tests to passthrough; split the uniform-across-rule-types
test into opaque-passthrough and null-fallback variants; update
entity_id-mirrors-campaign_id and event-never-dropped tests to use
null/empty for the campaign_id fallback path and a non-numeric value
only for the variation_id null path.
* [FSSDK-12813] Remove ticket references from code comments per cross-sdk guideline
* [FSSDK-12813] Fix copyright year to 2026 in changed files
* [FSSDK-12813] Trigger CI
* [FSSDK-12813] Emit variation_id as JSON null instead of stripping the key
JacksonSerializer sets Include.NON_NULL globally, so any null field is
dropped from the wire payload unless overridden at the field level.
campaign_id and experiment_id already carried @JsonInclude(ALWAYS);
variation_id did not, so once normalization began returning null for
non-numeric / empty inputs, the entire variation_id key disappeared from
the payload — breaking cross-SDK byte-equivalence (all other SDKs emit
explicit JSON null).
Added @JsonInclude(ALWAYS) on Decision.variationId, plus a focused
serializer test that asserts "variation_id":null is present in the
serialized output when the value is null.1 parent ecb136d commit ef214b7
8 files changed
Lines changed: 876 additions & 44 deletions
File tree
- core-api/src
- main/java/com/optimizely/ab/event/internal
- payload
- test/java/com/optimizely/ab
- event/internal
- serializer
Lines changed: 9 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
97 | 97 | | |
98 | 98 | | |
99 | 99 | | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
100 | 105 | | |
101 | | - | |
| 106 | + | |
102 | 107 | | |
103 | | - | |
| 108 | + | |
104 | 109 | | |
105 | 110 | | |
106 | 111 | | |
107 | 112 | | |
108 | 113 | | |
109 | 114 | | |
110 | 115 | | |
111 | | - | |
| 116 | + | |
112 | 117 | | |
113 | 118 | | |
114 | 119 | | |
| |||
Lines changed: 111 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| 30 | + | |
30 | 31 | | |
31 | 32 | | |
32 | 33 | | |
| |||
Lines changed: 35 additions & 35 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| |||
618 | 618 | | |
619 | 619 | | |
620 | 620 | | |
621 | | - | |
| 621 | + | |
622 | 622 | | |
623 | 623 | | |
624 | 624 | | |
| |||
1810 | 1810 | | |
1811 | 1811 | | |
1812 | 1812 | | |
1813 | | - | |
1814 | | - | |
| 1813 | + | |
| 1814 | + | |
1815 | 1815 | | |
1816 | | - | |
1817 | | - | |
1818 | | - | |
1819 | | - | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
1820 | 1820 | | |
1821 | 1821 | | |
1822 | 1822 | | |
| |||
1853 | 1853 | | |
1854 | 1854 | | |
1855 | 1855 | | |
1856 | | - | |
1857 | | - | |
1858 | | - | |
1859 | | - | |
1860 | | - | |
1861 | | - | |
1862 | | - | |
1863 | | - | |
| 1856 | + | |
| 1857 | + | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
1864 | 1864 | | |
1865 | 1865 | | |
1866 | 1866 | | |
| |||
2013 | 2013 | | |
2014 | 2014 | | |
2015 | 2015 | | |
2016 | | - | |
| 2016 | + | |
2017 | 2017 | | |
2018 | 2018 | | |
2019 | 2019 | | |
| |||
3339 | 3339 | | |
3340 | 3340 | | |
3341 | 3341 | | |
3342 | | - | |
| 3342 | + | |
3343 | 3343 | | |
3344 | 3344 | | |
3345 | 3345 | | |
| |||
3384 | 3384 | | |
3385 | 3385 | | |
3386 | 3386 | | |
3387 | | - | |
| 3387 | + | |
3388 | 3388 | | |
3389 | 3389 | | |
3390 | 3390 | | |
| |||
3456 | 3456 | | |
3457 | 3457 | | |
3458 | 3458 | | |
3459 | | - | |
| 3459 | + | |
3460 | 3460 | | |
3461 | 3461 | | |
3462 | 3462 | | |
| |||
3485 | 3485 | | |
3486 | 3486 | | |
3487 | 3487 | | |
3488 | | - | |
| 3488 | + | |
3489 | 3489 | | |
3490 | 3490 | | |
3491 | 3491 | | |
| |||
3582 | 3582 | | |
3583 | 3583 | | |
3584 | 3584 | | |
3585 | | - | |
3586 | | - | |
| 3585 | + | |
| 3586 | + | |
3587 | 3587 | | |
3588 | | - | |
| 3588 | + | |
3589 | 3589 | | |
3590 | 3590 | | |
3591 | 3591 | | |
| |||
3606 | 3606 | | |
3607 | 3607 | | |
3608 | 3608 | | |
3609 | | - | |
3610 | | - | |
| 3609 | + | |
| 3610 | + | |
3611 | 3611 | | |
3612 | | - | |
| 3612 | + | |
3613 | 3613 | | |
3614 | 3614 | | |
3615 | 3615 | | |
| |||
3660 | 3660 | | |
3661 | 3661 | | |
3662 | 3662 | | |
3663 | | - | |
3664 | | - | |
3665 | | - | |
3666 | | - | |
3667 | | - | |
3668 | | - | |
3669 | | - | |
3670 | | - | |
| 3663 | + | |
| 3664 | + | |
| 3665 | + | |
| 3666 | + | |
| 3667 | + | |
| 3668 | + | |
| 3669 | + | |
| 3670 | + | |
3671 | 3671 | | |
3672 | 3672 | | |
3673 | 3673 | | |
| |||
Lines changed: 7 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| |||
267 | 267 | | |
268 | 268 | | |
269 | 269 | | |
270 | | - | |
| 270 | + | |
271 | 271 | | |
272 | 272 | | |
273 | 273 | | |
| |||
639 | 639 | | |
640 | 640 | | |
641 | 641 | | |
642 | | - | |
| 642 | + | |
643 | 643 | | |
644 | 644 | | |
645 | 645 | | |
| |||
2102 | 2102 | | |
2103 | 2103 | | |
2104 | 2104 | | |
| 2105 | + | |
2105 | 2106 | | |
2106 | 2107 | | |
2107 | 2108 | | |
| |||
2153 | 2154 | | |
2154 | 2155 | | |
2155 | 2156 | | |
2156 | | - | |
| 2157 | + | |
2157 | 2158 | | |
2158 | 2159 | | |
2159 | 2160 | | |
| |||
2177 | 2178 | | |
2178 | 2179 | | |
2179 | 2180 | | |
| 2181 | + | |
2180 | 2182 | | |
2181 | 2183 | | |
2182 | 2184 | | |
| |||
2195 | 2197 | | |
2196 | 2198 | | |
2197 | 2199 | | |
2198 | | - | |
| 2200 | + | |
2199 | 2201 | | |
2200 | 2202 | | |
2201 | 2203 | | |
| |||
0 commit comments