1.1 --- a/boot/src/main/java/org/apidesign/html/boot/impl/JavaScriptProcesor.java Fri Jul 12 12:08:56 2013 +0200
1.2 +++ b/boot/src/main/java/org/apidesign/html/boot/impl/JavaScriptProcesor.java Fri Jul 12 12:21:53 2013 +0200
1.3 @@ -240,7 +240,13 @@
1.4 source.append(" arg").append(++cnt);
1.5 sep = ", ";
1.6 }
1.7 - source.append(") {\n");
1.8 + source.append(")");
1.9 + sep = "\n throws ";
1.10 + for (TypeMirror thrwn : m.getThrownTypes()) {
1.11 + source.append(sep).append(thrwn.toString());
1.12 + sep = ",";
1.13 + }
1.14 + source.append(" {\n");
1.15 source.append(" ");
1.16 if (m.getReturnType().getKind() != TypeKind.VOID) {
1.17 source.append("return ");
2.1 --- a/boot/src/test/java/org/apidesign/html/boot/impl/JsClassLoaderBase.java Fri Jul 12 12:08:56 2013 +0200
2.2 +++ b/boot/src/test/java/org/apidesign/html/boot/impl/JsClassLoaderBase.java Fri Jul 12 12:21:53 2013 +0200
2.3 @@ -171,4 +171,9 @@
2.4 Method st = methodClass.getMethod("chooseLong", boolean.class, boolean.class, long.class, long.class);
2.5 assertEquals(st.invoke(null, true, true, 10, 20), 30L, "Take both values");
2.6 }
2.7 +
2.8 + @Test public void recordError() throws Throwable {
2.9 + Method st = methodClass.getMethod("recordError", Object.class);
2.10 + assertEquals(st.invoke(methodClass.newInstance(), "Hello"), "Hello", "The same parameter returned");
2.11 + }
2.12 }
2.13 \ No newline at end of file
3.1 --- a/boot/src/test/java/org/apidesign/html/boot/impl/JsMethods.java Fri Jul 12 12:08:56 2013 +0200
3.2 +++ b/boot/src/test/java/org/apidesign/html/boot/impl/JsMethods.java Fri Jul 12 12:21:53 2013 +0200
3.3 @@ -30,6 +30,8 @@
3.4 */
3.5 @JavaScriptResource("jsmethods.js")
3.6 public class JsMethods {
3.7 + private Object value;
3.8 +
3.9 @JavaScriptBody(args = {}, body = "return 42;")
3.10 public static Object fortyTwo() {
3.11 return -42;
3.12 @@ -88,4 +90,18 @@
3.13 + "return l;\n"
3.14 )
3.15 public static native long chooseLong(boolean useA, boolean useB, long a, long b);
3.16 +
3.17 + protected void onError(Object o) throws Exception {
3.18 + value = o;
3.19 + }
3.20 +
3.21 + Object getError() {
3.22 + return value;
3.23 + }
3.24 +
3.25 + @JavaScriptBody(args = { "err" }, javacall = true, body =
3.26 + "this.@org.apidesign.html.boot.impl.JsMethods::onError(Ljava/lang/Object;)(err);"
3.27 + + "return this.@org.apidesign.html.boot.impl.JsMethods::getError()();"
3.28 + )
3.29 + public native Object recordError(Object err);
3.30 }