1.1 --- a/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Sat Dec 15 22:46:26 2012 +0100
1.2 +++ b/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Sun Dec 16 20:11:18 2012 +0100
1.3 @@ -44,8 +44,11 @@
1.4 final ClassLoader loader = Bck2BrwsrLauncher.class.getClassLoader();
1.5
1.6 final ServerConfiguration conf = server.getServerConfiguration();
1.7 - conf.addHttpHandler(new Console("org.apidesign.bck2brwsr.launcher.Console", "welcome", "false"), "/console");
1.8 + conf.addHttpHandler(new Page("console.xhtml",
1.9 + "org.apidesign.bck2brwsr.launcher.Console", "welcome", "false"
1.10 + ), "/console");
1.11 conf.addHttpHandler(new VM(loader), "/bck2brwsr.js");
1.12 + conf.addHttpHandler(new VMInit(), "/vm.js");
1.13 conf.addHttpHandler(new Classes(loader), "/classes/");
1.14 conf.addHttpHandler(new HttpHandler() {
1.15 @Override
1.16 @@ -62,13 +65,25 @@
1.17 InputStream is = Bck2BrwsrLauncher.class.getResourceAsStream("console.xhtml");
1.18 copyStream(is, os, clazz, method, "true");
1.19 }
1.20 - }, "/execute");
1.21 + }, "/");
1.22 + conf.addHttpHandler(new HttpHandler() {
1.23 + int cnt;
1.24 + @Override
1.25 + public void service(Request request, Response response) throws Exception {
1.26 + response.getWriter().write("{"
1.27 + + "className: 'org.apidesign.bck2brwsr.launcher.Console',"
1.28 + + "methodName: 'welcome',"
1.29 + + "request: " + cnt
1.30 + + "}");
1.31 + }
1.32 + }, "execute/data");
1.33 + conf.addHttpHandler(new Page("harness.xhtml"), "/execute");
1.34
1.35 server.start();
1.36 NetworkListener listener = server.getListeners().iterator().next();
1.37 int port = listener.getPort();
1.38
1.39 - URI uri = new URI("http://localhost:" + port + "/execute?class=org.apidesign.bck2brwsr.launcher.Console&method=welcome");
1.40 + URI uri = new URI("http://localhost:" + port + "/execute");
1.41 try {
1.42 Desktop.getDesktop().browse(uri);
1.43 } catch (UnsupportedOperationException ex) {
1.44 @@ -98,10 +113,12 @@
1.45 }
1.46 }
1.47
1.48 - private static class Console extends HttpHandler {
1.49 + private static class Page extends HttpHandler {
1.50 + private final String resource;
1.51 private final String[] args;
1.52
1.53 - public Console(String... args) {
1.54 + public Page(String resource, String... args) {
1.55 + this.resource = resource;
1.56 this.args = args;
1.57 }
1.58
1.59 @@ -109,7 +126,7 @@
1.60 public void service(Request request, Response response) throws Exception {
1.61 response.setContentType("text/html");
1.62 OutputStream os = response.getOutputStream();
1.63 - InputStream is = Bck2BrwsrLauncher.class.getResourceAsStream("console.xhtml");
1.64 + InputStream is = Bck2BrwsrLauncher.class.getResourceAsStream(resource);
1.65 copyStream(is, os, args);
1.66 }
1.67 }
1.68 @@ -128,6 +145,25 @@
1.69 Bck2Brwsr.generate(response.getWriter(), loader);
1.70 }
1.71 }
1.72 + private static class VMInit extends HttpHandler {
1.73 + public VMInit() {
1.74 + }
1.75 +
1.76 + @Override
1.77 + public void service(Request request, Response response) throws Exception {
1.78 + response.setCharacterEncoding("UTF-8");
1.79 + response.setContentType("text/javascript");
1.80 + response.getWriter().append(
1.81 + "function ldCls(res) {\n"
1.82 + + " var request = new XMLHttpRequest();\n"
1.83 + + " request.open('GET', 'classes/' + res, false);\n"
1.84 + + " request.send();\n"
1.85 + + " var arr = eval('(' + request.responseText + ')');\n"
1.86 + + " return arr;\n"
1.87 + + "}\n"
1.88 + + "var vm = new bck2brwsr(ldCls);\n");
1.89 + }
1.90 + }
1.91
1.92 private static class Classes extends HttpHandler {
1.93 private final ClassLoader loader;