null-related tests are passing now classloader
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Mon, 17 Jun 2013 19:52:10 +0200
branchclassloader
changeset 1182743f2fe4f0bc
parent 1181 b703d9d71f25
child 1183 29302b4c0776
null-related tests are passing now
launcher/fx/src/test/java/org/apidesign/bck2brwsr/launcher/fximpl/JsClassLoaderTest.java
     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) {