Generated Script files can be specified on classpath closure
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Fri, 23 May 2014 12:39:26 +0200
branchclosure
changeset 15908eeb682738f0
parent 1589 b66d6e7756bb
child 1591 6a5237f059d5
Generated Script files can be specified on classpath
javaquery/demo-calculator/src/main/resources/org/apidesign/bck2brwsr/demo/calc/staticcompilation/Calculator.xhtml
rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java
     1.1 --- a/javaquery/demo-calculator/src/main/resources/org/apidesign/bck2brwsr/demo/calc/staticcompilation/Calculator.xhtml	Fri May 23 11:44:38 2014 +0200
     1.2 +++ b/javaquery/demo-calculator/src/main/resources/org/apidesign/bck2brwsr/demo/calc/staticcompilation/Calculator.xhtml	Fri May 23 12:39:26 2014 +0200
     1.3 @@ -90,11 +90,12 @@
     1.4          
     1.5          <div data-bind="text: displayPreview"></div>
     1.6          <script src="bck2brwsr.js"></script>
     1.7 -        <script src="lib/emul-0.9-SNAPSHOT-rt.js"></script>
     1.8 -        <script src="lib/javaquery.api-0.9-SNAPSHOT.js"></script>
     1.9 -        <script src="app.js"></script>
    1.10          <script>
    1.11 -            var vm = bck2brwsr();
    1.12 +            var vm = bck2brwsr(
    1.13 +                'app.js',
    1.14 +                'lib/emul-0.9-SNAPSHOT-rt.js',
    1.15 +                'lib/javaquery.api-0.9-SNAPSHOT.js'
    1.16 +            );
    1.17              vm.loadClass('org.apidesign.bck2brwsr.demo.calc.staticcompilation.Calc');
    1.18          </script>
    1.19      </body>
     2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Fri May 23 11:44:38 2014 +0200
     2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Fri May 23 12:39:26 2014 +0200
     2.3 @@ -490,6 +490,15 @@
     2.4                  + "  global.bck2brwsr = function() {\n"
     2.5                  + "    var args = Array.prototype.slice.apply(arguments);\n"
     2.6                  + "    var resources = {};\n"
     2.7 +                + "    function loadExtension(url) {\n"
     2.8 +                + "      var xhr = new XMLHttpRequest();\n"
     2.9 +                + "      xhr.open('GET', url, false);\n"
    2.10 +                + "      xhr.send();\n"
    2.11 +                + "      var script = document.createElement('script');\n"
    2.12 +                + "      script.type = 'text/javascript';\n"
    2.13 +                + "      script.text = xhr.responseText;\n"
    2.14 +                + "      document.getElementsByTagName('head')[0].appendChild(script);\n"
    2.15 +                + "    }\n"
    2.16                  + "    function registerResource(n, a64) {\n"
    2.17                  + "      var str = atob(a64);\n"
    2.18                  + "      var arr = [];\n"
    2.19 @@ -525,14 +534,17 @@
    2.20                  + "      for (var i = 0; i < args.length; i++) {\n"
    2.21                  + "        var at = args[i];\n"
    2.22                  + "        var ret;\n"
    2.23 -                + "        if (typeof at === 'function') ret = at(name, skip);\n"
    2.24 +                + "        if (typeof at === 'string' && at.substring(at.length - 3) === '.js') {\n"
    2.25 +                + "          loadExtension(at);\n"
    2.26 +                + "          args[i] = null;\n"
    2.27 +                + "        } else if (typeof at === 'function') ret = at(name, skip);\n"
    2.28                  + "        else {\n"
    2.29                  + "          var cp = vm['org_apidesign_vm4brwsr_ClassPath'];\n"
    2.30                  + "          if (!cp) throw 'Core Java library not registered. Cannot load from ' + at;\n"
    2.31                  + "          ret = cp(false).\n"
    2.32                  + "            loadBytes___3BLjava_lang_String_2Ljava_lang_Object_2II(name, args, i, skip);\n"
    2.33                  + "        }\n"
    2.34 -                + "        if (ret !== null) return ret;\n"
    2.35 +                + "        if (ret) return ret;\n"
    2.36                  + "      }\n"
    2.37                  + "      while (knownExtensions < extensions.length) {\n"
    2.38                  + "        vm['registerResource'] = registerResource;\n"