rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java
branchfx
changeset 845 859804c78010
parent 844 023cda5b8b0b
child 969 df08556c5c7c
     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