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);