rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java
1.1 --- a/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Wed Mar 13 16:20:03 2013 +0100
1.2 +++ b/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Thu Mar 14 09:22:28 2013 +0100
1.3 @@ -91,6 +91,10 @@
1.4 public void addClassLoader(ClassLoader url) {
1.5 this.loaders.add(url);
1.6 }
1.7 +
1.8 + ClassLoader[] loaders() {
1.9 + return loaders.toArray(new ClassLoader[loaders.size()]);
1.10 + }
1.11
1.12 public void showURL(String startpage) throws IOException {
1.13 if (!startpage.startsWith("/")) {
1.14 @@ -144,7 +148,7 @@
1.15
1.16 final ServerConfiguration conf = s.getServerConfiguration();
1.17 if (addClasses) {
1.18 - conf.addHttpHandler(new VM(resources), "/bck2brwsr.js");
1.19 + conf.addHttpHandler(new VM(this, resources), "/bck2brwsr.js");
1.20 conf.addHttpHandler(new Classes(resources), "/classes/");
1.21 }
1.22 return s;
1.23 @@ -436,6 +440,27 @@
1.24 }
1.25 }
1.26
1.27 + void generateBck2BrwsrJS(StringBuilder sb, Bck2Brwsr.Resources loader) throws IOException {
1.28 + Bck2Brwsr.generate(sb, loader);
1.29 + sb.append(
1.30 + "(function WrapperVM(global) {"
1.31 + + " function ldCls(res) {\n"
1.32 + + " var request = new XMLHttpRequest();\n"
1.33 + + " request.open('GET', '/classes/' + res, false);\n"
1.34 + + " request.send();\n"
1.35 + + " if (request.status !== 200) return null;\n"
1.36 + + " var arr = eval('(' + request.responseText + ')');\n"
1.37 + + " return arr;\n"
1.38 + + " }\n"
1.39 + + " var prevvm = global.bck2brwsr;\n"
1.40 + + " global.bck2brwsr = function() {\n"
1.41 + + " var args = Array.prototype.slice.apply(arguments);\n"
1.42 + + " args.unshift(ldCls);\n"
1.43 + + " return prevvm.apply(null, args);\n"
1.44 + + " };\n"
1.45 + + "})(this);\n");
1.46 + }
1.47 +
1.48 private class Res implements Bck2Brwsr.Resources {
1.49 @Override
1.50 public InputStream get(String resource) throws IOException {
1.51 @@ -498,27 +523,10 @@
1.52 private static class VM extends HttpHandler {
1.53 private final String bck2brwsr;
1.54
1.55 - public VM(Res loader) throws IOException {
1.56 + public VM(Bck2BrwsrLauncher l, Res loader) throws IOException {
1.57 StringBuilder sb = new StringBuilder();
1.58 - Bck2Brwsr.generate(sb, loader);
1.59 - sb.append(
1.60 - "(function WrapperVM(global) {"
1.61 - + " function ldCls(res) {\n"
1.62 - + " var request = new XMLHttpRequest();\n"
1.63 - + " request.open('GET', '/classes/' + res, false);\n"
1.64 - + " request.send();\n"
1.65 - + " if (request.status !== 200) return null;\n"
1.66 - + " var arr = eval('(' + request.responseText + ')');\n"
1.67 - + " return arr;\n"
1.68 - + " }\n"
1.69 - + " var prevvm = global.bck2brwsr;\n"
1.70 - + " global.bck2brwsr = function() {\n"
1.71 - + " var args = Array.prototype.slice.apply(arguments);\n"
1.72 - + " args.unshift(ldCls);\n"
1.73 - + " return prevvm.apply(null, args);\n"
1.74 - + " };\n"
1.75 - + "})(this);\n"
1.76 - );
1.77 + l.generateBck2BrwsrJS(
1.78 + sb, loader);
1.79 this.bck2brwsr = sb.toString();
1.80 }
1.81