8484import io .split .android .client .storage .db .SplitRoomDatabase ;
8585import io .split .android .client .storage .db .StorageFactory ;
8686import io .split .android .client .storage .events .PersistentEventsStorage ;
87+ import io .split .android .client .storage .general .GeneralInfoStorage ;
8788import io .split .android .client .storage .impressions .PersistentImpressionsStorage ;
89+ import io .split .android .client .storage .rbs .LazyRuleBasedSegmentStorageProvider ;
90+ import io .split .android .client .storage .rbs .RuleBasedSegmentStorage ;
91+ import io .split .android .client .storage .rbs .RuleBasedSegmentStorageImpl ;
92+ import io .split .android .client .storage .rbs .RuleBasedSegmentStorageProvider ;
8893import io .split .android .client .storage .splits .SplitsStorage ;
8994import io .split .android .client .telemetry .TelemetrySynchronizer ;
9095import io .split .android .client .telemetry .TelemetrySynchronizerImpl ;
9398import io .split .android .client .telemetry .storage .TelemetryStorage ;
9499import io .split .android .client .utils .Utils ;
95100import io .split .android .client .utils .logger .Logger ;
101+ import io .split .android .engine .experiments .ParserCommons ;
102+ import io .split .android .engine .experiments .RuleBasedSegmentParser ;
96103
97104class SplitFactoryHelper {
98105 private static final int DB_MAGIC_CHARS_COUNT = 4 ;
@@ -169,6 +176,7 @@ SplitStorageContainer buildStorageContainer(UserConsent userConsentStatus,
169176 StorageFactory .getPersistentEventsStorage (splitRoomDatabase , splitCipher );
170177 PersistentImpressionsStorage persistentImpressionsStorage =
171178 StorageFactory .getPersistentImpressionsStorage (splitRoomDatabase , splitCipher );
179+ GeneralInfoStorage generalInfoStorage = StorageFactory .getGeneralInfoStorage (splitRoomDatabase );
172180 return new SplitStorageContainer (
173181 StorageFactory .getSplitsStorage (splitRoomDatabase , splitCipher ),
174182 StorageFactory .getMySegmentsStorage (splitRoomDatabase , splitCipher ),
@@ -184,7 +192,9 @@ SplitStorageContainer buildStorageContainer(UserConsent userConsentStatus,
184192 StorageFactory .getPersistentAttributesStorage (splitRoomDatabase , splitCipher ),
185193 getTelemetryStorage (shouldRecordTelemetry , telemetryStorage ),
186194 StorageFactory .getImpressionsObserverCachePersistentStorage (splitRoomDatabase , observerCacheExpirationPeriod , impressionsObserverExecutor ),
187- StorageFactory .getGeneralInfoStorage (splitRoomDatabase ));
195+ generalInfoStorage ,
196+ StorageFactory .getRuleBasedSegmentStorageProvider (),
197+ StorageFactory .getPersistentRuleBasedSegmentStorage (splitRoomDatabase , splitCipher , generalInfoStorage ));
188198 }
189199
190200 SplitApiFacade buildApiFacade (SplitClientConfig splitClientConfig ,
@@ -462,6 +472,21 @@ ExecutorService getImpressionsLoggingTaskExecutor() {
462472 new ThreadPoolExecutor .CallerRunsPolicy ());
463473 }
464474
475+ @ NonNull
476+ static ParserCommons getParserCommons (SplitStorageContainer storageContainer ) {
477+ RuleBasedSegmentStorageProvider ruleBasedSegmentStorageProvider = storageContainer .getRuleBasedSegmentStorageProvider ();
478+ ParserCommons parserCommons = new ParserCommons (
479+ storageContainer .getMySegmentsStorageContainer (),
480+ storageContainer .getMyLargeSegmentsStorageContainer (),
481+ ruleBasedSegmentStorageProvider );
482+ RuleBasedSegmentParser ruleBasedSegmentParser = new RuleBasedSegmentParser (parserCommons );
483+
484+ RuleBasedSegmentStorage ruleBasedSegmentStorage =
485+ new RuleBasedSegmentStorageImpl (storageContainer .getPersistentRuleBasedSegmentStorage (), ruleBasedSegmentParser );
486+ ((LazyRuleBasedSegmentStorageProvider ) ruleBasedSegmentStorageProvider ).set (ruleBasedSegmentStorage );
487+ return parserCommons ;
488+ }
489+
465490 private TelemetryStorage getTelemetryStorage (boolean shouldRecordTelemetry , TelemetryStorage telemetryStorage ) {
466491 if (telemetryStorage != null ) {
467492 return telemetryStorage ;
0 commit comments