5353import io .split .engine .experiments .SplitFetcher ;
5454import io .split .engine .experiments .SplitFetcherImp ;
5555import io .split .engine .experiments .SplitParser ;
56+ import io .split .engine .experiments .RuleBasedSegmentParser ;
5657import io .split .engine .experiments .SplitSynchronizationTask ;
5758import io .split .engine .segments .SegmentChangeFetcher ;
5859import io .split .engine .segments .SegmentSynchronizationTaskImp ;
6667import io .split .storages .SplitCache ;
6768import io .split .storages .SplitCacheConsumer ;
6869import io .split .storages .SplitCacheProducer ;
70+ import io .split .storages .RuleBasedSegmentCacheConsumer ;
71+ import io .split .storages .RuleBasedSegmentCache ;
6972import io .split .storages .enums .OperationMode ;
7073import io .split .storages .memory .InMemoryCacheImp ;
74+ import io .split .storages .memory .RuleBasedSegmentCacheInMemoryImp ;
7175import io .split .storages .memory .SegmentCacheInMemoryImpl ;
7276import io .split .storages .pluggable .adapters .UserCustomEventAdapterProducer ;
7377import io .split .storages .pluggable .adapters .UserCustomImpressionAdapterConsumer ;
123127public class SplitFactoryImpl implements SplitFactory {
124128 private static final org .slf4j .Logger _log = LoggerFactory .getLogger (SplitFactoryImpl .class );
125129 private static final String LEGACY_LOG_MESSAGE = "The sdk initialize in localhost mode using Legacy file. The splitFile or "
126- +
127- "inputStream doesn't add it to the config." ;
130+ + "inputStream were not added to the config." ;
128131 private final static long SSE_CONNECT_TIMEOUT = 30000 ;
129132 private final static long SSE_SOCKET_TIMEOUT = 70000 ;
130133
@@ -204,6 +207,7 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn
204207 SegmentCache segmentCache = new SegmentCacheInMemoryImpl ();
205208 FlagSetsFilter flagSetsFilter = new FlagSetsFilterImpl (config .getSetsFilter ());
206209 SplitCache splitCache = new InMemoryCacheImp (flagSetsFilter );
210+ RuleBasedSegmentCache ruleBasedSegmentCache = new RuleBasedSegmentCacheInMemoryImp ();
207211 ImpressionsStorage impressionsStorage = new InMemoryImpressionsStorage (config .impressionsQueueSize ());
208212 _splitCache = splitCache ;
209213 _segmentCache = segmentCache ;
@@ -215,8 +219,11 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn
215219 _segmentSynchronizationTaskImp = buildSegments (config , segmentCache , splitCache );
216220
217221 SplitParser splitParser = new SplitParser ();
222+ RuleBasedSegmentParser ruleBasedSegmentParser = new RuleBasedSegmentParser ();
223+
218224 // SplitFetcher
219- _splitFetcher = buildSplitFetcher (splitCache , splitParser , flagSetsFilter );
225+ _splitFetcher = buildSplitFetcher (splitCache , splitParser , flagSetsFilter , ruleBasedSegmentParser , ruleBasedSegmentCache );
226+
220227
221228 // SplitSynchronizationTask
222229 _splitSynchronizationTask = new SplitSynchronizationTask (_splitFetcher ,
@@ -244,7 +251,7 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn
244251 config .getThreadFactory ());
245252
246253 // Evaluator
247- _evaluator = new EvaluatorImp (splitCache , segmentCache );
254+ _evaluator = new EvaluatorImp (splitCache , segmentCache , ruleBasedSegmentCache );
248255
249256 // SplitClient
250257 _client = new SplitClientImpl (this ,
@@ -301,6 +308,9 @@ protected SplitFactoryImpl(String apiToken, SplitClientConfig config, CustomStor
301308 customStorageWrapper );
302309 UserCustomSplitAdapterConsumer userCustomSplitAdapterConsumer = new UserCustomSplitAdapterConsumer (
303310 customStorageWrapper );
311+ // TODO Update the instance to UserCustomRuleBasedSegmentAdapterConsumer
312+ RuleBasedSegmentCacheConsumer userCustomRuleBasedSegmentAdapterConsumer = new RuleBasedSegmentCacheInMemoryImp ();
313+
304314 // TODO migrate impressions sender to Task instead manager and not instantiate
305315 // Producer here.
306316 UserCustomImpressionAdapterConsumer userCustomImpressionAdapterConsumer = new UserCustomImpressionAdapterConsumer ();
@@ -333,7 +343,7 @@ protected SplitFactoryImpl(String apiToken, SplitClientConfig config, CustomStor
333343 _gates = new SDKReadinessGates ();
334344
335345 _telemetrySynchronizer = new TelemetryConsumerSubmitter (customStorageWrapper , _sdkMetadata );
336- _evaluator = new EvaluatorImp (userCustomSplitAdapterConsumer , userCustomSegmentAdapterConsumer );
346+ _evaluator = new EvaluatorImp (userCustomSplitAdapterConsumer , userCustomSegmentAdapterConsumer , userCustomRuleBasedSegmentAdapterConsumer );
337347 _impressionsSender = PluggableImpressionSender .create (customStorageWrapper );
338348 _uniqueKeysTracker = createUniqueKeysTracker (config );
339349 _impressionsManager = buildImpressionsManager (config , userCustomImpressionAdapterConsumer ,
@@ -391,6 +401,7 @@ protected SplitFactoryImpl(SplitClientConfig config) {
391401
392402 SegmentCache segmentCache = new SegmentCacheInMemoryImpl ();
393403 FlagSetsFilter flagSetsFilter = new FlagSetsFilterImpl (config .getSetsFilter ());
404+ RuleBasedSegmentCache ruleBasedSegmentCache = new RuleBasedSegmentCacheInMemoryImp ();
394405 SplitCache splitCache = new InMemoryCacheImp (flagSetsFilter );
395406 _splitCache = splitCache ;
396407 _gates = new SDKReadinessGates ();
@@ -413,10 +424,11 @@ protected SplitFactoryImpl(SplitClientConfig config) {
413424
414425 // SplitFetcher
415426 SplitChangeFetcher splitChangeFetcher = createSplitChangeFetcher (config );
427+ RuleBasedSegmentParser ruleBasedSegmentParser = new RuleBasedSegmentParser ();
416428 SplitParser splitParser = new SplitParser ();
417429
418430 _splitFetcher = new SplitFetcherImp (splitChangeFetcher , splitParser , splitCache , _telemetryStorageProducer ,
419- flagSetsFilter );
431+ flagSetsFilter , ruleBasedSegmentParser , ruleBasedSegmentCache );
420432
421433 // SplitSynchronizationTask
422434 _splitSynchronizationTask = new SplitSynchronizationTask (_splitFetcher , splitCache ,
@@ -428,7 +440,7 @@ protected SplitFactoryImpl(SplitClientConfig config) {
428440 _impressionsManager , null , null , null );
429441
430442 // Evaluator
431- _evaluator = new EvaluatorImp (splitCache , segmentCache );
443+ _evaluator = new EvaluatorImp (splitCache , segmentCache , ruleBasedSegmentCache );
432444
433445 EventsStorage eventsStorage = new NoopEventsStorageImp ();
434446
@@ -609,11 +621,12 @@ private SegmentSynchronizationTaskImp buildSegments(SplitClientConfig config,
609621 }
610622
611623 private SplitFetcher buildSplitFetcher (SplitCacheProducer splitCacheProducer , SplitParser splitParser ,
612- FlagSetsFilter flagSetsFilter ) throws URISyntaxException {
624+ FlagSetsFilter flagSetsFilter , RuleBasedSegmentParser ruleBasedSegmentParser ,
625+ RuleBasedSegmentCache ruleBasedSegmentCache ) throws URISyntaxException {
613626 SplitChangeFetcher splitChangeFetcher = HttpSplitChangeFetcher .create (_splitHttpClient , _rootTarget ,
614627 _telemetryStorageProducer );
615628 return new SplitFetcherImp (splitChangeFetcher , splitParser , splitCacheProducer , _telemetryStorageProducer ,
616- flagSetsFilter );
629+ flagSetsFilter , ruleBasedSegmentParser , ruleBasedSegmentCache );
617630 }
618631
619632 private ImpressionsManagerImpl buildImpressionsManager (SplitClientConfig config ,
0 commit comments