# HG changeset patch # User Jaroslav Tulach # Date 1398774532 -7200 # Node ID d058edd874245c9848455c9053743a01c4f340aa # Parent e0f2f3503eed3cc32735499aae9b409844ed4382 Use provided loader to load libraries diff -r e0f2f3503eed -r d058edd87424 launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java --- a/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java Tue Apr 29 14:27:36 2014 +0200 +++ b/launcher/fx/src/main/java/org/apidesign/bck2brwsr/launcher/BaseHTTPLauncher.java Tue Apr 29 14:28:52 2014 +0200 @@ -500,7 +500,7 @@ String compileJar(JarFile jar) throws IOException { return null; } - String compileFromClassPath(URL f) { + String compileFromClassPath(URL f, Res loader) { return null; } @@ -509,7 +509,7 @@ return BaseHTTPLauncher.this.compileJar(jar); } String compileFromClassPath(URL f) { - return BaseHTTPLauncher.this.compileFromClassPath(f); + return BaseHTTPLauncher.this.compileFromClassPath(f, this); } public URL get(String resource) throws IOException { URL u = null; diff -r e0f2f3503eed -r d058edd87424 launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java --- a/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Tue Apr 29 14:27:36 2014 +0200 +++ b/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/Bck2BrwsrLauncher.java Tue Apr 29 14:28:52 2014 +0200 @@ -17,12 +17,9 @@ */ package org.apidesign.bck2brwsr.launcher; -import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.net.URL; import java.util.jar.JarFile; -import org.apidesign.vm4brwsr.Bck2Brwsr; /** * Lightweight server to launch Bck2Brwsr applications and tests. @@ -45,9 +42,9 @@ return CompileCP.compileJAR(jar); } - @Override String compileFromClassPath(URL f) { + @Override String compileFromClassPath(URL f, Res loader) { try { - return CompileCP.compileFromClassPath(f); + return CompileCP.compileFromClassPath(f, loader); } catch (Exception ex) { ex.printStackTrace(); return null; diff -r e0f2f3503eed -r d058edd87424 launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java --- a/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java Tue Apr 29 14:27:36 2014 +0200 +++ b/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java Tue Apr 29 14:28:52 2014 +0200 @@ -67,7 +67,7 @@ } } - static String compileFromClassPath(URL u) throws IOException, URISyntaxException { + static String compileFromClassPath(URL u, final Res r) throws IOException, URISyntaxException { File f = new File(u.toURI()); for (String s : System.getProperty("java.class.path").split(File.pathSeparator)) { if (!f.getPath().startsWith(s)) { @@ -83,7 +83,12 @@ .addRootClasses(classes.toArray(new String[0])) .addResources(arr.toArray(new String[0])) .library(true) - .resources(new EmulationResources()) + .resources(new EmulationResources() { + @Override + public InputStream get(String resource) throws IOException { + return r != null ? r.get(resource).openStream() : super.get(resource); + } + }) .generate(w); w.flush(); return w.toString(); @@ -127,6 +132,9 @@ private static void listDir(File f, String pref, List classes, List resources) throws IOException { File[] arr = f.listFiles(); if (arr == null) { + if (f.getName().equals("package-info.class")) { + return; + } if (f.getName().endsWith(".class")) { classes.add(pref + f.getName().substring(0, f.getName().length() - 6)); } else { @@ -140,7 +148,7 @@ } } - static void compileVM(StringBuilder sb, Res r) throws IOException { + static void compileVM(StringBuilder sb, final Res r) throws IOException { URL u = r.get(InterruptedException.class.getName().replace('.', '/') + ".class"); JarURLConnection juc = (JarURLConnection)u.openConnection(); @@ -149,8 +157,12 @@ listJAR(juc.getJarFile(), classes, arr); Bck2Brwsr.newCompiler().addRootClasses(classes.toArray(new String[0])) - .resources(new EmulationResources()) - .generate(sb); + .resources(new Bck2Brwsr.Resources() { + @Override + public InputStream get(String resource) throws IOException { + return r.get(resource).openStream(); + } + }).generate(sb); } static class EmulationResources implements Bck2Brwsr.Resources { diff -r e0f2f3503eed -r d058edd87424 launcher/http/src/test/java/org/apidesign/bck2brwsr/launcher/CompileCPTest.java --- a/launcher/http/src/test/java/org/apidesign/bck2brwsr/launcher/CompileCPTest.java Tue Apr 29 14:27:36 2014 +0200 +++ b/launcher/http/src/test/java/org/apidesign/bck2brwsr/launcher/CompileCPTest.java Tue Apr 29 14:28:52 2014 +0200 @@ -35,7 +35,7 @@ assertNotNull(u, "URL found"); assertEquals(u.getProtocol(), "file", "It comes from a disk"); - String resources = CompileCP.compileFromClassPath(u); + String resources = CompileCP.compileFromClassPath(u, null); assertNotNull(resources, "something compiled"); } }