diff -r 3bd43aa6f08d -r 6448c284fe21 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypes.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypes.java Mon Apr 08 12:12:42 2013 +0200 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/ConvertTypes.java Mon Apr 08 16:51:30 2013 +0200 @@ -73,7 +73,32 @@ private static Object getProperty(Object object, String property) { return null; } + + public static String createJSONP(Object[] jsonResult, Runnable whenDone) { + int h = whenDone.hashCode(); + String name; + for (;;) { + name = "jsonp" + Integer.toHexString(h); + if (defineIfUnused(name, jsonResult, whenDone)) { + return name; + } + h++; + } + } + @JavaScriptBody(args = { "name", "arr", "run" }, body = + "if (window[name]) return false;\n " + + "window[name] = function(data) {\n " + + " arr[0] = data;\n" + + " run.run__V();\n" + + " delete window[name];\n" + + "};" + + "return true;\n" + ) + private static boolean defineIfUnused(String name, Object[] arr, Runnable run) { + return true; + } + @JavaScriptBody(args = { "url", "arr", "callback" }, body = "" + "var request = new XMLHttpRequest();\n" + "request.open('GET', url, true);\n" @@ -89,11 +114,33 @@ + "};" + "request.send();" ) - public static void loadJSON( + private static void loadJSON( String url, Object[] jsonResult, Runnable whenDone ) { } + 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 " + + "scrpt.setAttribute('id', jsonp);\n " + + "scrpt.setAttribute('type', 'text/javascript');\n " + + "var body = document.getElementsByTagName('body')[0];\n " + + "body.appendChild(scrpt);\n" + ) + private static void loadJSONP(String url, String jsonp) { + + } + public static void extractJSON(Object jsonObject, String[] props, Object[] values) { for (int i = 0; i < props.length; i++) { values[i] = getProperty(jsonObject, props[i]);