11package com .flagsmith .mappers ;
22
33import com .fasterxml .jackson .databind .JsonNode ;
4+ import com .flagsmith .MapperFactory ;
45import com .flagsmith .flagengine .EngineConstants ;
56import com .flagsmith .flagengine .EnvironmentContext ;
67import com .flagsmith .flagengine .EvaluationContext ;
78import com .flagsmith .flagengine .FeatureContext ;
89import com .flagsmith .flagengine .FeatureValue ;
910import com .flagsmith .flagengine .IdentityContext ;
11+ import com .flagsmith .flagengine .Metadata ;
1012import com .flagsmith .flagengine .SegmentCondition ;
1113import com .flagsmith .flagengine .SegmentContext ;
1214import com .flagsmith .flagengine .SegmentRule ;
1315import com .flagsmith .flagengine .Segments ;
1416import com .flagsmith .flagengine .Traits ;
1517import com .flagsmith .flagengine .segments .constants .SegmentConditions ;
18+ import com .flagsmith .models .SegmentMetadata ;
1619import java .util .ArrayList ;
1720import java .util .HashMap ;
1821import java .util .List ;
@@ -200,11 +203,20 @@ private static Map<String, SegmentContext> mapIdentityOverridesToSegments(
200203 overrides .add (override );
201204 }
202205
206+ SegmentMetadata metadata = new SegmentMetadata ();
207+ metadata .setSource (SegmentMetadata .Source .IDENTITY_OVERRIDES );
208+
209+ Map <String , Object > metadataMap = MapperFactory .getMapper ()
210+ .convertValue (metadata ,
211+ new com .fasterxml .jackson .core .type .TypeReference <Map <String , Object >>() {
212+ });
213+
203214 SegmentContext segmentContext = new SegmentContext ()
204215 .withKey ("" ) // Identity override segments never use % Split operator
205216 .withName ("identity_overrides" )
206217 .withRules (List .of (segmentRule ))
207- .withOverrides (overrides );
218+ .withOverrides (overrides )
219+ .withMetadata (metadataMap );
208220
209221 segmentContexts .put (segmentKey , segmentContext );
210222 }
@@ -365,8 +377,6 @@ private static FeatureContext mapFeatureStateToFeatureContext(JsonNode featureSt
365377 * @return the segment context
366378 */
367379 private static SegmentContext mapSegmentToSegmentContext (JsonNode segment ) {
368- String segmentKey = segment .get ("id" ).asText ();
369-
370380 // Map rules
371381 List <SegmentRule > rules = new ArrayList <>();
372382 JsonNode segmentRules = segment .get ("rules" );
@@ -381,11 +391,23 @@ private static SegmentContext mapSegmentToSegmentContext(JsonNode segment) {
381391 overrides = mapEnvironmentDocumentFeatureStatesToFeatureContexts (segmentFeatureStates );
382392 }
383393
394+ // Map metadata
395+ SegmentMetadata metadata = new SegmentMetadata ();
396+ metadata .setSource (SegmentMetadata .Source .API );
397+ metadata .setFlagsmithId (segment .get ("id" ).asInt ());
398+
399+ Map <String , Object > metadataMap = MapperFactory .getMapper ()
400+ .convertValue (metadata ,
401+ new com .fasterxml .jackson .core .type .TypeReference <Map <String , Object >>() {
402+ });
403+
404+ String segmentKey = segment .get ("id" ).asText ();
384405 return new SegmentContext ()
385406 .withKey (segmentKey )
386407 .withName (segment .get ("name" ).asText ())
387408 .withRules (rules )
388- .withOverrides (overrides );
409+ .withOverrides (overrides )
410+ .withMetadata (metadataMap );
389411 }
390412
391413 /**
0 commit comments