Need to include all emul-mini classes in the generated bck2brwsr.js closure
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 27 Apr 2014 08:33:38 +0200
branchclosure
changeset 1492e38025e9536a
parent 1491 4a1398eff4fb
child 1493 234fea368401
Need to include all emul-mini classes in the generated bck2brwsr.js
launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java
launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java
     1.1 --- a/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Sat Apr 26 21:30:06 2014 +0200
     1.2 +++ b/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java	Sun Apr 27 08:33:38 2014 +0200
     1.3 @@ -56,14 +56,7 @@
     1.4      
     1.5      @Override
     1.6      void generateBck2BrwsrJS(StringBuilder sb, final Res loader) throws IOException {
     1.7 -        class R implements Bck2Brwsr.Resources {
     1.8 -            @Override
     1.9 -            public InputStream get(String resource) throws IOException {
    1.10 -                return loader.get(resource).openStream();
    1.11 -            }
    1.12 -        }
    1.13 -
    1.14 -        Bck2Brwsr.generate(sb, new R());
    1.15 +        CompileCP.compileVM(sb, loader);
    1.16          sb.append(
    1.17                "(function WrapperVM(global) {"
    1.18              + "  function ldCls(res) {\n"
     2.1 --- a/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java	Sat Apr 26 21:30:06 2014 +0200
     2.2 +++ b/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java	Sun Apr 27 08:33:38 2014 +0200
     2.3 @@ -21,6 +21,7 @@
     2.4  import java.io.IOException;
     2.5  import java.io.InputStream;
     2.6  import java.io.StringWriter;
     2.7 +import java.net.JarURLConnection;
     2.8  import java.net.URISyntaxException;
     2.9  import java.net.URL;
    2.10  import java.util.ArrayList;
    2.11 @@ -29,6 +30,7 @@
    2.12  import java.util.jar.JarEntry;
    2.13  import java.util.jar.JarFile;
    2.14  import java.util.zip.ZipEntry;
    2.15 +import org.apidesign.bck2brwsr.launcher.BaseHTTPLauncher.Res;
    2.16  import org.apidesign.vm4brwsr.Bck2Brwsr;
    2.17  
    2.18  /**
    2.19 @@ -97,6 +99,9 @@
    2.20          while (en.hasMoreElements()) {
    2.21              JarEntry e = en.nextElement();
    2.22              final String n = e.getName();
    2.23 +            if (n.contains("package-info")) {
    2.24 +                continue;
    2.25 +            }
    2.26              if (n.endsWith("/")) {
    2.27                  continue;
    2.28              }
    2.29 @@ -133,6 +138,19 @@
    2.30          }
    2.31      }
    2.32  
    2.33 +    static void compileVM(StringBuilder sb, Res r) throws IOException {
    2.34 +        URL u = r.get(InterruptedException.class.getName().replace('.', '/') + ".class");
    2.35 +        JarURLConnection juc = (JarURLConnection)u.openConnection();
    2.36 +        
    2.37 +        List<String> arr = new ArrayList<>();
    2.38 +        List<String> classes = new ArrayList<>();
    2.39 +        listJAR(juc.getJarFile(), classes, arr);
    2.40 +
    2.41 +        Bck2Brwsr.newCompiler().addRootClasses(classes.toArray(new String[0]))
    2.42 +            .resources(new EmulationResources())
    2.43 +            .generate(sb);
    2.44 +    }
    2.45 +
    2.46      static class EmulationResources implements Bck2Brwsr.Resources {
    2.47  
    2.48          @Override