Repository: johnzon Updated Branches: refs/heads/master f6979d363 -> de1e780a0
JOHNZON-121 classcastexception got getBoolean if the jsonvalue is wrong Project: http://git-wip-us.apache.org/repos/asf/johnzon/repo Commit: http://git-wip-us.apache.org/repos/asf/johnzon/commit/de1e780a Tree: http://git-wip-us.apache.org/repos/asf/johnzon/tree/de1e780a Diff: http://git-wip-us.apache.org/repos/asf/johnzon/diff/de1e780a Branch: refs/heads/master Commit: de1e780a0f096e7176e95a9586e9d88028c9d0c6 Parents: f6979d3 Author: rmannibucau <[email protected]> Authored: Mon Jun 5 14:52:42 2017 +0200 Committer: rmannibucau <[email protected]> Committed: Mon Jun 5 14:52:42 2017 +0200 ---------------------------------------------------------------------- .../org/apache/johnzon/core/JsonObjectImpl.java | 12 +++++++++--- .../apache/johnzon/core/JsonObjectImplTest.java | 17 +++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/johnzon/blob/de1e780a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java index 263f43e..bb3a5ae 100644 --- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java +++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java @@ -109,7 +109,14 @@ final class JsonObjectImpl extends AbstractMap<String, JsonValue> implements Jso @Override public boolean getBoolean(final String name) { - return JsonValue.TRUE.equals(valueOrExcpetion(name, JsonValue.class)); + final JsonValue obj = valueOrExcpetion(name, JsonValue.class); + if (JsonValue.TRUE == obj) { + return true; + } + if (JsonValue.FALSE == obj) { + return false; + } + throw new ClassCastException("Wrong value for a boolean: " + obj); } @Override @@ -117,9 +124,8 @@ final class JsonObjectImpl extends AbstractMap<String, JsonValue> implements Jso final Object v = value(name, JsonValue.class); if (v != null) { return JsonValue.TRUE.equals(v) || !JsonValue.FALSE.equals(v) && defaultValue; - } else { - return defaultValue; } + return defaultValue; } @Override http://git-wip-us.apache.org/repos/asf/johnzon/blob/de1e780a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java ---------------------------------------------------------------------- diff --git a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java index e7b5c06..1557070 100644 --- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java +++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import javax.json.Json; import javax.json.JsonObject; @@ -32,6 +33,22 @@ import org.junit.Test; public class JsonObjectImplTest { @Test + public void boolErrors() { + { + final JsonObject val = Json.createObjectBuilder().add("a", true).build(); + assertTrue(val.getBoolean("a")); + } + { + final JsonObject val = Json.createObjectBuilder().add("a", "wrong").build(); + try { + val.getBoolean("a"); + fail(); + } catch (final ClassCastException cce) { + // ok + } + } + } + @Test public void objectToString() { final JsonObjectBuilder ob = Json.createObjectBuilder(); ob.add("a", new JsonStringImpl("b"));
