1.1 --- a/json-tck/src/main/java/net/java/html/json/tests/JSONTest.java Thu May 09 21:49:33 2013 +0200
1.2 +++ b/json-tck/src/main/java/net/java/html/json/tests/JSONTest.java Thu May 09 22:19:30 2013 +0200
1.3 @@ -20,8 +20,10 @@
1.4 */
1.5 package net.java.html.json.tests;
1.6
1.7 +import java.io.ByteArrayInputStream;
1.8 import net.java.html.json.Context;
1.9 import net.java.html.json.Model;
1.10 +import net.java.html.json.Models;
1.11 import net.java.html.json.OnReceive;
1.12 import net.java.html.json.Property;
1.13 import org.apidesign.bck2brwsr.vmtest.BrwsrTest;
1.14 @@ -345,7 +347,24 @@
1.15 assert "Gitar".equals(p.getFirstName()) : "Expecting Gitar: " + p.getFirstName();
1.16 assert Sex.FEMALE.equals(p.getSex()) : "Expecting FEMALE: " + p.getSex();
1.17 }
1.18 -
1.19 +
1.20 + @Model(className = "NameAndValue", properties = {
1.21 + @Property(name = "name", type = String.class),
1.22 + @Property(name = "value", type = long.class),
1.23 + @Property(name = "small", type = byte.class)
1.24 + })
1.25 + static class NandV {
1.26 + }
1.27 +
1.28 + @BrwsrTest public void parseNullNumber() throws Exception {
1.29 + String txt = "{ \"name\":\"M\" }";
1.30 + ByteArrayInputStream is = new ByteArrayInputStream(txt.getBytes("UTF-8"));
1.31 + NameAndValue v = Models.parse(Utils.newContext(), NameAndValue.class, is);
1.32 + assert "M".equals(v.getName()) : "Name is 'M': " + v.getName();
1.33 + assert 0 == v.getValue() : "Value is empty: " + v.getValue();
1.34 + assert 0 == v.getSmall() : "Small value is empty: " + v.getSmall();
1.35 + }
1.36 +
1.37 static Object[] create() {
1.38 return VMTest.create(JSONTest.class);
1.39 }
2.1 --- a/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java Thu May 09 21:49:33 2013 +0200
2.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java Thu May 09 22:19:30 2013 +0200
2.3 @@ -311,7 +311,8 @@
2.4 w.append(type).append(".valueOf((String)ret[" + cnt + "]);\n");
2.5 } else if (isPrimitive(type)) {
2.6 w.append(" this.prop_").append(pn);
2.7 - w.append(" = ((Number)").append("ret[" + cnt + "]).");
2.8 + w.append(" = ret[" + cnt + "] == null ? (").append(type).append(")0 : ");
2.9 + w.append("((Number)").append("ret[" + cnt + "]).");
2.10 w.append(type).append("Value();\n");
2.11 } else {
2.12 w.append(" this.prop_").append(pn);