#252987: Turn singleton into array when requested.
1.1 --- a/json-tck/src/main/java/net/java/html/json/tests/ConvertTypesTest.java Sun Jun 14 21:45:02 2015 +0200
1.2 +++ b/json-tck/src/main/java/net/java/html/json/tests/ConvertTypesTest.java Sun Jun 14 22:11:56 2015 +0200
1.3 @@ -270,8 +270,16 @@
1.4
1.5 @KOTest
1.6 public void parseFiveElementsAsAnArray() throws Exception {
1.7 + doParseInnerArray(5, 5);
1.8 + }
1.9 +
1.10 + @KOTest
1.11 + public void parseInnerElementAsAnArray() throws Exception {
1.12 + doParseInnerArray(-1, 1);
1.13 + }
1.14 + private void doParseInnerArray(int array, int expect) throws Exception {
1.15 final BrwsrCtx c = newContext();
1.16 - final InputStream o = createIS(false, false, 5);
1.17 + final InputStream o = createIS(false, false, array);
1.18 SequenceInputStream is = new SequenceInputStream(
1.19 new ByteArrayInputStream("{ \"info\" : ".getBytes("UTF-8")),
1.20 new SequenceInputStream(
1.21 @@ -293,7 +301,7 @@
1.22 cnt++;
1.23 }
1.24
1.25 - assertEquals(cnt, 5, "Fives people found in info");
1.26 + assertEquals(cnt, expect, "Person found in info");
1.27 }
1.28
1.29 @KOTest
2.1 --- a/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java Sun Jun 14 21:45:02 2015 +0200
2.2 +++ b/json/src/main/java/org/netbeans/html/json/impl/ModelProcessor.java Sun Jun 14 22:11:56 2015 +0200
2.3 @@ -443,10 +443,9 @@
2.4 boolean isPrimitive[] = { false };
2.5 String type = checkType(props[prop++], isModel, isEnum, isPrimitive);
2.6 if (p.array()) {
2.7 - w.append(" if (ret[" + cnt + "] instanceof Object[]) {\n");
2.8 - w.append(" for (Object e : ((Object[])ret[" + cnt + "])) {\n");
2.9 + w.append(" for (Object e : useAsArray(ret[" + cnt + "])) {\n");
2.10 if (isModel[0]) {
2.11 - w.append(" this.prop_").append(pn).append(".add(proto.read");
2.12 + w.append(" this.prop_").append(pn).append(".add(proto.read");
2.13 w.append("(" + type + ".class, e));\n");
2.14 } else if (isEnum[0]) {
2.15 w.append(" this.prop_").append(pn);
2.16 @@ -461,7 +460,6 @@
2.17 w.append(type).append(")e);\n");
2.18 }
2.19 }
2.20 - w.append(" }\n");
2.21 w.append(" }\n");
2.22 } else {
2.23 if (isEnum[0]) {
2.24 @@ -497,6 +495,9 @@
2.25 cnt++;
2.26 }
2.27 w.append(" }\n");
2.28 + w.append(" private static Object[] useAsArray(Object o) {\n");
2.29 + w.append(" return o instanceof Object[] ? ((Object[])o) : o == null ? new Object[0] : new Object[] { o };\n");
2.30 + w.append(" }\n");
2.31 writeToString(props, w);
2.32 writeClone(className, props, w);
2.33 String targetId = findTargetId(e);
3.1 --- a/src/main/javadoc/overview.html Sun Jun 14 21:45:02 2015 +0200
3.2 +++ b/src/main/javadoc/overview.html Sun Jun 14 22:11:56 2015 +0200
3.3 @@ -80,7 +80,8 @@
3.4 One can control {@link net.java.html.json.OnReceive#headers() HTTP request headers}
3.5 when connecting to server using the {@link net.java.html.json.OnReceive}
3.6 annotation.
3.7 - Bugfix of issue <a target="_blank" href='https://netbeans.org/bugzilla/show_bug.cgi?id=250503'>250503</a>.
3.8 + Bugfix of issues <a target="_blank" href='https://netbeans.org/bugzilla/show_bug.cgi?id=250503'>250503</a>,
3.9 + <a target="_blank" href='https://netbeans.org/bugzilla/show_bug.cgi?id=252987'>252987</a>.
3.10
3.11 <h3>What's New in Version 1.1?</h3>
3.12