Skip to content

Commit 2e97b6c

Browse files
committed
[JAVA] Replace LiveVariables with Features in Project Config
Summary: revise ProjectConfig.java to retain features at project level instead of LiveVariables Test Plan: none this is just a conceptual diff that will be part of a larger diff D16323 Reviewers: #oasis_team_review, ali, mike.ng JIRA Issues: OASIS-1382 Differential Revision: https://phabricator.optimizely.com/D16340
1 parent 6e29e1c commit 2e97b6c

File tree

2 files changed

+15
-54
lines changed

2 files changed

+15
-54
lines changed

core-api/src/main/java/com/optimizely/ab/config/ProjectConfig.java

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,16 @@ public String toString() {
6262
private final List<Attribute> attributes;
6363
private final List<EventType> events;
6464
private final List<Audience> audiences;
65-
private final List<LiveVariable> liveVariables;
65+
private final List<Feature> features;
6666

6767
// convenience mappings for efficient lookup
6868
private final Map<String, Experiment> experimentKeyMapping;
6969
private final Map<String, Attribute> attributeKeyMapping;
70-
private final Map<String, LiveVariable> liveVariableKeyMapping;
70+
private final Map<String, Feature> featureKeyMapping;
7171
private final Map<String, EventType> eventNameMapping;
7272
private final Map<String, Audience> audienceIdMapping;
7373
private final Map<String, Experiment> experimentIdMapping;
7474
private final Map<String, Group> groupIdMapping;
75-
private final Map<String, List<Experiment>> liveVariableIdToExperimentsMapping;
7675
private final Map<String, Map<String, LiveVariableUsageInstance>> variationToLiveVariableUsageInstanceMapping;
7776

7877
public ProjectConfig(String accountId, String projectId, String version, String revision, List<Group> groups,
@@ -84,7 +83,7 @@ public ProjectConfig(String accountId, String projectId, String version, String
8483

8584
public ProjectConfig(String accountId, String projectId, String version, String revision, List<Group> groups,
8685
List<Experiment> experiments, List<Attribute> attributes, List<EventType> eventType,
87-
List<Audience> audiences, boolean anonymizeIP, List<LiveVariable> liveVariables) {
86+
List<Audience> audiences, boolean anonymizeIP, List<Feature> features) {
8887

8988
this.accountId = accountId;
9089
this.projectId = projectId;
@@ -111,16 +110,13 @@ public ProjectConfig(String accountId, String projectId, String version, String
111110
this.experimentIdMapping = ProjectConfigUtils.generateIdMapping(this.experiments);
112111
this.groupIdMapping = ProjectConfigUtils.generateIdMapping(groups);
113112

114-
if (liveVariables == null) {
115-
this.liveVariables = null;
116-
this.liveVariableKeyMapping = Collections.emptyMap();
117-
this.liveVariableIdToExperimentsMapping = Collections.emptyMap();
113+
if (features == null) {
114+
this.features = null;
115+
this.featureKeyMapping = Collections.emptyMap();
118116
this.variationToLiveVariableUsageInstanceMapping = Collections.emptyMap();
119117
} else {
120-
this.liveVariables = Collections.unmodifiableList(liveVariables);
121-
this.liveVariableKeyMapping = ProjectConfigUtils.generateNameMapping(this.liveVariables);
122-
this.liveVariableIdToExperimentsMapping =
123-
ProjectConfigUtils.generateLiveVariableIdToExperimentsMapping(this.experiments);
118+
this.features = Collections.unmodifiableList(features);
119+
this.featureKeyMapping = ProjectConfigUtils.generateNameMapping(this.features);
124120
this.variationToLiveVariableUsageInstanceMapping =
125121
ProjectConfigUtils.generateVariationToLiveVariableUsageInstancesMap(this.experiments);
126122
}
@@ -196,8 +192,8 @@ public Condition getAudienceConditionsFromId(String audienceId) {
196192
return audience != null ? audience.getConditions() : null;
197193
}
198194

199-
public List<LiveVariable> getLiveVariables() {
200-
return liveVariables;
195+
public List<Feature> getFeatures() {
196+
return features;
201197
}
202198

203199
public Map<String, Experiment> getExperimentKeyMapping() {
@@ -224,12 +220,8 @@ public Map<String, Group> getGroupIdMapping() {
224220
return groupIdMapping;
225221
}
226222

227-
public Map<String, LiveVariable> getLiveVariableKeyMapping() {
228-
return liveVariableKeyMapping;
229-
}
230-
231-
public Map<String, List<Experiment>> getLiveVariableIdToExperimentsMapping() {
232-
return liveVariableIdToExperimentsMapping;
223+
public Map<String, Feature> getFeatureKeyMapping() {
224+
return featureKeyMapping;
233225
}
234226

235227
public Map<String, Map<String, LiveVariableUsageInstance>> getVariationToLiveVariableUsageInstanceMapping() {
@@ -243,21 +235,20 @@ public String toString() {
243235
", projectId='" + projectId + '\'' +
244236
", revision='" + revision + '\'' +
245237
", version='" + version + '\'' +
246-
", anonymizeIP='" + anonymizeIP + '\'' +
238+
", anonymizeIP=" + anonymizeIP +
247239
", groups=" + groups +
248240
", experiments=" + experiments +
249241
", attributes=" + attributes +
250242
", events=" + events +
251243
", audiences=" + audiences +
252-
", liveVariables=" + liveVariables +
244+
", features=" + features +
253245
", experimentKeyMapping=" + experimentKeyMapping +
254246
", attributeKeyMapping=" + attributeKeyMapping +
255-
", liveVariableKeyMapping=" + liveVariableKeyMapping +
247+
", featureKeyMapping=" + featureKeyMapping +
256248
", eventNameMapping=" + eventNameMapping +
257249
", audienceIdMapping=" + audienceIdMapping +
258250
", experimentIdMapping=" + experimentIdMapping +
259251
", groupIdMapping=" + groupIdMapping +
260-
", liveVariableIdToExperimentsMapping=" + liveVariableIdToExperimentsMapping +
261252
", variationToLiveVariableUsageInstanceMapping=" + variationToLiveVariableUsageInstanceMapping +
262253
'}';
263254
}

core-api/src/main/java/com/optimizely/ab/config/ProjectConfigUtils.java

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -48,36 +48,6 @@ public static <T extends IdMapped> Map<String, T> generateIdMapping(List<T> name
4848
return Collections.unmodifiableMap(nameMapping);
4949
}
5050

51-
/**
52-
* Helper method to create a map from a live variable to all the experiments using it
53-
*/
54-
public static Map<String, List<Experiment>> generateLiveVariableIdToExperimentsMapping(
55-
List<Experiment> experiments) {
56-
57-
Map<String, List<Experiment>> variableIdToExperiments =
58-
new HashMap<String, List<Experiment>>();
59-
for (Experiment experiment : experiments) {
60-
if (!experiment.getVariations().isEmpty()) {
61-
// if a live variable is used by an experiment, it will have instances in all variations so we can
62-
// short-circuit after getting the live variables for the first variation
63-
Variation variation = experiment.getVariations().get(0);
64-
if (variation.getLiveVariableUsageInstances() != null) {
65-
for (LiveVariableUsageInstance usageInstance : variation.getLiveVariableUsageInstances()) {
66-
List<Experiment> experimentsUsingVariable = variableIdToExperiments.get(usageInstance.getId());
67-
if (experimentsUsingVariable == null) {
68-
experimentsUsingVariable = new ArrayList<Experiment>();
69-
}
70-
71-
experimentsUsingVariable.add(experiment);
72-
variableIdToExperiments.put(usageInstance.getId(), experimentsUsingVariable);
73-
}
74-
}
75-
}
76-
}
77-
78-
return variableIdToExperiments;
79-
}
80-
8151
/**
8252
* Helper method to create a map from variation ID to variable ID to {@link LiveVariableUsageInstance}
8353
*/

0 commit comments

Comments
 (0)