# HG changeset patch # User Jaroslav Tulach # Date 1368128973 -7200 # Node ID 15f9f43bdf5b04a043667ee671b86aa6fb6221c1 # Parent 5d0bb2c25e8d9261c2188c98c3725d15d0a37312 Support other methods for XHR as well diff -r 5d0bb2c25e8d -r 15f9f43bdf5b ko-bck2brwsr/pom.xml --- a/ko-bck2brwsr/pom.xml Fri May 03 11:19:23 2013 +0200 +++ b/ko-bck2brwsr/pom.xml Thu May 09 21:49:33 2013 +0200 @@ -72,7 +72,7 @@ org.apidesign.bck2brwsr launcher.http - ${bck2brwsr.version} + 0.8-SNAPSHOT test diff -r 5d0bb2c25e8d -r 15f9f43bdf5b ko-bck2brwsr/src/main/java/org/apidesign/html/ko2brwsr/BrwsrCntxt.java --- a/ko-bck2brwsr/src/main/java/org/apidesign/html/ko2brwsr/BrwsrCntxt.java Fri May 03 11:19:23 2013 +0200 +++ b/ko-bck2brwsr/src/main/java/org/apidesign/html/ko2brwsr/BrwsrCntxt.java Thu May 09 21:49:33 2013 +0200 @@ -20,9 +20,12 @@ */ package org.apidesign.html.ko2brwsr; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.logging.Level; +import java.util.logging.Logger; import net.java.html.json.Context; import org.apidesign.html.json.spi.ContextBuilder; import org.apidesign.html.json.spi.FunctionBinding; @@ -61,9 +64,19 @@ R r = new R(); if (call.isJSONP()) { String me = ConvertTypes.createJSONP(r.arr, r); - ConvertTypes.loadJSON(call.composeURL(me), r.arr, r, me); + ConvertTypes.loadJSONP(call.composeURL(me), me); } else { - ConvertTypes.loadJSON(call.composeURL(null), r.arr, r, null); + String data = null; + if (call.isDoOutput()) { + try { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + call.writeData(bos); + data = new String(bos.toByteArray(), "UTF-8"); + } catch (IOException ex) { + call.notifyError(ex); + } + } + ConvertTypes.loadJSON(call.composeURL(null), r.arr, r, call.getMethod(), data); } } diff -r 5d0bb2c25e8d -r 15f9f43bdf5b ko-bck2brwsr/src/main/java/org/apidesign/html/ko2brwsr/ConvertTypes.java --- a/ko-bck2brwsr/src/main/java/org/apidesign/html/ko2brwsr/ConvertTypes.java Fri May 03 11:19:23 2013 +0200 +++ b/ko-bck2brwsr/src/main/java/org/apidesign/html/ko2brwsr/ConvertTypes.java Thu May 09 21:49:33 2013 +0200 @@ -112,36 +112,28 @@ return s; } - @JavaScriptBody(args = { "url", "arr", "callback" }, body = "" + @JavaScriptBody(args = { "url", "arr", "callback", "method", "data" }, body = "" + "var request = new XMLHttpRequest();\n" - + "request.open('GET', url, true);\n" + + "if (!method) method = 'GET';\n" + + "request.open(method, url, true);\n" + "request.setRequestHeader('Content-Type', 'application/json; charset=utf-8');\n" + "request.onreadystatechange = function() {\n" + " if (this.readyState!==4) return;\n" + " try {\n" + " arr[0] = eval('(' + this.response + ')');\n" + " } catch (error) {;\n" - + " throw 'Cannot parse' + error + ':' + this.response;\n" - + " };\n" + + " arr[0] = this.response;\n" + + " }\n" + " callback.run__V();\n" + "};" - + "request.send();" + + "if (data) request.send(data);" + + "else request.send();" ) - private static void loadJSON( - String url, Object[] jsonResult, Runnable whenDone + static void loadJSON( + String url, Object[] jsonResult, Runnable whenDone, String method, String data ) { } - public static void loadJSON( - String url, Object[] jsonResult, Runnable whenDone, String jsonp - ) { - if (jsonp == null) { - loadJSON(url, jsonResult, whenDone); - } else { - loadJSONP(url, jsonp); - } - } - @JavaScriptBody(args = { "url", "jsonp" }, body = "var scrpt = window.document.createElement('script');\n " + "scrpt.setAttribute('src', url);\n " @@ -150,7 +142,7 @@ + "var body = document.getElementsByTagName('body')[0];\n " + "body.appendChild(scrpt);\n" ) - private static void loadJSONP(String url, String jsonp) { + static void loadJSONP(String url, String jsonp) { }