Support for null enum values. Transplanted from 7a7686e6f875
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 18 Apr 2013 17:34:28 +0200
changeset 1010e2d1dc505c24
parent 1009 80c46ea076d3
child 1017 be21afc3d48a
child 1022 00ae3f46e54f
Support for null enum values. Transplanted from 7a7686e6f875
javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java
javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypesTest.java
     1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java	Thu Apr 18 12:47:25 2013 +0200
     1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java	Thu Apr 18 17:34:28 2013 +0200
     1.3 @@ -246,7 +246,7 @@
     1.4                              w.append(type).append("(e));\n");
     1.5                          } else if (isEnum[0]) {
     1.6                              w.append("    this.prop_").append(pn);
     1.7 -                            w.append(".add(");
     1.8 +                            w.append(".add(e == null ? null : ");
     1.9                              w.append(type).append(".valueOf((String)e));\n");
    1.10                          } else {
    1.11                              if (isPrimitive(type)) {
    1.12 @@ -262,7 +262,7 @@
    1.13                      } else {
    1.14                          if (isEnum[0]) {
    1.15                              w.append("    this.prop_").append(pn);
    1.16 -                            w.append(" = ");
    1.17 +                            w.append(" = ret[" + cnt + "] == null ? null : ");
    1.18                              w.append(type).append(".valueOf((String)ret[" + cnt + "]);\n");
    1.19                          } else if (isPrimitive(type)) {
    1.20                              w.append("    this.prop_").append(pn);
     2.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypesTest.java	Thu Apr 18 12:47:25 2013 +0200
     2.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypesTest.java	Thu Apr 18 17:34:28 2013 +0200
     2.3 @@ -27,17 +27,17 @@
     2.4   * @author Jaroslav Tulach <jtulach@netbeans.org>
     2.5   */
     2.6  public class ConvertTypesTest {
     2.7 -    @JavaScriptBody(args = {  }, body = "var json = new Object();"
     2.8 +    @JavaScriptBody(args = { "includeSex" }, body = "var json = new Object();"
     2.9          + "json.firstName = 'son';\n"
    2.10          + "json.lastName = 'dj';\n"
    2.11 -        + "json.sex = 'MALE';\n"
    2.12 +        + "if (includeSex) json.sex = 'MALE';\n"
    2.13          + "return json;"
    2.14      )
    2.15 -    private static native Object createJSON();
    2.16 +    private static native Object createJSON(boolean includeSex);
    2.17      
    2.18      @BrwsrTest
    2.19 -    public void testConvertToPeople() {
    2.20 -        final Object o = createJSON();
    2.21 +    public void testConvertToPeople() throws Exception {
    2.22 +        final Object o = createJSON(true);
    2.23          
    2.24          Person p = new Person(o);
    2.25          
    2.26 @@ -45,6 +45,17 @@
    2.27          assert "dj".equals(p.getLastName()) : "Last name: " + p.getLastName();
    2.28          assert Sex.MALE.equals(p.getSex()) : "Sex: " + p.getSex();
    2.29      }
    2.30 +
    2.31 +    @BrwsrTest
    2.32 +    public void testConvertToPeopleWithoutSex() throws Exception {
    2.33 +        final Object o = createJSON(false);
    2.34 +        
    2.35 +        Person p = new Person(o);
    2.36 +        
    2.37 +        assert "son".equals(p.getFirstName()) : "First name: " + p.getFirstName();
    2.38 +        assert "dj".equals(p.getLastName()) : "Last name: " + p.getLastName();
    2.39 +        assert p.getSex() == null : "No sex: " + p.getSex();
    2.40 +    }
    2.41      
    2.42      @Factory public static Object[] create() {
    2.43          return VMTest.create(ConvertTypesTest.class);