You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2014/06/27 19:21:01 UTC

git commit: FLEECE-1 thanks Hendrik Saly for this patch adding sanity checks in JsonArrayBuilder

Repository: incubator-fleece
Updated Branches:
  refs/heads/master 6d20b92f9 -> 8a1d4c5e2


FLEECE-1 thanks Hendrik Saly for this patch adding sanity checks in JsonArrayBuilder


Project: http://git-wip-us.apache.org/repos/asf/incubator-fleece/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-fleece/commit/8a1d4c5e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fleece/tree/8a1d4c5e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fleece/diff/8a1d4c5e

Branch: refs/heads/master
Commit: 8a1d4c5e227eecef6123abee1bd27b1a850f8838
Parents: 6d20b92
Author: Romain Manni-Bucau <rm...@gmail.com>
Authored: Fri Jun 27 19:20:37 2014 +0200
Committer: Romain Manni-Bucau <rm...@gmail.com>
Committed: Fri Jun 27 19:20:37 2014 +0200

----------------------------------------------------------------------
 .../fleece/core/JsonArrayBuilderImpl.java       | 14 ++++
 .../org/apache/fleece/core/JsonArrayImpl.java   |  4 +-
 .../fleece/core/JsonArrayBuilderImplTest.java   | 86 ++++++++++++++++++++
 3 files changed, 103 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-fleece/blob/8a1d4c5e/fleece-core/src/main/java/org/apache/fleece/core/JsonArrayBuilderImpl.java
----------------------------------------------------------------------
diff --git a/fleece-core/src/main/java/org/apache/fleece/core/JsonArrayBuilderImpl.java b/fleece-core/src/main/java/org/apache/fleece/core/JsonArrayBuilderImpl.java
index 0b01aeb..4281deb 100644
--- a/fleece-core/src/main/java/org/apache/fleece/core/JsonArrayBuilderImpl.java
+++ b/fleece-core/src/main/java/org/apache/fleece/core/JsonArrayBuilderImpl.java
@@ -22,6 +22,7 @@ import javax.json.JsonArray;
 import javax.json.JsonArrayBuilder;
 import javax.json.JsonObjectBuilder;
 import javax.json.JsonValue;
