Skip to content

Commit

Permalink
fix: NPE ImmutableJsonObject/Array for null values
Browse files Browse the repository at this point in the history
  • Loading branch information
kristian committed Feb 17, 2022
1 parent efe5b60 commit 0a79136
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 6 deletions.
Expand Up @@ -66,12 +66,14 @@ public ImmutableJsonArray(JsonArray arr) {

@Override
public ImmutableJsonObject getJsonObject(int pos) {
return new ImmutableJsonObject(super.getJsonObject(pos));
JsonObject object = super.getJsonObject(pos);
return object != null ? new ImmutableJsonObject(object) : null;
}

@Override
public ImmutableJsonArray getJsonArray(int pos) {
return new ImmutableJsonArray(super.getJsonArray(pos));
JsonArray array = super.getJsonArray(pos);
return array != null ? new ImmutableJsonArray(array) : null;
}

@Override
Expand Down
12 changes: 8 additions & 4 deletions src/main/java/io/neonbee/internal/json/ImmutableJsonObject.java
Expand Up @@ -67,22 +67,26 @@ public ImmutableJsonObject(JsonObject obj) {

@Override
public ImmutableJsonObject getJsonObject(String key) {
return new ImmutableJsonObject(super.getJsonObject(key));
JsonObject object = super.getJsonObject(key);
return object != null ? new ImmutableJsonObject(object) : null;
}

@Override
public ImmutableJsonObject getJsonObject(String key, JsonObject def) {
return new ImmutableJsonObject(super.getJsonObject(key, def));
JsonObject object = super.getJsonObject(key, def);
return object != null ? new ImmutableJsonObject(object) : null;
}

@Override
public ImmutableJsonArray getJsonArray(String key) {
return new ImmutableJsonArray(super.getJsonArray(key));
JsonArray array = super.getJsonArray(key);
return array != null ? new ImmutableJsonArray(array) : null;
}

@Override
public ImmutableJsonArray getJsonArray(String key, JsonArray def) {
return new ImmutableJsonArray(super.getJsonArray(key, def));
JsonArray array = super.getJsonArray(key, def);
return array != null ? new ImmutableJsonArray(array) : null;
}

@Override
Expand Down
17 changes: 17 additions & 0 deletions src/test/java/io/neonbee/internal/json/ImmutableJsonArrayTest.java
Expand Up @@ -92,6 +92,23 @@ void testGetComplexValues() {
assertThrows(UnsupportedOperationException.class, () -> ((JsonArray) jsonArray.getValue(1)).add(true));
}

@Test
void testGetNullComplexValues() {
ImmutableJsonArray jsonArray = new ImmutableJsonArray(new JsonArray().addNull());
assertThat(jsonArray.getJsonObject(0)).isNull();
assertThat(jsonArray.getJsonArray(0)).isNull();

ImmutableJsonObject jsonObject = new ImmutableJsonObject(new JsonObject().putNull("baz"));
assertThat(jsonObject.getJsonObject("foo")).isNull();
assertThat(jsonObject.getJsonObject("foo", null)).isNull();
assertThat(jsonObject.getJsonArray("bar")).isNull();
assertThat(jsonObject.getJsonArray("bar", null)).isNull();
assertThat(jsonObject.getJsonObject("baz")).isNull();
assertThat(jsonObject.getJsonObject("baz", null)).isNull();
assertThat(jsonObject.getJsonArray("baz")).isNull();
assertThat(jsonObject.getJsonArray("baz", null)).isNull();
}

@Test
void testMutableCopyIsMutable() {
assertDoesNotThrow(() -> new ImmutableJsonArray().mutableCopy().add(true));
Expand Down

0 comments on commit 0a79136

Please sign in to comment.