# HG changeset patch # User Jaroslav Tulach # Date 1366299268 -7200 # Node ID e2d1dc505c24fb9ff4c485a7739a233eb6b39e2d # Parent 80c46ea076d3e92df4066c94fa99b5e237aca1a7 Support for null enum values. Transplanted from 7a7686e6f875 diff -r 80c46ea076d3 -r e2d1dc505c24 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Thu Apr 18 12:47:25 2013 +0200 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Thu Apr 18 17:34:28 2013 +0200 @@ -246,7 +246,7 @@ w.append(type).append("(e));\n"); } else if (isEnum[0]) { w.append(" this.prop_").append(pn); - w.append(".add("); + w.append(".add(e == null ? null : "); w.append(type).append(".valueOf((String)e));\n"); } else { if (isPrimitive(type)) { @@ -262,7 +262,7 @@ } else { if (isEnum[0]) { w.append(" this.prop_").append(pn); - w.append(" = "); + w.append(" = ret[" + cnt + "] == null ? null : "); w.append(type).append(".valueOf((String)ret[" + cnt + "]);\n"); } else if (isPrimitive(type)) { w.append(" this.prop_").append(pn); diff -r 80c46ea076d3 -r e2d1dc505c24 javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypesTest.java --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypesTest.java Thu Apr 18 12:47:25 2013 +0200 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypesTest.java Thu Apr 18 17:34:28 2013 +0200 @@ -27,17 +27,17 @@ * @author Jaroslav Tulach */ public class ConvertTypesTest { - @JavaScriptBody(args = { }, body = "var json = new Object();" + @JavaScriptBody(args = { "includeSex" }, body = "var json = new Object();" + "json.firstName = 'son';\n" + "json.lastName = 'dj';\n" - + "json.sex = 'MALE';\n" + + "if (includeSex) json.sex = 'MALE';\n" + "return json;" ) - private static native Object createJSON(); + private static native Object createJSON(boolean includeSex); @BrwsrTest - public void testConvertToPeople() { - final Object o = createJSON(); + public void testConvertToPeople() throws Exception { + final Object o = createJSON(true); Person p = new Person(o); @@ -45,6 +45,17 @@ assert "dj".equals(p.getLastName()) : "Last name: " + p.getLastName(); assert Sex.MALE.equals(p.getSex()) : "Sex: " + p.getSex(); } + + @BrwsrTest + public void testConvertToPeopleWithoutSex() throws Exception { + final Object o = createJSON(false); + + Person p = new Person(o); + + assert "son".equals(p.getFirstName()) : "First name: " + p.getFirstName(); + assert "dj".equals(p.getLastName()) : "Last name: " + p.getLastName(); + assert p.getSex() == null : "No sex: " + p.getSex(); + } @Factory public static Object[] create() { return VMTest.create(ConvertTypesTest.class);