@@ -48,6 +48,7 @@ public final class SplitClientImpl implements SplitClient {
4848 public static final SplitResult SPLIT_RESULT_CONTROL = new SplitResult (Treatments .CONTROL , null );
4949 private static final String CLIENT_DESTROY = "Client has already been destroyed - no calls possible" ;
5050 private static final String CATCHALL_EXCEPTION = "CatchAll Exception" ;
51+ private static final String MATCHING_KEY = "matchingKey" ;
5152
5253 private static final Logger _log = LoggerFactory .getLogger (SplitClientImpl .class );
5354
@@ -150,6 +151,13 @@ public Map<String, SplitResult> getTreatmentsWithConfig(Key key, List<String> fe
150151 MethodEnum .TREATMENTS_WITH_CONFIG );
151152 }
152153
154+ @ Override
155+ public Map <String , String > getTreatmentsByFlagSet (String key , String flagSet ) {
156+ return getTreatmentsBySetsWithConfigInternal (key , null , new ArrayList <>(Arrays .asList (flagSet )),
157+ null , MethodEnum .TREATMENTS_BY_FLAG_SET ).entrySet ().stream ()
158+ .collect (Collectors .toMap (Map .Entry ::getKey , e -> e .getValue ().treatment ()));
159+ }
160+
153161 @ Override
154162 public Map <String , String > getTreatmentsByFlagSet (String key , String flagSet , Map <String , Object > attributes ) {
155163 return getTreatmentsBySetsWithConfigInternal (key , null , new ArrayList <>(Arrays .asList (flagSet )),
@@ -164,6 +172,13 @@ public Map<String, String> getTreatmentsByFlagSet(Key key, String flagSet, Map<S
164172 .collect (Collectors .toMap (Map .Entry ::getKey , e -> e .getValue ().treatment ()));
165173 }
166174
175+ @ Override
176+ public Map <String , String > getTreatmentsByFlagSets (String key , List <String > flagSets ) {
177+ return getTreatmentsBySetsWithConfigInternal (key , null , flagSets ,
178+ null , MethodEnum .TREATMENTS_BY_FLAG_SETS ).entrySet ().stream ()
179+ .collect (Collectors .toMap (Map .Entry ::getKey , e -> e .getValue ().treatment ()));
180+ }
181+
167182 @ Override
168183 public Map <String , String > getTreatmentsByFlagSets (String key , List <String > flagSets , Map <String , Object > attributes ) {
169184 return getTreatmentsBySetsWithConfigInternal (key , null , flagSets ,
@@ -178,6 +193,12 @@ public Map<String, String> getTreatmentsByFlagSets(Key key, List<String> flagSet
178193 .collect (Collectors .toMap (Map .Entry ::getKey , e -> e .getValue ().treatment ()));
179194 }
180195
196+ @ Override
197+ public Map <String , SplitResult > getTreatmentsWithConfigByFlagSet (String key , String flagSet ) {
198+ return getTreatmentsBySetsWithConfigInternal (key , null , new ArrayList <>(Arrays .asList (flagSet )),
199+ null , MethodEnum .TREATMENTS_WITH_CONFIG_BY_FLAG_SET );
200+ }
201+
181202 @ Override
182203 public Map <String , SplitResult > getTreatmentsWithConfigByFlagSet (String key , String flagSet , Map <String , Object > attributes ) {
183204 return getTreatmentsBySetsWithConfigInternal (key , null , new ArrayList <>(Arrays .asList (flagSet )),
@@ -190,6 +211,12 @@ public Map<String, SplitResult> getTreatmentsWithConfigByFlagSet(Key key, String
190211 attributes , MethodEnum .TREATMENTS_WITH_CONFIG_BY_FLAG_SET );
191212 }
192213
214+ @ Override
215+ public Map <String , SplitResult > getTreatmentsWithConfigByFlagSets (String key , List <String > flagSets ) {
216+ return getTreatmentsBySetsWithConfigInternal (key , null , flagSets ,
217+ null , MethodEnum .TREATMENTS_WITH_CONFIG_BY_FLAG_SETS );
218+ }
219+
193220 @ Override
194221 public Map <String , SplitResult > getTreatmentsWithConfigByFlagSets (String key , List <String > flagSets , Map <String , Object > attributes ) {
195222 return getTreatmentsBySetsWithConfigInternal (key , null , flagSets ,
@@ -295,7 +322,7 @@ private SplitResult getTreatmentWithConfigInternal(String matchingKey, String bu
295322 return SPLIT_RESULT_CONTROL ;
296323 }
297324
298- if (!KeyValidator .isValid (matchingKey , "matchingKey" , _config .maxStringLength (), methodEnum .getMethod ())) {
325+ if (!KeyValidator .isValid (matchingKey , MATCHING_KEY , _config .maxStringLength (), methodEnum .getMethod ())) {
299326 return SPLIT_RESULT_CONTROL ;
300327 }
301328
@@ -381,14 +408,14 @@ private Map<String, SplitResult> getTreatmentsBySetsWithConfigInternal(String ma
381408 return new HashMap <>();
382409 }
383410 Set cleanFlagSets = cleanup (sets );
384- if (filterSetsAreInConfig (cleanFlagSets , methodEnum ).isEmpty ()) {
411+ cleanFlagSets = filterSetsAreInConfig (cleanFlagSets , methodEnum );
412+ if (cleanFlagSets .isEmpty ()) {
385413 return new HashMap <>();
386414 }
387415 List <String > featureFlagNames = new ArrayList <>();
388416 try {
389417 checkSDKReady (methodEnum );
390- featureFlagNames = getAllFlags (cleanFlagSets );
391- Map <String , SplitResult > result = validateBeforeEvaluate (featureFlagNames , matchingKey , methodEnum ,bucketingKey );
418+ Map <String , SplitResult > result = validateBeforeEvaluateByFlagSets (matchingKey , methodEnum ,bucketingKey );
392419 if (result != null ) {
393420 return result ;
394421 }
@@ -405,7 +432,6 @@ private Map<String, SplitResult> getTreatmentsBySetsWithConfigInternal(String ma
405432 return createMapControl (featureFlagNames );
406433 }
407434 }
408-
409435 private Map <String , SplitResult > processEvaluatorResult (Map <String , EvaluatorImp .TreatmentLabelAndChangeNumber > evaluatorResult ,
410436 MethodEnum methodEnum , String matchingKey , String bucketingKey , Map <String ,
411437 Object > attributes , long initTime ){
@@ -430,13 +456,28 @@ private Map<String, SplitResult> processEvaluatorResult(Map<String, EvaluatorImp
430456 return result ;
431457 }
432458
459+ private Map <String , SplitResult > validateBeforeEvaluateByFlagSets (String matchingKey , MethodEnum methodEnum ,
460+ String bucketingKey ) {
461+ if (_container .isDestroyed ()) {
462+ _log .error (CLIENT_DESTROY );
463+ return new HashMap <>();
464+ }
465+ if (!KeyValidator .isValid (matchingKey , MATCHING_KEY , _config .maxStringLength (), methodEnum .getMethod ())) {
466+ return new HashMap <>();
467+ }
468+ if (!KeyValidator .bucketingKeyIsValid (bucketingKey , _config .maxStringLength (), methodEnum .getMethod ())) {
469+ return new HashMap <>();
470+ }
471+ return null ;
472+ }
473+
433474 private Map <String , SplitResult > validateBeforeEvaluate (List <String > featureFlagNames , String matchingKey , MethodEnum methodEnum ,
434475 String bucketingKey ) {
435476 if (_container .isDestroyed ()) {
436477 _log .error (CLIENT_DESTROY );
437478 return createMapControl (featureFlagNames );
438479 }
439- if (!KeyValidator .isValid (matchingKey , "matchingKey" , _config .maxStringLength (), methodEnum .getMethod ())) {
480+ if (!KeyValidator .isValid (matchingKey , MATCHING_KEY , _config .maxStringLength (), methodEnum .getMethod ())) {
440481 return createMapControl (featureFlagNames );
441482 }
442483 if (!KeyValidator .bucketingKeyIsValid (bucketingKey , _config .maxStringLength (), methodEnum .getMethod ())) {
@@ -447,8 +488,8 @@ private Map<String, SplitResult> validateBeforeEvaluate(List<String> featureFlag
447488 }
448489 return null ;
449490 }
450- private List <String > filterSetsAreInConfig (Set <String > sets , MethodEnum methodEnum ) {
451- List <String > setsToReturn = new ArrayList <>();
491+ private Set <String > filterSetsAreInConfig (Set <String > sets , MethodEnum methodEnum ) {
492+ Set <String > setsToReturn = new HashSet <>();
452493 for (String set : sets ) {
453494 if (!_flagSetsFilter .intersect (set )) {
454495 _log .warn (String .format ("%s: you passed %s which is not part of the configured FlagSetsFilter, " +
@@ -459,16 +500,6 @@ private List<String> filterSetsAreInConfig(Set<String> sets, MethodEnum methodEn
459500 }
460501 return setsToReturn ;
461502 }
462-
463- private List <String > getAllFlags (Set <String > sets ) {
464- Map <String , HashSet <String >> namesBySets = _splitCacheConsumer .getNamesByFlagSets (new ArrayList <>(sets ));
465- HashSet <String > flags = new HashSet <>();
466- for (String set : namesBySets .keySet ()) {
467- flags .addAll (namesBySets .get (set ));
468- }
469- return new ArrayList <>(flags );
470- }
471-
472503 private void recordStats (String matchingKey , String bucketingKey , String featureFlagName , long start , String result ,
473504 String operation , String label , Long changeNumber , Map <String , Object > attributes ) {
474505 try {
0 commit comments