2 * Back 2 Browser Bytecode Translator
3 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 2 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. Look for COPYING file in the top folder.
16 * If not, see http://opensource.org/licenses/GPL-2.0.
18 package org.apidesign.bck2brwsr.launcher;
20 import java.io.Closeable;
21 import java.io.IOException;
22 import java.net.URLClassLoader;
23 import org.apidesign.vm4brwsr.Bck2Brwsr;
25 /** An abstraction for executing tests in a Bck2Brwsr virtual machine.
26 * Either in JavaScript engine, or in external browser.
28 * @author Jaroslav Tulach <jtulach@netbeans.org>
30 public abstract class Launcher {
35 abstract MethodInvocation addMethod(Class<?> clazz, String method) throws IOException;
37 public abstract void initialize() throws IOException;
38 public abstract void shutdown() throws IOException;
39 public MethodInvocation invokeMethod(Class<?> clazz, String method) throws IOException {
40 return addMethod(clazz, method);
45 public static Launcher createJavaScript() {
46 final JSLauncher l = new JSLauncher();
47 l.addClassLoader(Bck2Brwsr.class.getClassLoader());
51 public static Launcher createBrowser(String cmd) {
52 final Bck2BrwsrLauncher l = new Bck2BrwsrLauncher(cmd);
53 l.addClassLoader(Bck2Brwsr.class.getClassLoader());
57 public static Closeable showURL(URLClassLoader classes, String startpage) throws IOException {
58 Bck2BrwsrLauncher l = new Bck2BrwsrLauncher(null);
59 l.addClassLoader(classes);