Skip to content

Commit bf6701e

Browse files
authored
Expose flag names in metadata (#850)
1 parent a79dd87 commit bf6701e

23 files changed

Lines changed: 492 additions & 242 deletions

File tree

api/src/main/java/io/split/android/client/events/SdkUpdateMetadata.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,16 @@ public final class SdkUpdateMetadata {
1919
public enum Type {
2020
/**
2121
* Feature flags were updated.
22+
* <p>
23+
* {@link #getNames()} returns the list of flag names that changed.
2224
*/
2325
FLAGS_UPDATE,
2426

2527
/**
26-
* Rule-based segments were updated.
28+
* Segments were updated (rule-based segments, memberships, or large segments).
2729
* <p>
30+
* Note: {@link #getNames()} always returns an empty list for this type.
31+
* Segment names are not included in the metadata.
2832
*/
2933
SEGMENTS_UPDATE
3034
}
@@ -59,10 +63,10 @@ public Type getType() {
5963
/**
6064
* Returns the list of entity names that changed in this update.
6165
* <p>
62-
* For {@link Type#FLAGS_UPDATE}, this contains flag names.
63-
* For {@link Type#SEGMENTS_UPDATE}, this contains rule-based segment names.
66+
* For {@link Type#FLAGS_UPDATE}, this contains flag names that were updated.
67+
* For {@link Type#SEGMENTS_UPDATE}, this is always an empty list (segment names are not included).
6468
*
65-
* @return the list of updated entity names, never null (empty list if none)
69+
* @return the list of updated entity names, never null (empty list for SEGMENTS_UPDATE or if none)
6670
*/
6771
@NonNull
6872
public List<String> getNames() {

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ apply plugin: 'com.vanniktech.maven.publish'
1919
apply from: "$rootDir/gradle/jacoco-root.gradle"
2020

2121
ext {
22-
splitVersion = '5.5.0-rc5'
22+
splitVersion = '5.5.0-rc6'
2323
jacocoVersion = '0.8.8'
2424
}
2525

events-domain/src/main/java/io/split/android/client/events/metadata/EventMetadataHelpers.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import androidx.annotation.Nullable;
44

55
import java.util.ArrayList;
6+
import java.util.Collections;
67
import java.util.HashSet;
78
import java.util.List;
89

@@ -31,15 +32,16 @@ public static EventMetadata createUpdatedFlagsMetadata(List<String> updatedFlagN
3132
}
3233

3334
/**
34-
* Creates metadata for SDK_UPDATE events when rule-based segments are updated.
35+
* Creates metadata for SDK_UPDATE events when segments are updated.
36+
* <p>
37+
* SEGMENTS_UPDATE always has empty names - segment names are not included in the metadata.
3538
*
36-
* @param updatedSegmentNames the list of rule-based segment names that were updated
37-
* @return the event metadata with TYPE=SEGMENTS_UPDATE and NAMES containing the segment names
39+
* @return the event metadata with TYPE=SEGMENTS_UPDATE and empty NAMES list
3840
*/
39-
public static EventMetadata createUpdatedSegmentsMetadata(List<String> updatedSegmentNames) {
41+
public static EventMetadata createUpdatedSegmentsMetadata() {
4042
return new EventMetadataBuilder()
4143
.put(MetadataKeys.TYPE, MetadataKeys.TYPE_SEGMENTS_UPDATE)
42-
.put(MetadataKeys.NAMES, new ArrayList<>(new HashSet<>(updatedSegmentNames)))
44+
.put(MetadataKeys.NAMES, Collections.emptyList())
4345
.build();
4446
}
4547

events-domain/src/test/java/io/split/android/client/events/TypedTaskConversionTest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,15 @@ public void convertForSdkUpdateConvertsFlagsMetadataCorrectly() {
3636

3737
@Test
3838
public void convertForSdkUpdateConvertsSegmentsMetadataCorrectly() {
39-
List<String> expectedSegments = Arrays.asList("segment1", "segment2");
40-
41-
EventMetadata eventMetadata = EventMetadataHelpers.createUpdatedSegmentsMetadata(expectedSegments);
39+
// SEGMENTS_UPDATE always has empty names
40+
EventMetadata eventMetadata = EventMetadataHelpers.createUpdatedSegmentsMetadata();
4241

4342
// Call conversion method
4443
SdkUpdateMetadata converted = TypedTaskConverter.convertForSdkUpdate(eventMetadata);
4544

4645
assertNotNull(converted);
4746
assertEquals(SdkUpdateMetadata.Type.SEGMENTS_UPDATE, converted.getType());
48-
assertEquals(expectedSegments.size(), converted.getNames().size());
49-
assertTrue(converted.getNames().containsAll(expectedSegments));
47+
assertTrue("Names should be empty for SEGMENTS_UPDATE", converted.getNames().isEmpty());
5048
}
5149

5250
@Test

events-domain/src/test/java/io/split/android/client/events/metadata/EventMetadataHelpersTest.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,16 @@ public void createUpdatedFlagsMetadataContainsTypeAndNames() {
3333
// Tests for createUpdatedSegmentsMetadata
3434
@Test
3535
@SuppressWarnings("unchecked")
36-
public void createUpdatedSegmentsMetadataContainsTypeAndNames() {
37-
List<String> segments = Arrays.asList("segment1", "segment2");
38-
EventMetadata metadata = EventMetadataHelpers.createUpdatedSegmentsMetadata(segments);
36+
public void createUpdatedSegmentsMetadataContainsTypeAndEmptyNames() {
37+
EventMetadata metadata = EventMetadataHelpers.createUpdatedSegmentsMetadata();
3938

4039
assertTrue(metadata.containsKey(MetadataKeys.TYPE));
4140
assertEquals(MetadataKeys.TYPE_SEGMENTS_UPDATE, metadata.get(MetadataKeys.TYPE));
4241

43-
// Check names
42+
// Check names - should always be empty
4443
assertTrue(metadata.containsKey(MetadataKeys.NAMES));
4544
List<String> result = (List<String>) metadata.get(MetadataKeys.NAMES);
46-
assertEquals(2, result.size());
47-
assertTrue(result.contains("segment1"));
48-
assertTrue(result.contains("segment2"));
45+
assertTrue("Names should be empty for SEGMENTS_UPDATE", result.isEmpty());
4946
}
5047

5148
// Tests for createReadyMetadata

0 commit comments

Comments
 (0)