1.1 --- a/ko-bck2brwsr/pom.xml Fri May 03 11:19:23 2013 +0200
1.2 +++ b/ko-bck2brwsr/pom.xml Thu May 09 21:49:33 2013 +0200
1.3 @@ -72,7 +72,7 @@
1.4 <dependency>
1.5 <groupId>org.apidesign.bck2brwsr</groupId>
1.6 <artifactId>launcher.http</artifactId>
1.7 - <version>${bck2brwsr.version}</version>
1.8 + <version>0.8-SNAPSHOT</version>
1.9 <scope>test</scope>
1.10 </dependency>
1.11 <dependency>
2.1 --- a/ko-bck2brwsr/src/main/java/org/apidesign/html/ko2brwsr/BrwsrCntxt.java Fri May 03 11:19:23 2013 +0200
2.2 +++ b/ko-bck2brwsr/src/main/java/org/apidesign/html/ko2brwsr/BrwsrCntxt.java Thu May 09 21:49:33 2013 +0200
2.3 @@ -20,9 +20,12 @@
2.4 */
2.5 package org.apidesign.html.ko2brwsr;
2.6
2.7 +import java.io.ByteArrayOutputStream;
2.8 import java.io.IOException;
2.9 import java.io.InputStream;
2.10 import java.io.InputStreamReader;
2.11 +import java.util.logging.Level;
2.12 +import java.util.logging.Logger;
2.13 import net.java.html.json.Context;
2.14 import org.apidesign.html.json.spi.ContextBuilder;
2.15 import org.apidesign.html.json.spi.FunctionBinding;
2.16 @@ -61,9 +64,19 @@
2.17 R r = new R();
2.18 if (call.isJSONP()) {
2.19 String me = ConvertTypes.createJSONP(r.arr, r);
2.20 - ConvertTypes.loadJSON(call.composeURL(me), r.arr, r, me);
2.21 + ConvertTypes.loadJSONP(call.composeURL(me), me);
2.22 } else {
2.23 - ConvertTypes.loadJSON(call.composeURL(null), r.arr, r, null);
2.24 + String data = null;
2.25 + if (call.isDoOutput()) {
2.26 + try {
2.27 + ByteArrayOutputStream bos = new ByteArrayOutputStream();
2.28 + call.writeData(bos);
2.29 + data = new String(bos.toByteArray(), "UTF-8");
2.30 + } catch (IOException ex) {
2.31 + call.notifyError(ex);
2.32 + }
2.33 + }
2.34 + ConvertTypes.loadJSON(call.composeURL(null), r.arr, r, call.getMethod(), data);
2.35 }
2.36 }
2.37
3.1 --- a/ko-bck2brwsr/src/main/java/org/apidesign/html/ko2brwsr/ConvertTypes.java Fri May 03 11:19:23 2013 +0200
3.2 +++ b/ko-bck2brwsr/src/main/java/org/apidesign/html/ko2brwsr/ConvertTypes.java Thu May 09 21:49:33 2013 +0200
3.3 @@ -112,36 +112,28 @@
3.4 return s;
3.5 }
3.6
3.7 - @JavaScriptBody(args = { "url", "arr", "callback" }, body = ""
3.8 + @JavaScriptBody(args = { "url", "arr", "callback", "method", "data" }, body = ""
3.9 + "var request = new XMLHttpRequest();\n"
3.10 - + "request.open('GET', url, true);\n"
3.11 + + "if (!method) method = 'GET';\n"
3.12 + + "request.open(method, url, true);\n"
3.13 + "request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');\n"
3.14 + "request.onreadystatechange = function() {\n"
3.15 + " if (this.readyState!==4) return;\n"
3.16 + " try {\n"
3.17 + " arr[0] = eval('(' + this.response + ')');\n"
3.18 + " } catch (error) {;\n"
3.19 - + " throw 'Cannot parse' + error + ':' + this.response;\n"
3.20 - + " };\n"
3.21 + + " arr[0] = this.response;\n"
3.22 + + " }\n"
3.23 + " callback.run__V();\n"
3.24 + "};"
3.25 - + "request.send();"
3.26 + + "if (data) request.send(data);"
3.27 + + "else request.send();"
3.28 )
3.29 - private static void loadJSON(
3.30 - String url, Object[] jsonResult, Runnable whenDone
3.31 + static void loadJSON(
3.32 + String url, Object[] jsonResult, Runnable whenDone, String method, String data
3.33 ) {
3.34 }
3.35
3.36 - public static void loadJSON(
3.37 - String url, Object[] jsonResult, Runnable whenDone, String jsonp
3.38 - ) {
3.39 - if (jsonp == null) {
3.40 - loadJSON(url, jsonResult, whenDone);
3.41 - } else {
3.42 - loadJSONP(url, jsonp);
3.43 - }
3.44 - }
3.45 -
3.46 @JavaScriptBody(args = { "url", "jsonp" }, body =
3.47 "var scrpt = window.document.createElement('script');\n "
3.48 + "scrpt.setAttribute('src', url);\n "
3.49 @@ -150,7 +142,7 @@
3.50 + "var body = document.getElementsByTagName('body')[0];\n "
3.51 + "body.appendChild(scrpt);\n"
3.52 )
3.53 - private static void loadJSONP(String url, String jsonp) {
3.54 + static void loadJSONP(String url, String jsonp) {
3.55
3.56 }
3.57