@@ -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