# HG changeset patch # User Jaroslav Tulach # Date 1389298894 -3600 # Node ID 66358a11c0168826cf4441da5baed68a48f7bee9 # Parent dbd3ed861f5f9e6117aedf5a040b7d9d1ab3ca92 Need to implement FromJavaScript interface diff -r dbd3ed861f5f -r 66358a11c016 ko/fx/src/test/java/org/apidesign/bck2brwsr/kofx/KnockoutFXTest.java --- a/ko/fx/src/test/java/org/apidesign/bck2brwsr/kofx/KnockoutFXTest.java Thu Jan 09 21:21:11 2014 +0100 +++ b/ko/fx/src/test/java/org/apidesign/bck2brwsr/kofx/KnockoutFXTest.java Thu Jan 09 21:21:34 2014 +0100 @@ -64,30 +64,32 @@ TyrusContext tc = new TyrusContext(); Contexts.Builder b = Contexts.newBuilder(). register(Technology.class, ko.knockout(), 10). - register(Transfer.class, ko.transferViaOrgJSON(), 10); + register(Transfer.class, ko.transfer(), 10); try { Class.forName("java.util.function.Function"); // prefer WebView's WebSockets on JDK8 - b.register(WSTransfer.class, ko.websocketsViaBrowser(), 10); + b.register(WSTransfer.class, ko.websockets(), 10); } catch (ClassNotFoundException ex) { // ok, JDK7 needs tyrus b.register(WSTransfer.class, tc, 20); + b.register(Transfer.class, tc, 5); } return b.build(); } @Override public Object createJSON(Map values) { - JSONObject json = new JSONObject(); + Object json = createJSON(); for (Map.Entry entry : values.entrySet()) { - try { - json.put(entry.getKey(), entry.getValue()); - } catch (JSONException ex) { - throw new IllegalStateException(ex); - } + setProperty(json, entry.getKey(), entry.getValue()); } return json; } + + @JavaScriptBody(args = {}, body = "return new Object();") + private static native Object createJSON(); + @JavaScriptBody(args = { "json", "key", "value" }, body = "json[key] = value;") + private static native void setProperty(Object json, String key, Object value); @Override @JavaScriptBody(args = { "s", "args" }, body = "" diff -r dbd3ed861f5f -r 66358a11c016 launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JVMBridge.java --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JVMBridge.java Thu Jan 09 21:21:11 2014 +0100 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/fximpl/JVMBridge.java Thu Jan 09 21:21:34 2014 +0100 @@ -81,7 +81,7 @@ } private final class WebPresenter - implements FindResources, Fn.Presenter, Fn.ToJavaScript, Executor { + implements FindResources, Fn.Presenter, Fn.ToJavaScript, Fn.FromJavaScript, Executor { @Override public void findResources(String name, Collection results, boolean oneIsEnough) { if (ldrs != null) for (ClassLoader l : ldrs) { @@ -134,6 +134,11 @@ } @Override + public Object toJava(Object js) { + return checkArray(js); + } + + @Override public Object toJavaScript(Object toReturn) { if (toReturn instanceof Object[]) { return convertArrays((Object[]) toReturn);