+
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
@@ -30,24 +31,28 @@ public class JsonArrayBuilderImpl implements JsonArrayBuilder {
 
     @Override
     public JsonArrayBuilder add(final JsonValue value) {
+    	if(value == null) npe();
         array.addInternal(value);
         return this;
     }
 
     @Override
     public JsonArrayBuilder add(final String value) {
+    	if(value == null) npe();
         array.addInternal(new JsonStringImpl(value));
         return this;
     }
 
     @Override
     public JsonArrayBuilder add(final BigDecimal value) {
+    	if(value == null) npe();
         array.addInternal(new JsonNumberImpl(value));
         return this;
     }
 
     @Override
     public JsonArrayBuilder add(final BigInteger value) {
+    	if(value == null) npe();
         array.addInternal(new JsonNumberImpl(new BigDecimal(value)));
         return this;
     }
@@ -66,6 +71,9 @@ public class JsonArrayBuilderImpl implements JsonArrayBuilder {
 
     @Override
     public JsonArrayBuilder add(final double value) {
+    	Double valueObject = Double.valueOf(value);    	
+    	if(valueObject.isInfinite()) throw new NumberFormatException("value must not be infinite");
+    	if(valueObject.isNaN()) throw new NumberFormatException("value must not be NaN");
         array.addInternal(new JsonDoubleImpl(value));
         return this;
     }
@@ -84,12 +92,14 @@ public class JsonArrayBuilderImpl implements JsonArrayBuilder {
 
     @Override
     public JsonArrayBuilder add(final JsonObjectBuilder builder) {
+    	if(builder == null) throw new NullPointerException("builder must not be null");
         array.addInternal(builder.build());
         return this;
     }
 
     @Override
     public JsonArrayBuilder add(final JsonArrayBuilder builder) {
+    	if(builder == null) throw new NullPointerException("builder must not be null");
         array.addInternal(builder.build());
         return this;
     }
@@ -98,4 +108,8 @@ public class JsonArrayBuilderImpl implements JsonArrayBuilder {
     public JsonArray build() {
         return array;
     }
+    
+    private static NullPointerException npe() {
+        throw new NullPointerException("value must not be null");
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-fleece/blob/8a1d4c5e/fleece-core/src/main/java/org/apache/fleece/core/JsonArrayImpl.java
----------------------------------------------------------------------
diff --git a/fleece-core/src/main/java/org/apache/fleece/core/JsonArrayImpl.java b/fleece-core/src/main/java/org/apache/fleece/core/JsonArrayImpl.java
index a2fb350..3424f67 100644
--- a/fleece-core/src/main/java/org/apache/fleece/core/JsonArrayImpl.java
+++ b/fleece-core/src/main/java/org/apache/fleece/core/JsonArrayImpl.java
@@ -140,7 +140,9 @@ public class JsonArrayImpl extends LinkedList<JsonValue> implements JsonArray {
         return JsonArray.class.isInstance(obj) && super.equals(obj);
     }
 
-    public void addInternal(final JsonValue value) {
+    //make protected if class is supposed to be subclassed
+    //make package private otherwise
+    protected void addInternal(final JsonValue value) {
         super.add(value);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-fleece/blob/8a1d4c5e/fleece-core/src/test/java/org/apache/fleece/core/JsonArrayBuilderImplTest.java
----------------------------------------------------------------------
diff --git a/fleece-core/src/test/java/org/apache/fleece/core/JsonArrayBuilderImplTest.java b/fleece-core/src/test/java/org/apache/fleece/core/JsonArrayBuilderImplTest.java
index 42717c6..65244c3 100644
--- a/fleece-core/src/test/java/org/apache/fleece/core/JsonArrayBuilderImplTest.java
+++ b/fleece-core/src/test/java/org/apache/fleece/core/JsonArrayBuilderImplTest.java
@@ -18,10 +18,15 @@
  */
 package org.apache.fleece.core;
 
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
 import org.junit.Test;
 
 import javax.json.Json;
 import javax.json.JsonArrayBuilder;
+import javax.json.JsonObjectBuilder;
+import javax.json.JsonValue;
 
 import static org.junit.Assert.assertEquals;
 
@@ -32,4 +37,85 @@ public class JsonArrayBuilderImplTest {
         builder.add("a").add("b");
         assertEquals("[\"a\",\"b\"]", builder.build().toString());
     }
+    
+    @Test
+    public void emptyArray() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        assertEquals("[]", builder.build().toString());
+    }
+    
+    @Test
+    public void nullArray() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.addNull().addNull();
+        assertEquals("[null,null]", builder.build().toString());
+    }
+    
+    @Test
+    public void nullJsonValueArray() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add(JsonValue.NULL).add(JsonValue.NULL);
+        assertEquals("[null,null]", builder.build().toString());
+    }
+    
+    @Test
+    public void boolJsonValueArray() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add(JsonValue.TRUE).add(JsonValue.FALSE);
+        assertEquals("[true,false]", builder.build().toString());
+    }
+    
+    @Test(expected=NullPointerException.class)
+    public void addStringNpeIfNull() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add((String) null);
+    }
+    
+    @Test(expected=NullPointerException.class)
+    public void addJVNpeIfNull() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add((JsonValue) null);
+    }
+    
+    @Test(expected=NullPointerException.class)
+    public void addBDNpeIfNull() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add((BigDecimal) null);
+    }
+    
+    @Test(expected=NullPointerException.class)
+    public void addBINpeIfNull() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add((BigInteger) null);
+    }
+    
+    @Test(expected=NullPointerException.class)
+    public void addJABuilderNpeIfNull() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add((JsonArrayBuilder) null);
+    }
+    
+    @Test(expected=NullPointerException.class)
+    public void addJOBuilderNpeIfNull() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add((JsonObjectBuilder) null);
+    }
+    
+    @Test(expected=NumberFormatException.class)
+    public void addDoubleNpeIfNaN() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add((double) Double.NaN);
+    }
+    
+    @Test(expected=NumberFormatException.class)
+    public void addDoubleNpeIfPosInfinite() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add((double) Double.POSITIVE_INFINITY);
+    }
+    
+    @Test(expected=NumberFormatException.class)
+    public void addDoubleNpeIfNegIfinite() {
+        final JsonArrayBuilder builder = Json.createArrayBuilder();
+        builder.add((double) Double.NEGATIVE_INFINITY);
+    }
 }