@@ -106,7 +106,7 @@ public DecisionService(@Nonnull Bucketer bucketer,
106106     * @param options              An array of decision options 
107107     * @param userProfileTracker   tracker for reading and updating user profile of the user 
108108     * @param reasons              Decision reasons 
109-      * @param useCmab               Boolean flag to determine if cmab service is to be used  
109+      * @param decisionPath          An enum of paths for decision-making logic  
110110     * @return A {@link DecisionResponse} including the {@link Variation} that user is bucketed into (or null) and the decision reasons 
111111     */ 
112112    @ Nonnull 
@@ -116,7 +116,7 @@ public DecisionResponse<Variation> getVariation(@Nonnull Experiment experiment,
116116                                                    @ Nonnull  List <OptimizelyDecideOption > options ,
117117                                                    @ Nullable  UserProfileTracker  userProfileTracker ,
118118                                                    @ Nullable  DecisionReasons  reasons ,
119-                                                     @ Nonnull  boolean   useCmab ) {
119+                                                     @ Nonnull  DecisionPath   decisionPath ) {
120120        if  (reasons  == null ) {
121121            reasons  = DefaultDecisionReasons .newInstance ();
122122        }
@@ -158,7 +158,7 @@ public DecisionResponse<Variation> getVariation(@Nonnull Experiment experiment,
158158        if  (decisionMeetAudience .getResult ()) {
159159            String  bucketingId  = getBucketingId (user .getUserId (), user .getAttributes ());
160160            String  cmabUUID  = null ;
161-             if  (useCmab  && isCmabExperiment (experiment )) {
161+             if  (decisionPath  ==  DecisionPath . WITH_CMAB  && isCmabExperiment (experiment )) {
162162                DecisionResponse <CmabDecision > cmabDecision  = getDecisionForCmabExperiment (projectConfig , experiment , user , bucketingId , options );
163163                reasons .merge (cmabDecision .getReasons ());
164164
@@ -202,15 +202,15 @@ public DecisionResponse<Variation> getVariation(@Nonnull Experiment experiment,
202202     * @param user               The current OptimizelyUserContext 
203203     * @param projectConfig      The current projectConfig 
204204     * @param options            An array of decision options 
205-      * @param useCmab             Boolean to check if cmab service is to be used.  
205+      * @param decisionPath        An enum of paths for decision-making logic  
206206     * @return A {@link DecisionResponse} including the {@link Variation} that user is bucketed into (or null) and the decision reasons 
207207     */ 
208208    @ Nonnull 
209209    public  DecisionResponse <Variation > getVariation (@ Nonnull  Experiment  experiment ,
210210                                                    @ Nonnull  OptimizelyUserContext  user ,
211211                                                    @ Nonnull  ProjectConfig  projectConfig ,
212212                                                    @ Nonnull  List <OptimizelyDecideOption > options ,
213-                                                     @ Nonnull  boolean   useCmab ) {
213+                                                     @ Nonnull  DecisionPath   decisionPath ) {
214214        DecisionReasons  reasons  = DefaultDecisionReasons .newInstance ();
215215
216216        // fetch the user profile map from the user profile service 
@@ -222,7 +222,7 @@ public DecisionResponse<Variation> getVariation(@Nonnull Experiment experiment,
222222            userProfileTracker .loadUserProfile (reasons , errorHandler );
223223        }
224224
225-         DecisionResponse <Variation > response  = getVariation (experiment , user , projectConfig , options , userProfileTracker , reasons , useCmab );
225+         DecisionResponse <Variation > response  = getVariation (experiment , user , projectConfig , options , userProfileTracker , reasons , decisionPath );
226226
227227        if (userProfileService  != null  && !ignoreUPS ) {
228228            userProfileTracker .saveUserProfile (errorHandler );
@@ -234,7 +234,7 @@ public DecisionResponse<Variation> getVariation(@Nonnull Experiment experiment,
234234    public  DecisionResponse <Variation >  getVariation (@ Nonnull  Experiment  experiment ,
235235                                                     @ Nonnull  OptimizelyUserContext  user ,
236236                                                     @ Nonnull  ProjectConfig  projectConfig ) {
237-         return  getVariation (experiment , user , projectConfig , Collections .emptyList (), true );
237+         return  getVariation (experiment , user , projectConfig , Collections .emptyList (), DecisionPath . WITH_CMAB );
238238    }
239239
240240    /** 
@@ -268,7 +268,7 @@ public  List<DecisionResponse<FeatureDecision>> getVariationsForFeatureList(@Non
268268                                                                    @ Nonnull  OptimizelyUserContext  user ,
269269                                                                    @ Nonnull  ProjectConfig  projectConfig ,
270270                                                                    @ Nonnull  List <OptimizelyDecideOption > options ) {
271-         return  getVariationsForFeatureList (featureFlags , user , projectConfig , options , true );
271+         return  getVariationsForFeatureList (featureFlags , user , projectConfig , options , DecisionPath . WITH_CMAB );
272272    }
273273
274274    /** 
@@ -278,15 +278,15 @@ public  List<DecisionResponse<FeatureDecision>> getVariationsForFeatureList(@Non
278278     * @param user                The current OptimizelyuserContext 
279279     * @param projectConfig       The current projectConfig 
280280     * @param options             An array of decision options 
281-      * @param useCmab              Boolean field that determines whether to use cmab service  
281+      * @param decisionPath         An enum of paths for decision-making logic  
282282     * @return A {@link DecisionResponse} including a {@link FeatureDecision} and the decision reasons 
283283     */ 
284284    @ Nonnull 
285285    public   List <DecisionResponse <FeatureDecision >> getVariationsForFeatureList (@ Nonnull  List <FeatureFlag > featureFlags ,
286286                                                                    @ Nonnull  OptimizelyUserContext  user ,
287287                                                                    @ Nonnull  ProjectConfig  projectConfig ,
288288                                                                    @ Nonnull  List <OptimizelyDecideOption > options ,
289-                                                                     @ Nonnull  boolean   useCmab ) {
289+                                                                     @ Nonnull  DecisionPath   decisionPath ) {
290290        DecisionReasons  upsReasons  = DefaultDecisionReasons .newInstance ();
291291
292292        boolean  ignoreUPS  = options .contains (OptimizelyDecideOption .IGNORE_USER_PROFILE_SERVICE );
@@ -315,7 +315,7 @@ public  List<DecisionResponse<FeatureDecision>> getVariationsForFeatureList(@Non
315315                }
316316            }
317317
318-             DecisionResponse <FeatureDecision > decisionVariationResponse  = getVariationFromExperiment (projectConfig , featureFlag , user , options , userProfileTracker , useCmab );
318+             DecisionResponse <FeatureDecision > decisionVariationResponse  = getVariationFromExperiment (projectConfig , featureFlag , user , options , userProfileTracker , decisionPath );
319319            reasons .merge (decisionVariationResponse .getReasons ());
320320
321321            FeatureDecision  decision  = decisionVariationResponse .getResult ();
@@ -371,14 +371,14 @@ DecisionResponse<FeatureDecision> getVariationFromExperiment(@Nonnull ProjectCon
371371                                                                 @ Nonnull  OptimizelyUserContext  user ,
372372                                                                 @ Nonnull  List <OptimizelyDecideOption > options ,
373373                                                                 @ Nullable  UserProfileTracker  userProfileTracker ,
374-                                                                  @ Nonnull  boolean   useCmab ) {
374+                                                                  @ Nonnull  DecisionPath   decisionPath ) {
375375        DecisionReasons  reasons  = DefaultDecisionReasons .newInstance ();
376376        if  (!featureFlag .getExperimentIds ().isEmpty ()) {
377377            for  (String  experimentId  : featureFlag .getExperimentIds ()) {
378378                Experiment  experiment  = projectConfig .getExperimentIdMapping ().get (experimentId );
379379
380380                DecisionResponse <Variation > decisionVariation  =
381-                     getVariationFromExperimentRule (projectConfig , featureFlag .getKey (), experiment , user , options , userProfileTracker , useCmab );
381+                     getVariationFromExperimentRule (projectConfig , featureFlag .getKey (), experiment , user , options , userProfileTracker , decisionPath );
382382                reasons .merge (decisionVariation .getReasons ());
383383                Variation  variation  = decisionVariation .getResult ();
384384                String  cmabUUID  = decisionVariation .getCmabUUID ();
@@ -810,7 +810,7 @@ private DecisionResponse<Variation> getVariationFromExperimentRule(@Nonnull Proj
810810                                                                      @ Nonnull  OptimizelyUserContext  user ,
811811                                                                      @ Nonnull  List <OptimizelyDecideOption > options ,
812812                                                                      @ Nullable  UserProfileTracker  userProfileTracker ,
813-                                                                       @ Nonnull  boolean   useCmab ) {
813+                                                                       @ Nonnull  DecisionPath   decisionPath ) {
814814        DecisionReasons  reasons  = DefaultDecisionReasons .newInstance ();
815815
816816        String  ruleKey  = rule  != null  ? rule .getKey () : null ;
@@ -825,7 +825,7 @@ private DecisionResponse<Variation> getVariationFromExperimentRule(@Nonnull Proj
825825            return  new  DecisionResponse (variation , reasons );
826826        }
827827        //regular decision 
828-         DecisionResponse <Variation > decisionResponse  = getVariation (rule , user , projectConfig , options , userProfileTracker , null , useCmab );
828+         DecisionResponse <Variation > decisionResponse  = getVariation (rule , user , projectConfig , options , userProfileTracker , null , decisionPath );
829829        reasons .merge (decisionResponse .getReasons ());
830830
831831        variation  = decisionResponse .getResult ();
0 commit comments