6666import io .split .storages .SplitCache ;
6767import io .split .storages .SplitCacheConsumer ;
6868import io .split .storages .SplitCacheProducer ;
69+ import io .split .storages .RuleBasedSegmentCacheConsumer ;
70+ import io .split .storages .RuleBasedSegmentCache ;
6971import io .split .storages .enums .OperationMode ;
7072import io .split .storages .memory .InMemoryCacheImp ;
7173import io .split .storages .memory .SegmentCacheInMemoryImpl ;
74+ import io .split .storages .memory .RuleBasedSegmentCacheInMemoryImp ;
7275import io .split .storages .pluggable .adapters .UserCustomEventAdapterProducer ;
7376import io .split .storages .pluggable .adapters .UserCustomImpressionAdapterConsumer ;
7477import io .split .storages .pluggable .adapters .UserCustomImpressionAdapterProducer ;
@@ -202,6 +205,7 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn
202205
203206 // Cache Initialisations
204207 SegmentCache segmentCache = new SegmentCacheInMemoryImpl ();
208+ RuleBasedSegmentCache ruleBasedSegmentCache = new RuleBasedSegmentCacheInMemoryImp ();
205209 FlagSetsFilter flagSetsFilter = new FlagSetsFilterImpl (config .getSetsFilter ());
206210 SplitCache splitCache = new InMemoryCacheImp (flagSetsFilter );
207211 ImpressionsStorage impressionsStorage = new InMemoryImpressionsStorage (config .impressionsQueueSize ());
@@ -214,6 +218,7 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn
214218 // Segments
215219 _segmentSynchronizationTaskImp = buildSegments (config , segmentCache , splitCache );
216220
221+
217222 SplitParser splitParser = new SplitParser ();
218223 // SplitFetcher
219224 _splitFetcher = buildSplitFetcher (splitCache , splitParser , flagSetsFilter );
@@ -244,7 +249,7 @@ public SplitFactoryImpl(String apiToken, SplitClientConfig config) throws URISyn
244249 config .getThreadFactory ());
245250
246251 // Evaluator
247- _evaluator = new EvaluatorImp (splitCache , segmentCache );
252+ _evaluator = new EvaluatorImp (splitCache , segmentCache , ruleBasedSegmentCache );
248253
249254 // SplitClient
250255 _client = new SplitClientImpl (this ,
@@ -333,7 +338,9 @@ protected SplitFactoryImpl(String apiToken, SplitClientConfig config, CustomStor
333338 _gates = new SDKReadinessGates ();
334339
335340 _telemetrySynchronizer = new TelemetryConsumerSubmitter (customStorageWrapper , _sdkMetadata );
336- _evaluator = new EvaluatorImp (userCustomSplitAdapterConsumer , userCustomSegmentAdapterConsumer );
341+ // TODO Update the instance to UserCustomRuleBasedSegmentAdapterConsumer
342+ RuleBasedSegmentCacheConsumer userCustomRuleBasedSegmentAdapterConsumer = new RuleBasedSegmentCacheInMemoryImp ();
343+ _evaluator = new EvaluatorImp (userCustomSplitAdapterConsumer , userCustomSegmentAdapterConsumer , userCustomRuleBasedSegmentAdapterConsumer );
337344 _impressionsSender = PluggableImpressionSender .create (customStorageWrapper );
338345 _uniqueKeysTracker = createUniqueKeysTracker (config );
339346 _impressionsManager = buildImpressionsManager (config , userCustomImpressionAdapterConsumer ,
@@ -392,6 +399,7 @@ protected SplitFactoryImpl(SplitClientConfig config) {
392399 SegmentCache segmentCache = new SegmentCacheInMemoryImpl ();
393400 FlagSetsFilter flagSetsFilter = new FlagSetsFilterImpl (config .getSetsFilter ());
394401 SplitCache splitCache = new InMemoryCacheImp (flagSetsFilter );
402+ RuleBasedSegmentCache _ruleBasedSegmentCache = new RuleBasedSegmentCacheInMemoryImp ();
395403 _splitCache = splitCache ;
396404 _gates = new SDKReadinessGates ();
397405 _segmentCache = segmentCache ;
@@ -428,7 +436,7 @@ protected SplitFactoryImpl(SplitClientConfig config) {
428436 _impressionsManager , null , null , null );
429437
430438 // Evaluator
431- _evaluator = new EvaluatorImp (splitCache , segmentCache );
439+ _evaluator = new EvaluatorImp (splitCache , segmentCache , _ruleBasedSegmentCache );
432440
433441 EventsStorage eventsStorage = new NoopEventsStorageImp ();
434442
0 commit comments