1616 */
1717package com .optimizely .ab ;
1818
19- import com .optimizely .ab .config .ProjectConfig ;
20- import com .optimizely .ab .odp .ODPManager ;
21- import com .optimizely .ab .odp .ODPSegmentCallback ;
22- import com .optimizely .ab .odp .ODPSegmentOption ;
23- import com .optimizely .ab .optimizelydecision .*;
24- import org .slf4j .Logger ;
25- import org .slf4j .LoggerFactory ;
19+ import java .util .Collections ;
20+ import java .util .HashMap ;
21+ import java .util .LinkedList ;
22+ import java .util .List ;
23+ import java .util .Map ;
24+ import java .util .concurrent .ConcurrentHashMap ;
2625
2726import javax .annotation .Nonnull ;
2827import javax .annotation .Nullable ;
29- import java .util .*;
30- import java .util .concurrent .ConcurrentHashMap ;
28+
29+ import com .optimizely .ab .annotations .VisibleForTesting ;
30+ import com .optimizely .ab .optimizelydecision .OptimizelyDecisionCallback ;
31+ import com .optimizely .ab .optimizelydecision .OptimizelyDecisionsCallback ;
32+ import org .slf4j .Logger ;
33+ import org .slf4j .LoggerFactory ;
34+
35+ import com .optimizely .ab .odp .ODPSegmentCallback ;
36+ import com .optimizely .ab .odp .ODPSegmentOption ;
37+ import com .optimizely .ab .optimizelydecision .OptimizelyDecideOption ;
38+ import com .optimizely .ab .optimizelydecision .OptimizelyDecision ;
3139
3240public class OptimizelyUserContext {
3341 // OptimizelyForcedDecisionsKey mapped to variationKeys
@@ -42,7 +50,7 @@ public class OptimizelyUserContext {
4250 private List <String > qualifiedSegments ;
4351
4452 @ Nonnull
45- private final Optimizely optimizely ;
53+ final Optimizely optimizely ;
4654
4755 private static final Logger logger = LoggerFactory .getLogger (OptimizelyUserContext .class );
4856
@@ -390,4 +398,44 @@ public String toString() {
390398 ", attributes='" + attributes + '\'' +
391399 '}' ;
392400 }
401+
402+ // sync decision support for android-sdk backward compatibility only
403+
404+ @ VisibleForTesting // protected, open for testing only
405+ public OptimizelyDecision decideSync (@ Nonnull String key ,
406+ @ Nonnull List <OptimizelyDecideOption > options ) {
407+ return optimizely .decideSync (copy (), key , options );
408+ }
409+
410+ @ VisibleForTesting // protected, open for testing only
411+ public Map <String , OptimizelyDecision > decideForKeysSync (@ Nonnull List <String > keys ,
412+ @ Nonnull List <OptimizelyDecideOption > options ) {
413+ return optimizely .decideForKeysSync (copy (), keys , options );
414+ }
415+
416+ @ VisibleForTesting // protected, open for testing only
417+ public Map <String , OptimizelyDecision > decideAllSync (@ Nonnull List <OptimizelyDecideOption > options ) {
418+ return optimizely .decideAllSync (copy (), options );
419+ }
420+
421+ @ VisibleForTesting // protected, open for testing only
422+ public void decideAsync (@ Nonnull String key ,
423+ @ Nonnull List <OptimizelyDecideOption > options ,
424+ @ Nonnull OptimizelyDecisionCallback callback ) {
425+ optimizely .decideAsync (copy (), key , options , callback );
426+ }
427+
428+ @ VisibleForTesting // protected, open for testing only
429+ public void decideForKeysAsync (@ Nonnull List <String > keys ,
430+ @ Nonnull List <OptimizelyDecideOption > options ,
431+ @ Nonnull OptimizelyDecisionsCallback callback ) {
432+ optimizely .decideForKeysAsync (copy (), keys , options , callback );
433+ }
434+
435+ @ VisibleForTesting // protected, open for testing only
436+ public void decideAllAsync (@ Nonnull List <OptimizelyDecideOption > options ,
437+ @ Nonnull OptimizelyDecisionsCallback callback ) {
438+ optimizely .decideAllAsync (copy (), options , callback );
439+ }
440+
393441}
0 commit comments