1.1 --- a/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/MethodImpl.java Mon Jun 23 19:35:22 2014 +0200
1.2 +++ b/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/MethodImpl.java Wed Jun 25 22:50:33 2014 +0200
1.3 @@ -49,17 +49,29 @@
1.4 @JavaScriptBody(args = {"clazz", "prefix", "cnstr"},
1.5 body = ""
1.6 + "var c = clazz.cnstr;\n"
1.7 - + "if (!cnstr) c = c.prototype;"
1.8 + + "if (!cnstr) c = c.prototype;\n"
1.9 + "var arr = new Array();\n"
1.10 - + "for (m in c) {\n"
1.11 + + "function check(m) {\n"
1.12 + " if (m.indexOf(prefix) === 0) {\n"
1.13 - + " if (!c[m].cls) continue;\n"
1.14 + + " if (!c[m].cls) return;\n"
1.15 + " arr.push(m);\n"
1.16 + " arr.push(c[m]);\n"
1.17 + " arr.push(c[m].cls.$class);\n"
1.18 - + " }"
1.19 + + " }\n"
1.20 + "}\n"
1.21 - + "return arr;")
1.22 + + "for (m in c) {\n"
1.23 + + " check(m)\n"
1.24 + + "}\n"
1.25 + + "check('wait__V');\n"
1.26 + + "check('wait__VJ');\n"
1.27 + + "check('wait__VJI');\n"
1.28 + + "check('equals__ZLjava_lang_Object_2');\n"
1.29 + + "check('toString__Ljava_lang_String_2');\n"
1.30 + + "check('hashCode__I');\n"
1.31 + + "check('getClass__Ljava_lang_Class_2');\n"
1.32 + + "check('notify__V');\n"
1.33 + + "check('notifyAll__V');\n"
1.34 + + "return arr;\n")
1.35 private static native Object[] findMethodData(
1.36 Class<?> clazz, String prefix, boolean cnstr);
1.37
2.1 --- a/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/AheadOfTime.java Mon Jun 23 19:35:22 2014 +0200
2.2 +++ b/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/AheadOfTime.java Wed Jun 25 22:50:33 2014 +0200
2.3 @@ -101,6 +101,9 @@
2.4 if ("provided".equals(a.getScope())) {
2.5 continue;
2.6 }
2.7 + if ("system".equals(a.getScope())) {
2.8 + continue;
2.9 + }
2.10 File aot = new File(prj.getBuild().getDirectory(), classPathPrefix);
2.11 aot.mkdirs();
2.12 File js = new File(aot, n.substring(0, n.length() - 4) + ".js");
3.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Mon Jun 23 19:35:22 2014 +0200
3.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Wed Jun 25 22:50:33 2014 +0200
3.3 @@ -124,6 +124,15 @@
3.4 "java.lang.Object"
3.5 );
3.6 }
3.7 +
3.8 + @Test public void jsListMethodsInObject() throws Exception {
3.9 + String methods = Classes.listObject();
3.10 +
3.11 + assertExec("Methods defined in Object", Classes.class,
3.12 + "listObject__Ljava_lang_String_2",
3.13 + methods
3.14 + );
3.15 + }
3.16
3.17 @Test public void jsInvokeParamMethod() throws Exception {
3.18 assertExec("sums two numbers via reflection", Classes.class,
4.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/Classes.java Mon Jun 23 19:35:22 2014 +0200
4.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/Classes.java Wed Jun 25 22:50:33 2014 +0200
4.3 @@ -120,6 +120,14 @@
4.4 }
4.5 return sb.toString().toString();
4.6 }
4.7 +
4.8 + static String listObject() {
4.9 + StringBuilder sb = new StringBuilder();
4.10 + for (Method m : Object.class.getMethods()) {
4.11 + sb.append(m.getName()).append("\n");
4.12 + }
4.13 + return sb.toString().toString();
4.14 + }
4.15 @Retention(RetentionPolicy.CLASS)
4.16 @interface Ann {
4.17 }