Skip to content

Commit b1d21f5

Browse files
author
Vignesh Raja
authored
Release version 1.0.2 (#29)
1 parent e46e558 commit b1d21f5

File tree

10 files changed

+61
-18
lines changed

10 files changed

+61
-18
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.0.2
2+
3+
- Gracefully handle datafile that doesn't contain required fields
4+
15
## 1.0.1
26

37
- Allow for configurability of `clientEngine` and `clientVersion` through `Optimizely.Builder`

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import com.google.gson.Gson;
2020
import com.google.gson.GsonBuilder;
21-
import com.google.gson.JsonParseException;
2221

2322
import com.optimizely.ab.config.Experiment;
2423
import com.optimizely.ab.config.Group;
@@ -43,7 +42,7 @@ public ProjectConfig parseProjectConfig(@Nonnull String json) throws ConfigParse
4342

4443
try {
4544
return gson.fromJson(json, ProjectConfig.class);
46-
} catch (JsonParseException e) {
45+
} catch (Exception e) {
4746
throw new ConfigParseException("Unable to parse datafile: " + json, e);
4847
}
4948
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121

2222
import com.optimizely.ab.config.ProjectConfig;
2323

24-
import java.io.IOException;
25-
2624
import javax.annotation.Nonnull;
2725

2826
/**
@@ -39,7 +37,7 @@ public ProjectConfig parseProjectConfig(@Nonnull String json) throws ConfigParse
3937

4038
try {
4139
return mapper.readValue(json, ProjectConfig.class);
42-
} catch (IOException e) {
40+
} catch (Exception e) {
4341
throw new ConfigParseException("Unable to parse datafile: " + json, e);
4442
}
4543
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import com.optimizely.ab.config.Variation;
3333

3434
import org.json.JSONArray;
35-
import org.json.JSONException;
3635
import org.json.JSONObject;
3736

3837
import java.util.ArrayList;
@@ -73,7 +72,7 @@ public ProjectConfig parseProjectConfig(@Nonnull String json) throws ConfigParse
7372

7473
return new ProjectConfig(accountId, projectId, version, revision, groups, experiments, attributes, events,
7574
audiences);
76-
} catch (JSONException e) {
75+
} catch (Exception e) {
7776
throw new ConfigParseException("Unable to parse datafile: " + json, e);
7877
}
7978
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
import java.util.HashMap;
4141
import java.util.List;
4242
import java.util.Map;
43-
import java.util.Set;
4443

4544
import javax.annotation.Nonnull;
4645

@@ -75,7 +74,7 @@ public ProjectConfig parseProjectConfig(@Nonnull String json) throws ConfigParse
7574

7675
return new ProjectConfig(accountId, projectId, version, revision, groups, experiments, attributes, events,
7776
audiences);
78-
} catch (ParseException e) {
77+
} catch (Exception e) {
7978
throw new ConfigParseException("Unable to parse datafile: " + json, e);
8079
}
8180
}

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,24 @@ public void parseProjectConfigV2() throws Exception {
5555
}
5656

5757
/**
58-
* Verify that internal parser exceptions are wrapped and rethrown as a {@link ConfigParseException}.
58+
* Verify that invalid JSON results in a {@link ConfigParseException} being thrown.
5959
*/
6060
@Test
61-
public void exceptionWrapping() throws Exception {
61+
public void invalidJsonExceptionWrapping() throws Exception {
6262
thrown.expect(ConfigParseException.class);
6363

6464
GsonConfigParser parser = new GsonConfigParser();
6565
parser.parseProjectConfig("invalid config");
6666
}
67+
68+
/**
69+
* Verify that valid JSON without a required field results in a {@link ConfigParseException} being thrown.
70+
*/
71+
@Test
72+
public void validJsonRequiredFieldMissingExceptionWrapping() throws Exception {
73+
thrown.expect(ConfigParseException.class);
74+
75+
GsonConfigParser parser = new GsonConfigParser();
76+
parser.parseProjectConfig("{\"valid\": \"json\"}");
77+
}
6778
}

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,24 @@ public void parseProjectConfigV2() throws Exception {
5555
}
5656

5757
/**
58-
* Verify that internal parser exceptions are wrapped and rethrown as a {@link ConfigParseException}.
58+
* Verify that invalid JSON results in a {@link ConfigParseException} being thrown.
5959
*/
6060
@Test
61-
public void exceptionWrapping() throws Exception {
61+
public void invalidJsonExceptionWrapping() throws Exception {
6262
thrown.expect(ConfigParseException.class);
6363

6464
JacksonConfigParser parser = new JacksonConfigParser();
6565
parser.parseProjectConfig("invalid config");
6666
}
67+
68+
/**
69+
* Verify that valid JSON without a required field results in a {@link ConfigParseException} being thrown.
70+
*/
71+
@Test
72+
public void validJsonRequiredFieldMissingExceptionWrapping() throws Exception {
73+
thrown.expect(ConfigParseException.class);
74+
75+
JacksonConfigParser parser = new JacksonConfigParser();
76+
parser.parseProjectConfig("{\"valid\": \"json\"}");
77+
}
6778
}

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,24 @@ public void parseProjectConfigV2() throws Exception {
5555
}
5656

5757
/**
58-
* Verify that internal parser exceptions are wrapped and rethrown as a {@link ConfigParseException}.
58+
* Verify that invalid JSON results in a {@link ConfigParseException} being thrown.
5959
*/
6060
@Test
61-
public void exceptionWrapping() throws Exception {
61+
public void invalidJsonExceptionWrapping() throws Exception {
6262
thrown.expect(ConfigParseException.class);
6363

6464
JsonConfigParser parser = new JsonConfigParser();
6565
parser.parseProjectConfig("invalid config");
6666
}
67+
68+
/**
69+
* Verify that valid JSON without a required field results in a {@link ConfigParseException} being thrown.
70+
*/
71+
@Test
72+
public void validJsonRequiredFieldMissingExceptionWrapping() throws Exception {
73+
thrown.expect(ConfigParseException.class);
74+
75+
JsonConfigParser parser = new JsonConfigParser();
76+
parser.parseProjectConfig("{\"valid\": \"json\"}");
77+
}
6778
}

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

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,24 @@ public void parseProjectConfigV2() throws Exception {
5555
}
5656

5757
/**
58-
* Verify that internal parser exceptions are wrapped and rethrown as a {@link ConfigParseException}.
58+
* Verify that invalid JSON results in a {@link ConfigParseException} being thrown.
5959
*/
6060
@Test
61-
public void exceptionWrapping() throws Exception {
61+
public void invalidJsonExceptionWrapping() throws Exception {
6262
thrown.expect(ConfigParseException.class);
6363

6464
JsonSimpleConfigParser parser = new JsonSimpleConfigParser();
6565
parser.parseProjectConfig("invalid config");
6666
}
67+
68+
/**
69+
* Verify that valid JSON without a required field results in a {@link ConfigParseException} being thrown.
70+
*/
71+
@Test
72+
public void validJsonRequiredFieldMissingExceptionWrapping() throws Exception {
73+
thrown.expect(ConfigParseException.class);
74+
75+
JsonSimpleConfigParser parser = new JsonSimpleConfigParser();
76+
parser.parseProjectConfig("{\"valid\": \"json\"}");
77+
}
6778
}

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.0.1-SNAPSHOT
2+
version = 1.0.2-SNAPSHOT
33

44
# Artifact paths
55
mavenS3Bucket = optimizely-maven

0 commit comments

Comments
 (0)