1.1 --- a/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/Launcher.java Sat Dec 22 23:23:09 2012 +0100
1.2 +++ b/vmtest/src/main/java/org/apidesign/bck2brwsr/vmtest/Launcher.java Sun Dec 23 17:02:34 2012 +0100
1.3 @@ -17,7 +17,10 @@
1.4 */
1.5 package org.apidesign.bck2brwsr.vmtest;
1.6
1.7 +import java.io.IOException;
1.8 import org.apidesign.bck2brwsr.launcher.Bck2BrwsrLauncher;
1.9 +import org.apidesign.bck2brwsr.launcher.JSLauncher;
1.10 +import org.apidesign.bck2brwsr.launcher.MethodInvocation;
1.11
1.12 /**
1.13 *
1.14 @@ -25,7 +28,7 @@
1.15 */
1.16 final class Launcher {
1.17 private final String sen;
1.18 - private Bck2BrwsrLauncher launcher;
1.19 + private Object launcher;
1.20
1.21 Launcher() {
1.22 this(null);
1.23 @@ -34,27 +37,36 @@
1.24 this.sen = sen;
1.25 }
1.26
1.27 - synchronized Bck2BrwsrLauncher clear() {
1.28 - Bck2BrwsrLauncher l = launcher;
1.29 + synchronized Object clear() {
1.30 + Object l = launcher;
1.31 launcher = null;
1.32 return l;
1.33 }
1.34
1.35 - synchronized Bck2BrwsrLauncher.MethodInvocation addMethod(Class<?> clazz, String name) {
1.36 + synchronized MethodInvocation addMethod(Class<?> clazz, String name) throws IOException {
1.37 if (launcher == null) {
1.38 - launcher = new Bck2BrwsrLauncher();
1.39 - launcher.setTimeout(180000);
1.40 if (sen != null) {
1.41 - launcher.setScriptEngineName(sen);
1.42 + JSLauncher js = new JSLauncher();
1.43 + js.addClassLoader(clazz.getClassLoader());
1.44 + js.initialize();
1.45 + launcher = js;
1.46 + } else {
1.47 + Bck2BrwsrLauncher l = new Bck2BrwsrLauncher();
1.48 + l.setTimeout(180000);
1.49 + launcher = l;
1.50 }
1.51 }
1.52 - return launcher.addMethod(clazz, name);
1.53 + if (launcher instanceof JSLauncher) {
1.54 + return ((JSLauncher)launcher).addMethod(clazz, name);
1.55 + } else {
1.56 + return ((Bck2BrwsrLauncher)launcher).addMethod(clazz, name);
1.57 + }
1.58 }
1.59
1.60 void exec() throws Exception {
1.61 - Bck2BrwsrLauncher l = clear();
1.62 - if (l != null) {
1.63 - l.execute();
1.64 + Object l = clear();
1.65 + if (l instanceof Bck2BrwsrLauncher) {
1.66 + ((Bck2BrwsrLauncher)l).execute();
1.67 }
1.68 }
1.69