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);
+ }
}