Skip to content

Commit 9a0e296

Browse files
author
Vignesh Raja
authored
Release version 1.4.1 (#72)
2 parents 191594e + 8ce80b4 commit 9a0e296

File tree

8 files changed

+55
-6
lines changed

8 files changed

+55
-6
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 1.4.1
2+
3+
February 1, 2017
4+
5+
- Default `null` status in datafile to `Not started`
6+
17
## 1.4.0
28

39
January 31, 2017

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public Experiment(@JsonProperty("id") String id,
8383

8484
public Experiment(@Nonnull String id,
8585
@Nonnull String key,
86-
@Nonnull String status,
86+
@Nullable String status,
8787
@Nullable String layerId,
8888
@Nonnull List<String> audienceIds,
8989
@Nonnull List<Variation> variations,
@@ -92,7 +92,7 @@ public Experiment(@Nonnull String id,
9292
@Nonnull String groupId) {
9393
this.id = id;
9494
this.key = key;
95-
this.status = status;
95+
this.status = status == null ? ExperimentStatus.NOT_STARTED.toString() : status;
9696
this.layerId = layerId;
9797
this.audienceIds = Collections.unmodifiableList(audienceIds);
9898
this.variations = Collections.unmodifiableList(variations);

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.google.gson.reflect.TypeToken;
2424

2525
import com.optimizely.ab.config.Experiment;
26+
import com.optimizely.ab.config.Experiment.ExperimentStatus;
2627
import com.optimizely.ab.config.LiveVariableUsageInstance;
2728
import com.optimizely.ab.config.TrafficAllocation;
2829
import com.optimizely.ab.config.Variation;
@@ -86,7 +87,10 @@ static List<TrafficAllocation> parseTrafficAllocation(JsonArray trafficAllocatio
8687
static Experiment parseExperiment(JsonObject experimentJson, String groupId, JsonDeserializationContext context) {
8788
String id = experimentJson.get("id").getAsString();
8889
String key = experimentJson.get("key").getAsString();
89-
String status = experimentJson.get("status").getAsString();
90+
JsonElement experimentStatusJson = experimentJson.get("status");
91+
String status = experimentStatusJson.isJsonNull() ?
92+
ExperimentStatus.NOT_STARTED.toString() : experimentStatusJson.getAsString();
93+
9094
JsonElement layerIdJson = experimentJson.get("layerId");
9195
String layerId = layerIdJson == null ? null : layerIdJson.getAsString();
9296

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.optimizely.ab.config.audience.UserAttribute;
2626
import com.optimizely.ab.config.EventType;
2727
import com.optimizely.ab.config.Experiment;
28+
import com.optimizely.ab.config.Experiment.ExperimentStatus;
2829
import com.optimizely.ab.config.Group;
2930
import com.optimizely.ab.config.LiveVariable;
3031
import com.optimizely.ab.config.LiveVariableUsageInstance;
@@ -101,7 +102,8 @@ private List<Experiment> parseExperiments(JSONArray experimentJson, String group
101102
JSONObject experimentObject = (JSONObject)obj;
102103
String id = experimentObject.getString("id");
103104
String key = experimentObject.getString("key");
104-
String status = experimentObject.getString("status");
105+
String status = experimentObject.isNull("status") ?
106+
ExperimentStatus.NOT_STARTED.toString() : experimentObject.getString("status");
105107
String layerId = experimentObject.has("layerId") ? experimentObject.getString("layerId") : null;
106108

107109
JSONArray audienceIdsJson = experimentObject.getJSONArray("audienceIds");

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.optimizely.ab.config.audience.UserAttribute;
2626
import com.optimizely.ab.config.EventType;
2727
import com.optimizely.ab.config.Experiment;
28+
import com.optimizely.ab.config.Experiment.ExperimentStatus;
2829
import com.optimizely.ab.config.Group;
2930
import com.optimizely.ab.config.LiveVariable;
3031
import com.optimizely.ab.config.LiveVariableUsageInstance;
@@ -103,7 +104,9 @@ private List<Experiment> parseExperiments(JSONArray experimentJson, String group
103104
JSONObject experimentObject = (JSONObject)obj;
104105
String id = (String)experimentObject.get("id");
105106
String key = (String)experimentObject.get("key");
106-
String status = (String)experimentObject.get("status");
107+
Object statusJson = experimentObject.get("status");
108+
String status = statusJson == null ? ExperimentStatus.NOT_STARTED.toString() :
109+
(String)experimentObject.get("status");
107110
Object layerIdObject = experimentObject.get("layerId");
108111
String layerId = layerIdObject == null ? null : (String)layerIdObject;
109112

core-api/src/test/java/com/optimizely/ab/config/ProjectConfigTestUtils.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,14 @@ private static ProjectConfig generateValidProjectConfigV2() {
197197
Collections.singletonMap("testUser3", "vtag3"),
198198
asList(new TrafficAllocation("278", 4500),
199199
new TrafficAllocation("279", 9000)),
200+
""),
201+
new Experiment("119", "etag3", "Not started", null,
202+
singletonList("100"),
203+
asList(new Variation("280", "vtag5"),
204+
new Variation("281", "vtag6")),
205+
Collections.singletonMap("testUser4", "vtag5"),
206+
asList(new TrafficAllocation("280", 4500),
207+
new TrafficAllocation("281", 9000)),
200208
"")
201209
);
202210

core-api/src/test/resources/config/valid-project-config-v2.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,32 @@
5656
"entityId": "279",
5757
"endOfRange": 9000
5858
}]
59+
},
60+
{
61+
"id": "119",
62+
"key": "etag3",
63+
"status": null,
64+
"layerId": "2",
65+
"audienceIds": [
66+
"100"
67+
],
68+
"variations": [{
69+
"id": "280",
70+
"key": "vtag5"
71+
}, {
72+
"id": "281",
73+
"key": "vtag6"
74+
}],
75+
"forcedVariations": {
76+
"testUser4": "vtag5"
77+
},
78+
"trafficAllocation": [{
79+
"entityId": "280",
80+
"endOfRange": 4500
81+
}, {
82+
"entityId": "281",
83+
"endOfRange": 9000
84+
}]
5985
}
6086
],
6187
"groups": [{

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Maven version
2-
version = 1.4.0-SNAPSHOT
2+
version = 1.4.1-SNAPSHOT
33

44
# Artifact paths
55
mavenS3Bucket = optimizely-maven

0 commit comments

Comments
 (0)