1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypes.java Thu Apr 18 12:31:31 2013 +0200
1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypes.java Thu Apr 18 12:47:25 2013 +0200
1.3 @@ -54,6 +54,9 @@
1.4 if (value == null) {
1.5 return "null";
1.6 }
1.7 + if (value instanceof Enum) {
1.8 + value = value.toString();
1.9 + }
1.10 if (value instanceof String) {
1.11 return '"' +
1.12 ((String)value).
2.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Thu Apr 18 12:31:31 2013 +0200
2.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Thu Apr 18 12:47:25 2013 +0200
2.3 @@ -1140,7 +1140,8 @@
2.4 String sep = "";
2.5 for (Prprt p : props) {
2.6 w.write(sep);
2.7 - w.append(" sb.append(\"" + p.name() + ": \");\n");
2.8 + w.append(" sb.append('\"').append(\"" + p.name() + "\")");
2.9 + w.append(".append('\"').append(\":\");\n");
2.10 w.append(" sb.append(org.apidesign.bck2brwsr.htmlpage.ConvertTypes.toJSON(prop_");
2.11 w.append(p.name()).append("));\n");
2.12 sep = " sb.append(',');\n";
3.1 --- a/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java Thu Apr 18 12:31:31 2013 +0200
3.2 +++ b/javaquery/api/src/test/java/org/apidesign/bck2brwsr/htmlpage/JSONTest.java Thu Apr 18 12:47:25 2013 +0200
3.3 @@ -70,6 +70,25 @@
3.4 assertEquals(o.getString("sex"), "MALE");
3.5 }
3.6
3.7 + @BrwsrTest public void toJSONInABrowser() throws Throwable {
3.8 + Person p = new Person();
3.9 + p.setSex(Sex.MALE);
3.10 + p.setFirstName("Jarda");
3.11 + p.setLastName("Tulach");
3.12 +
3.13 + Object json;
3.14 + try {
3.15 + json = parseJSON(p.toString());
3.16 + } catch (Throwable ex) {
3.17 + throw new IllegalStateException("Can't parse " + p).initCause(ex);
3.18 + }
3.19 +
3.20 + Person p2 = new Person(json);
3.21 +
3.22 + assert p2.getFirstName().equals(p.getFirstName()) :
3.23 + "Should be the same: " + p.getFirstName() + " != " + p2.getFirstName();
3.24 + }
3.25 +
3.26 @Test public void personWithWildCharactersAndNulls() throws JSONException {
3.27 Person p = new Person();
3.28 p.setFirstName("'\"\n");
3.29 @@ -213,6 +232,9 @@
3.30 @JavaScriptBody(args = { }, body = "return window.document.getElementsByTagName('script').length;")
3.31 private static native int scriptElements();
3.32
3.33 + @JavaScriptBody(args = { "s" }, body = "return window.JSON.parse(s);")
3.34 + private static native Object parseJSON(String s);
3.35 +
3.36 @Http(@Http.Resource(
3.37 content = "{'firstName': 'Sitar', 'sex': 'MALE'}",
3.38 path="/person.json",