1.1 --- a/launcher/fx/src/test/java/org/apidesign/bck2brwsr/launcher/fximpl/JsClassLoaderTest.java Mon Jun 17 19:36:24 2013 +0200
1.2 +++ b/launcher/fx/src/test/java/org/apidesign/bck2brwsr/launcher/fximpl/JsClassLoaderTest.java Mon Jun 17 19:52:10 2013 +0200
1.3 @@ -21,12 +21,14 @@
1.4 import java.lang.reflect.Method;
1.5 import java.net.URL;
1.6 import java.net.URLClassLoader;
1.7 +import java.util.ArrayList;
1.8 +import java.util.Arrays;
1.9 import java.util.Enumeration;
1.10 +import java.util.List;
1.11 import javax.script.Invocable;
1.12 import javax.script.ScriptEngine;
1.13 import javax.script.ScriptEngineManager;
1.14 import javax.script.ScriptException;
1.15 -import org.objectweb.asm.signature.SignatureReader;
1.16 import static org.testng.Assert.*;
1.17 import org.testng.annotations.BeforeClass;
1.18 import org.testng.annotations.Test;
1.19 @@ -59,8 +61,7 @@
1.20 protected Fn defineFn(String code, String... names) {
1.21 StringBuilder sb = new StringBuilder();
1.22 sb.append("(function() {");
1.23 - sb.append("var r = {};");
1.24 - sb.append("r.fn = function(");
1.25 + sb.append("return function(");
1.26 String sep = "";
1.27 for (String n : names) {
1.28 sb.append(sep);
1.29 @@ -70,15 +71,18 @@
1.30 sb.append(") {");
1.31 sb.append(code);
1.32 sb.append("};");
1.33 - sb.append("return r;");
1.34 sb.append("})()");
1.35 try {
1.36 final Object val = eng.eval(sb.toString());
1.37 return new Fn() {
1.38 @Override
1.39 public Object invoke(Object thiz, Object... args) throws Exception {
1.40 + List<Object> all = new ArrayList<Object>(args.length + 1);
1.41 + all.add(thiz == null ? val : thiz);
1.42 + all.addAll(Arrays.asList(args));
1.43 Invocable inv = (Invocable)eng;
1.44 - return inv.invokeMethod(val, "fn", args);
1.45 + Object ret = inv.invokeMethod(val, "call", all.toArray());
1.46 + return ret == val ? null : ret;
1.47 }
1.48 };
1.49 } catch (ScriptException ex) {