@@ -216,18 +216,12 @@ public DatafileProjectConfig(String accountId,
216216 flagVariationsMap = new HashMap <>();
217217 if (featureFlags != null ) {
218218 for (FeatureFlag flag : featureFlags ) {
219- Map <String , Variation > variationsIdMap = new HashMap <>();
220219 List <Variation > variations = new ArrayList <>();
221- for (String experimentId : flag .getExperimentIds ()) {
222- // We need to get each experiment by id and add to our list of experiments
223- Experiment exp = experimentIdMapping .get (experimentId );
224- variations .addAll (getVariationsFromExperiments (variationsIdMap , exp ));
225-
226- }
227- Rollout rollout = rolloutIdMapping .get (flag .getRolloutId ());
228- if (rollout != null ) {
229- for (Experiment experiment : rollout .getExperiments ()) {
230- variations .addAll (getVariationsFromExperiments (variationsIdMap , experiment ));
220+ for (Experiment rule : getAllRulesForFlag (flag )) {
221+ for (Variation variation : rule .getVariations ()) {
222+ if (!variations .contains (variation )) {
223+ variations .add (variation );
224+ }
231225 }
232226 }
233227 // Grab all the variations from the flag experiments and rollouts and add to flagVariationsMap
@@ -236,17 +230,24 @@ public DatafileProjectConfig(String accountId,
236230 }
237231 }
238232
239- private List <Variation > getVariationsFromExperiments (Map <String , Variation > variationsIdMap , Experiment exp ) {
240- List <Variation > variations = new ArrayList <>();
241- for (Variation variation : exp .getVariations ()) {
242- if (!variationsIdMap .containsKey (variation .getId ())) {
243- variationsIdMap .put (variation .getId (), variation );
244- variations .add (variation );
245- }
233+ /**
234+ * Helper method to grab all rules for a flag
235+ * @param flag The flag to grab all the rules from
236+ * @return Returns a list of Experiments as rules
237+ */
238+ private List <Experiment > getAllRulesForFlag (FeatureFlag flag ) {
239+ List <Experiment > rules = new ArrayList <>();
240+ Rollout rollout = rolloutIdMapping .get (flag .getRolloutId ());
241+ for (String experimentId : flag .getExperimentIds ()) {
242+ rules .add (experimentIdMapping .get (experimentId ));
243+ }
244+ if (rollout != null ) {
245+ rules .addAll (rollout .getExperiments ());
246246 }
247- return variations ;
247+ return rules ;
248248 }
249249
250+
250251 /**
251252 * Helper method to retrieve the {@link Experiment} for the given experiment key.
252253 * If {@link RaiseExceptionErrorHandler} is provided, either an experiment is returned,
0 commit comments