@@ -158,8 +158,78 @@ private static ChangeSet<ItemDescriptor> makePartialChangeSet(FeatureFlag... fla
158158 null
159159 );
160160 }
161-
162- // ===== Tests =====
161+
162+ private static class LegacyDataStore implements DataStore {
163+ private final Map <DataKind , Map <String , ItemDescriptor >> data = new HashMap <>();
164+
165+ @ Override
166+ public void init (FullDataSet <ItemDescriptor > allData ) {
167+ data .clear ();
168+ for (Map .Entry <DataKind , KeyedItems <ItemDescriptor >> kindEntry : allData .getData ()) {
169+ DataKind kind = kindEntry .getKey ();
170+ Map <String , ItemDescriptor > items = new HashMap <>();
171+ for (Map .Entry <String , ItemDescriptor > itemEntry : kindEntry .getValue ().getItems ()) {
172+ items .put (itemEntry .getKey (), itemEntry .getValue ());
173+ }
174+ data .put (kind , items );
175+ }
176+ }
177+
178+ @ Override
179+ public boolean upsert (DataKind kind , String key , ItemDescriptor item ) {
180+ Map <String , ItemDescriptor > items = data .get (kind );
181+ if (items == null ) {
182+ items = new HashMap <>();
183+ data .put (kind , items );
184+ }
185+
186+ ItemDescriptor oldItem = items .get (key );
187+ if (oldItem != null && oldItem .getVersion () >= item .getVersion ()) {
188+ return false ;
189+ }
190+
191+ items .put (key , item );
192+ return true ;
193+ }
194+
195+ @ Override
196+ public ItemDescriptor get (DataKind kind , String key ) {
197+ Map <String , ItemDescriptor > items = data .get (kind );
198+ if (items != null ) {
199+ return items .get (key );
200+ }
201+ return null ;
202+ }
203+
204+ @ Override
205+ public KeyedItems <ItemDescriptor > getAll (DataKind kind ) {
206+ Map <String , ItemDescriptor > items = data .get (kind );
207+ if (items != null ) {
208+ return new KeyedItems <>(ImmutableList .copyOf (items .entrySet ()));
209+ }
210+ return new KeyedItems <>(ImmutableList .of ());
211+ }
212+
213+ @ Override
214+ public boolean isInitialized () {
215+ return !data .isEmpty ();
216+ }
217+
218+ @ Override
219+ public boolean isStatusMonitoringEnabled () {
220+ return false ;
221+ }
222+
223+ @ Override
224+ public DataStoreStatusProvider .CacheStats getCacheStats () {
225+ return null ;
226+ }
227+
228+ @ Override
229+ public void close () throws IOException {
230+ // No-op
231+ }
232+ }
163233
164234 @ Test
165235 public void sendsEventsOnInitForNewlyAddedFlags () throws Exception {
@@ -823,80 +893,6 @@ public void applyPartialChangeSetSendsEventsForFlagsWhoseSegmentsChanged() throw
823893 expectEvents (eventSink , "flag2" , "flag4" );
824894 }
825895
826- // Tests for legacy (non-transactional) data store path
827-
828- private static class LegacyDataStore implements DataStore {
829- private final Map <DataKind , Map <String , ItemDescriptor >> data = new HashMap <>();
830-
831- @ Override
832- public void init (FullDataSet <ItemDescriptor > allData ) {
833- data .clear ();
834- for (Map .Entry <DataKind , KeyedItems <ItemDescriptor >> kindEntry : allData .getData ()) {
835- DataKind kind = kindEntry .getKey ();
836- Map <String , ItemDescriptor > items = new HashMap <>();
837- for (Map .Entry <String , ItemDescriptor > itemEntry : kindEntry .getValue ().getItems ()) {
838- items .put (itemEntry .getKey (), itemEntry .getValue ());
839- }
840- data .put (kind , items );
841- }
842- }
843-
844- @ Override
845- public boolean upsert (DataKind kind , String key , ItemDescriptor item ) {
846- Map <String , ItemDescriptor > items = data .get (kind );
847- if (items == null ) {
848- items = new HashMap <>();
849- data .put (kind , items );
850- }
851-
852- ItemDescriptor oldItem = items .get (key );
853- if (oldItem != null && oldItem .getVersion () >= item .getVersion ()) {
854- return false ;
855- }
856-
857- items .put (key , item );
858- return true ;
859- }
860-
861- @ Override
862- public ItemDescriptor get (DataKind kind , String key ) {
863- Map <String , ItemDescriptor > items = data .get (kind );
864- if (items != null ) {
865- return items .get (key );
866- }
867- return null ;
868- }
869-
870- @ Override
871- public KeyedItems <ItemDescriptor > getAll (DataKind kind ) {
872- Map <String , ItemDescriptor > items = data .get (kind );
873- if (items != null ) {
874- return new KeyedItems <>(ImmutableList .copyOf (items .entrySet ()));
875- }
876- return new KeyedItems <>(ImmutableList .of ());
877- }
878-
879- @ Override
880- public boolean isInitialized () {
881- return !data .isEmpty ();
882- }
883-
884- @ Override
885- public boolean isStatusMonitoringEnabled () {
886- return false ;
887- }
888-
889- @ Override
890- public DataStoreStatusProvider .CacheStats getCacheStats () {
891- return null ;
892- }
893-
894- @ Override
895- public void close () throws IOException {
896- // No-op
897- }
898- }
899-
900896 @ Test
901897 public void applyFullChangeSetToLegacyStoreCallsInit () throws Exception {
902898 LegacyDataStore legacyStore = new LegacyDataStore ();
0 commit comments