Support for null enums fx
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 18 Apr 2013 17:28:34 +0200
branchfx
changeset 10147a7686e6f875
parent 1013 32502264b896
child 1015 d7cff2cba6e5
Support for null enums
javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypes.java
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/ConvertTypes.java	Thu Apr 18 17:18:10 2013 +0200
     1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypes.java	Thu Apr 18 17:28:34 2013 +0200
     1.3 @@ -18,7 +18,6 @@
     1.4  package org.apidesign.bck2brwsr.htmlpage;
     1.5  
     1.6  import java.io.IOException;
     1.7 -import java.io.InputStream;
     1.8  import java.io.InputStreamReader;
     1.9  import java.io.PushbackInputStream;
    1.10  import java.io.Reader;
     2.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java	Thu Apr 18 17:18:10 2013 +0200
     2.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java	Thu Apr 18 17:28:34 2013 +0200
     2.3 @@ -246,7 +246,7 @@
     2.4                              w.append(type).append("(e));\n");
     2.5                          } else if (isEnum[0]) {
     2.6                              w.append("    this.prop_").append(pn);
     2.7 -                            w.append(".add(");
     2.8 +                            w.append(".add(e == null ? null : ");
     2.9                              w.append(type).append(".valueOf((String)e));\n");
    2.10                          } else {
    2.11                              if (isPrimitive(type)) {
    2.12 @@ -262,7 +262,7 @@
    2.13                      } else {
    2.14                          if (isEnum[0]) {
    2.15                              w.append("    this.prop_").append(pn);
    2.16 -                            w.append(" = ");
    2.17 +                            w.append(" = ret[" + cnt + "] == null ? null : ");
    2.18                              w.append(type).append(".valueOf((String)ret[" + cnt + "]);\n");
    2.19                          } else if (isPrimitive(type)) {
    2.20                              w.append("    this.prop_").append(pn);
     3.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypesTest.java	Thu Apr 18 17:18:10 2013 +0200
     3.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypesTest.java	Thu Apr 18 17:28:34 2013 +0200
     3.3 @@ -20,6 +20,8 @@
     3.4  import org.apidesign.bck2brwsr.core.JavaScriptBody;
     3.5  import org.apidesign.bck2brwsr.vmtest.BrwsrTest;
     3.6  import org.apidesign.bck2brwsr.vmtest.VMTest;
     3.7 +import org.json.JSONException;
     3.8 +import org.json.JSONObject;
     3.9  import org.testng.annotations.Factory;
    3.10  
    3.11  /**
    3.12 @@ -27,17 +29,25 @@
    3.13   * @author Jaroslav Tulach <jtulach@netbeans.org>
    3.14   */
    3.15  public class ConvertTypesTest {
    3.16 -    @JavaScriptBody(args = {  }, body = "var json = new Object();"
    3.17 +    @JavaScriptBody(args = { "includeSex" }, body = "var json = new Object();"
    3.18          + "json.firstName = 'son';\n"
    3.19          + "json.lastName = 'dj';\n"
    3.20          + "json.sex = 'MALE';\n"
    3.21          + "return json;"
    3.22      )
    3.23 -    private static native Object createJSON();
    3.24 +    private static Object createJSON(boolean includeSex) throws JSONException {
    3.25 +        JSONObject o = new JSONObject();
    3.26 +        o.put("firstName", "son");
    3.27 +        o.put("lastName", "dj");
    3.28 +        if (includeSex) {
    3.29 +            o.put("sex", "MALE");
    3.30 +        }
    3.31 +        return o;
    3.32 +    }
    3.33      
    3.34      @BrwsrTest
    3.35 -    public void testConvertToPeople() {
    3.36 -        final Object o = createJSON();
    3.37 +    public void testConvertToPeople() throws JSONException {
    3.38 +        final Object o = createJSON(true);
    3.39          
    3.40          Person p = new Person(o);
    3.41          
    3.42 @@ -45,6 +55,17 @@
    3.43          assert "dj".equals(p.getLastName()) : "Last name: " + p.getLastName();
    3.44          assert Sex.MALE.equals(p.getSex()) : "Sex: " + p.getSex();
    3.45      }
    3.46 +
    3.47 +    @BrwsrTest
    3.48 +    public void testConvertToPeopleWithoutSex() throws JSONException {
    3.49 +        final Object o = createJSON(false);
    3.50 +        
    3.51 +        Person p = new Person(o);
    3.52 +        
    3.53 +        assert "son".equals(p.getFirstName()) : "First name: " + p.getFirstName();
    3.54 +        assert "dj".equals(p.getLastName()) : "Last name: " + p.getLastName();
    3.55 +        assert p.getSex() == null : "No sex: " + p.getSex();
    3.56 +    }
    3.57      
    3.58      @Factory public static Object[] create() {
    3.59          return VMTest.create(ConvertTypesTest.class);