33import co .featbit .commons .json .JsonHelper ;
44import co .featbit .server .exterior .DataStoreTypes ;
55import com .google .common .collect .ImmutableMap ;
6+ import com .google .gson .annotations .Expose ;
67import com .google .gson .annotations .JsonAdapter ;
78
9+ import java .time .Instant ;
810import java .util .Collections ;
11+ import java .util .Date ;
912import java .util .List ;
1013import java .util .Map ;
1114
@@ -152,24 +155,22 @@ Map<DataStoreTypes.Category, Map<String, DataStoreTypes.Item>> toStorageType() {
152155 }
153156 }
154157
155- static class Segment implements DataStoreTypes . Item {
156-
158+ @ JsonAdapter ( JsonHelper . AfterJsonParseDeserializableTypeAdapterFactory . class )
159+ static class Segment implements DataStoreTypes . Item , JsonHelper . AfterJsonParseDeserializable {
157160 private final String id ;
158-
159161 private final Boolean isArchived ;
160-
161- private final Long timestamp ;
162-
162+ @ Expose (serialize = false )
163+ final Date updatedAt ;
164+ @ Expose (deserialize = false )
165+ private Long timestamp ;
163166 private final List <String > included ;
164-
165167 private final List <String > excluded ;
166-
167168 private final List <TargetRule > rules ;
168169
169- Segment (String id , Boolean isArchived , Long timestamp , List <String > included , List <String > excluded , List <TargetRule > rules ) {
170+ Segment (String id , Boolean isArchived , Date updatedAt , List <String > included , List <String > excluded , List <TargetRule > rules ) {
170171 this .id = id ;
171172 this .isArchived = isArchived ;
172- this .timestamp = timestamp ;
173+ this .updatedAt = updatedAt ;
173174 this .included = included ;
174175 this .excluded = excluded ;
175176 this .rules = rules ;
@@ -222,12 +223,20 @@ public Boolean isMatchUser(String userKeyId) {
222223 public DataStoreTypes .Item toArchivedItem () {
223224 return new ArchivedItem (this .id , this .timestamp );
224225 }
226+
227+ @ Override
228+ public void afterDeserialization () {
229+ this .timestamp = updatedAt .getTime ();
230+ }
225231 }
226232
227233 @ JsonAdapter (JsonHelper .AfterJsonParseDeserializableTypeAdapterFactory .class )
228234 static class FeatureFlag implements DataStoreTypes .Item , JsonHelper .AfterJsonParseDeserializable {
229235 final String id ;
230- private final Long timestamp ;
236+ @ Expose (serialize = false )
237+ final Date updatedAt ;
238+ @ Expose (deserialize = false )
239+ private Long timestamp ;
231240 private final boolean isArchived ;
232241 private final boolean exptIncludeAllTargets ;
233242 private final boolean isEnabled ;
@@ -239,11 +248,12 @@ static class FeatureFlag implements DataStoreTypes.Item, JsonHelper.AfterJsonPar
239248 private final List <TargetRule > rules ;
240249 private final Fallthrough fallthrough ;
241250 private final String disabledVariationId ;
242- private transient Map <String , Variation > variationMap ;
251+ @ Expose (serialize = false , deserialize = false )
252+ private Map <String , Variation > variationMap ;
243253
244- FeatureFlag (String id , Long timestamp , boolean isArchived , boolean exptIncludeAllTargets , boolean isEnabled , String name , String key , String variationType , List <Variation > variations , List <TargetUser > targetUsers , List <TargetRule > rules , Fallthrough fallthrough , String disabledVariationId ) {
254+ FeatureFlag (String id , Date updatedAt , boolean isArchived , boolean exptIncludeAllTargets , boolean isEnabled , String name , String key , String variationType , List <Variation > variations , List <TargetUser > targetUsers , List <TargetRule > rules , Fallthrough fallthrough , String disabledVariationId ) {
245255 this .id = id ;
246- this .timestamp = timestamp ;
256+ this .updatedAt = updatedAt ;
247257 this .isArchived = isArchived ;
248258 this .exptIncludeAllTargets = exptIncludeAllTargets ;
249259 this .isEnabled = isEnabled ;
@@ -327,6 +337,7 @@ public String getVariationType() {
327337
328338 @ Override
329339 public void afterDeserialization () {
340+ this .timestamp = updatedAt .getTime ();
330341 if (!isArchived ) {
331342 ImmutableMap .Builder <String , Variation > builder = ImmutableMap .builder ();
332343 for (Variation variation : getVariations ()) {
0 commit comments