[maven-release-plugin] copy for tag org.apache.sling.commons.json-2.0.14
git-svn-id: https://svn.apache.org/repos/asf/sling/tags/org.apache.sling.commons.json-2.0.14@1713379 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/commons/json/util/Validator.java b/src/main/java/org/apache/sling/commons/json/util/Validator.java
index ca357aa..f8bf974 100644
--- a/src/main/java/org/apache/sling/commons/json/util/Validator.java
+++ b/src/main/java/org/apache/sling/commons/json/util/Validator.java
@@ -54,9 +54,13 @@
// no tokens at all - we consider this valid
return;
} else if (c == '[') {
- if (x.nextClean() == ']') {
+ char nextChar = x.nextClean();
+ if (nextChar == ']') {
return;
}
+ else if (nextChar == 0) {
+ throw x.syntaxError("Detected unclosed array.");
+ }
x.back();
for (;;) {
if (x.nextClean() == ',') {
@@ -66,7 +70,7 @@
c = x.nextClean();
x.back();
if ( c == '{' || c == '[') {
- // recursiv validation for object and array
+ // recursive validation for object and array
validate(x);
} else {
x.nextValue();
diff --git a/src/test/java/org/apache/sling/commons/json/util/ValidatorTest.java b/src/test/java/org/apache/sling/commons/json/util/ValidatorTest.java
index 9f79880..a7273cd 100644
--- a/src/test/java/org/apache/sling/commons/json/util/ValidatorTest.java
+++ b/src/test/java/org/apache/sling/commons/json/util/ValidatorTest.java
@@ -25,21 +25,37 @@
public class ValidatorTest {
@Test
- public void testSimpleJSON() throws JSONException {
+ public void testEmptyString() throws JSONException {
Validator.validate("");
+ }
+
+ @Test
+ public void testEmptyArray() throws JSONException {
Validator.validate("[]");
+ }
+
+ @Test
+ public void testEmptyObject() throws JSONException {
Validator.validate("{}");
}
@Test
- public void testBasicJSON() throws JSONException {
+ public void testSimpleArray() throws JSONException {
Validator.validate("[1,true,\"hallo\"]");
+ }
+
+ @Test
+ public void testSimpleObject() throws JSONException {
Validator.validate("{a:\"you\", b:2, c:true}");
}
@Test
- public void testNestedJSON() throws JSONException {
+ public void testNestedJSONArray() throws JSONException {
Validator.validate("[1,true,\"hallo\", {a:1}, [1,2]]");
+ }
+
+ @Test
+ public void testNestedJSONObject() throws JSONException {
Validator.validate("{a:\"you\", b:2, c:true, d: {d:1}, e: []}");
}
@@ -115,4 +131,24 @@
//------------------invalid ^
}
+ @Test(expected=JSONException.class)
+ public void testOpeningBrackedOnlyArray() throws JSONException {
+ Validator.validate("[");
+ }
+
+ @Test(expected=JSONException.class)
+ public void testOpeningBrackedOnlyObject() throws JSONException {
+ Validator.validate("{");
+ }
+
+ @Test(expected=JSONException.class)
+ public void testUnclosedArray() throws JSONException {
+ Validator.validate("[1,true,\"hallo\"");
+ }
+
+ @Test(expected=JSONException.class)
+ public void testUnclosedObject() throws JSONException {
+ Validator.validate("{a:\"you\", b:2, c:true");
+ }
+
}