If j2js task is used, read the generated bck2brwsr.js in rather than compiling new one during execution
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sat, 12 Oct 2013 09:05:08 +0200
changeset 1371fd2d4ca28bd3
parent 1370 617d62384a9c
child 1372 cc58b30499e5
If j2js task is used, read the generated bck2brwsr.js in rather than compiling new one during execution
launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java
rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/BrwsrMojo.java
rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java
     1.1 --- a/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Sat Oct 12 09:03:36 2013 +0200
     1.2 +++ b/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Sat Oct 12 09:05:08 2013 +0200
     1.3 @@ -17,8 +17,14 @@
     1.4   */
     1.5  package org.apidesign.bck2brwsr.launcher;
     1.6  
     1.7 +import java.io.File;
     1.8 +import java.io.FileReader;
     1.9  import java.io.IOException;
    1.10  import java.io.InputStream;
    1.11 +import java.io.InputStreamReader;
    1.12 +import java.io.Reader;
    1.13 +import java.net.URL;
    1.14 +import java.util.logging.Level;
    1.15  import org.apidesign.vm4brwsr.Bck2Brwsr;
    1.16  
    1.17  /**
    1.18 @@ -45,8 +51,23 @@
    1.19                  return loader.get(resource);
    1.20              }
    1.21          }
    1.22 -
    1.23 -        Bck2Brwsr.generate(sb, new R());
    1.24 +        String b2b = System.getProperty("bck2brwsr.js");
    1.25 +        if (b2b != null) {
    1.26 +            LOG.log(Level.INFO, "Serving bck2brwsr.js from {0}", b2b);
    1.27 +            try (Reader r = new InputStreamReader(new URL(b2b).openStream())) {
    1.28 +                char[] arr = new char[4096];
    1.29 +                for (;;) {
    1.30 +                   int len = r.read(arr);
    1.31 +                   if (len == -1) {
    1.32 +                       break;
    1.33 +                   }
    1.34 +                   sb.append(arr, 0, len);
    1.35 +                }
    1.36 +            }
    1.37 +        } else {
    1.38 +            LOG.log(Level.INFO, "Generating bck2brwsr.js from scratch", b2b);
    1.39 +            Bck2Brwsr.generate(sb, new R());
    1.40 +        }
    1.41          sb.append(
    1.42                "(function WrapperVM(global) {"
    1.43              + "  function ldCls(res) {\n"
    1.44 @@ -65,6 +86,7 @@
    1.45              + "  };\n"
    1.46              + "})(this);\n"
    1.47          );
    1.48 +        LOG.log(Level.INFO, "Serving bck2brwsr.js", b2b);
    1.49      }
    1.50  
    1.51  }
     2.1 --- a/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/BrwsrMojo.java	Sat Oct 12 09:03:36 2013 +0200
     2.2 +++ b/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/BrwsrMojo.java	Sat Oct 12 09:05:08 2013 +0200
     2.3 @@ -70,12 +70,18 @@
     2.4      /** Root of all pages, and files, etc. */
     2.5      @Parameter
     2.6      private File directory;
     2.7 +    
     2.8 +    @Parameter(defaultValue="${project.build.directory}/bck2brwsr.js")
     2.9 +    private File javascript;
    2.10  
    2.11      @Override
    2.12      public void execute() throws MojoExecutionException {
    2.13          if (startpage == null) {
    2.14              throw new MojoExecutionException("You have to provide a start page");
    2.15          }
    2.16 +        if (javascript != null && javascript.isFile()) {
    2.17 +            System.setProperty("bck2brwsr.js", javascript.toURI().toString());
    2.18 +        }
    2.19          try {
    2.20              Closeable httpServer;
    2.21              if (directory != null) {
     3.1 --- a/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java	Sat Oct 12 09:03:36 2013 +0200
     3.2 +++ b/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java	Sat Oct 12 09:05:08 2013 +0200
     3.3 @@ -50,7 +50,7 @@
     3.4      @Parameter(defaultValue="${project.build.directory}/classes")
     3.5      private File classes;
     3.6      /** JavaScript file to generate */
     3.7 -    @Parameter
     3.8 +    @Parameter(defaultValue="${project.build.directory}/bck2brwsr.js")
     3.9      private File javascript;
    3.10  
    3.11      /** Additional classes that should be pre-compiled into the javascript