1.1 --- a/json-tck/src/main/java/net/java/html/json/tests/JSONTest.java Tue Nov 26 10:20:50 2013 +0100
1.2 +++ b/json-tck/src/main/java/net/java/html/json/tests/JSONTest.java Thu Nov 28 14:44:08 2013 +0100
1.3 @@ -451,6 +451,14 @@
1.4 assert 0 == v.getValue() : "Value is empty: " + v.getValue();
1.5 assert 0 == v.getSmall() : "Small value is empty: " + v.getSmall();
1.6 }
1.7 +
1.8 + @KOTest public void deserializeWrongEnum() throws Exception {
1.9 + String str = "{ \"sex\" : \"unknown\" }";
1.10 + ByteArrayInputStream is = new ByteArrayInputStream(str.getBytes("UTF-8"));
1.11 + Person p = Models.parse(newContext(), Person.class, is);
1.12 + assert p.getSex() == null : "Wrong sex means null, but was: " + p.getSex();
1.13 + }
1.14 +
1.15
1.16 private static BrwsrCtx newContext() {
1.17 return Utils.newContext(JSONTest.class);
2.1 --- a/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java Tue Nov 26 10:20:50 2013 +0100
2.2 +++ b/json/src/main/java/org/apidesign/html/json/impl/ModelProcessor.java Thu Nov 28 14:44:08 2013 +0100
2.3 @@ -374,9 +374,13 @@
2.4 w.append(" }\n");
2.5 } else {
2.6 if (isEnum[0]) {
2.7 + w.append(" try {\n");
2.8 w.append(" this.prop_").append(pn);
2.9 w.append(" = ret[" + cnt + "] == null ? null : ");
2.10 w.append(type).append(".valueOf(org.apidesign.html.json.impl.JSON.stringValue(ret[" + cnt + "]));\n");
2.11 + w.append(" } catch (IllegalArgumentException ex) {\n");
2.12 + w.append(" ex.printStackTrace();\n");
2.13 + w.append(" }\n");
2.14 } else if (isPrimitive(type)) {
2.15 w.append(" this.prop_").append(pn);
2.16 w.append(" = ret[" + cnt + "] == null ? ");