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"));

Reply via email to