# HG changeset patch # User Jaroslav Tulach # Date 1363776790 -3600 # Node ID d39fbe061519b4bcc6e86c34e0e20c8999ab4a5e # Parent 8d6534b67252ae540907cf10be7f76b9236f8526# Parent afba662cf624611486ea59344c0273eb9e04955f Merge with default branch to get fixed argument type (ClassLoader instead of URLClassLoader) diff -r 8d6534b67252 -r d39fbe061519 javaquery/demo-calculator-dynamic/nbactions.xml --- a/javaquery/demo-calculator-dynamic/nbactions.xml Wed Mar 20 08:48:06 2013 +0100 +++ b/javaquery/demo-calculator-dynamic/nbactions.xml Wed Mar 20 11:53:10 2013 +0100 @@ -23,7 +23,7 @@ run process-classes - org.apidesign.bck2brwsr:mojo:0.3-SNAPSHOT:brwsr + org.apidesign.bck2brwsr:mojo:0.5-SNAPSHOT:brwsr diff -r 8d6534b67252 -r d39fbe061519 javaquery/demo-calculator/nbactions.xml --- a/javaquery/demo-calculator/nbactions.xml Wed Mar 20 08:48:06 2013 +0100 +++ b/javaquery/demo-calculator/nbactions.xml Wed Mar 20 11:53:10 2013 +0100 @@ -23,7 +23,7 @@ run package - org.apidesign.bck2brwsr:mojo:0.3-SNAPSHOT:brwsr + org.apidesign.bck2brwsr:mojo:0.5-SNAPSHOT:brwsr true diff -r 8d6534b67252 -r d39fbe061519 javaquery/demo-calculator/pom.xml --- a/javaquery/demo-calculator/pom.xml Wed Mar 20 08:48:06 2013 +0100 +++ b/javaquery/demo-calculator/pom.xml Wed Mar 20 11:53:10 2013 +0100 @@ -22,6 +22,7 @@ + j2js brwsr @@ -29,6 +30,7 @@ ${project.build.directory}/${project.build.finalName}-bck2brwsr/public_html/ index.xhtml + ${project.build.directory}/bck2brwsr.js @@ -102,13 +104,5 @@ javaquery.api 0.5-SNAPSHOT - - org.apidesign.bck2brwsr - vm4brwsr - js - zip - 0.5-SNAPSHOT - provided - diff -r 8d6534b67252 -r d39fbe061519 javaquery/demo-calculator/src/main/assembly/bck2brwsr.xml --- a/javaquery/demo-calculator/src/main/assembly/bck2brwsr.xml Wed Mar 20 08:48:06 2013 +0100 +++ b/javaquery/demo-calculator/src/main/assembly/bck2brwsr.xml Wed Mar 20 11:53:10 2013 +0100 @@ -37,15 +37,6 @@ *:rt - - false - provided - - *:js - - true - / - @@ -53,6 +44,10 @@ / + ${project.build.directory}/bck2brwsr.js + / + + ${project.build.directory}/classes/org/apidesign/bck2brwsr/demo/calc/staticcompilation/Calculator.xhtml / index.xhtml diff -r 8d6534b67252 -r d39fbe061519 rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Launcher.java --- a/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Launcher.java Wed Mar 20 08:48:06 2013 +0100 +++ b/rt/launcher/src/main/java/org/apidesign/bck2brwsr/launcher/Launcher.java Wed Mar 20 11:53:10 2013 +0100 @@ -21,7 +21,6 @@ import java.io.File; import java.io.IOException; import java.lang.reflect.Method; -import java.net.URLClassLoader; import org.apidesign.vm4brwsr.Bck2Brwsr; /** An abstraction for executing tests in a Bck2Brwsr virtual machine. @@ -101,7 +100,7 @@ * @return interface that allows one to stop the server * @throws IOException if something goes wrong */ - public static Closeable showURL(URLClassLoader classes, String startpage) throws IOException { + public static Closeable showURL(ClassLoader classes, String startpage) throws IOException { Bck2BrwsrLauncher l = new WebViewLauncher(); l.addClassLoader(classes); l.showURL(startpage); diff -r 8d6534b67252 -r d39fbe061519 rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java --- a/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java Wed Mar 20 08:48:06 2013 +0100 +++ b/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java Wed Mar 20 11:53:10 2013 +0100 @@ -44,11 +44,17 @@ /** Root of the class files */ @Parameter(defaultValue="${project.build.directory}/classes") private File classes; - /** File to generate. Defaults bootjava.js in the first non-empty - package under the classes directory */ + /** JavaScript file to generate */ @Parameter private File javascript; + /** Additional classes that should be pre-compiled into the javascript + * file. By default compiles all classes found under classes + * directory and their transitive closure. + */ + @Parameter + private List compileclasses; + @Parameter(defaultValue="${project}") private MavenProject prj; @@ -60,13 +66,14 @@ throw new MojoExecutionException("Can't find " + classes); } - if (javascript == null) { - javascript = new File(findNonEmptyFolder(classes), "bootjava.js"); - } - List arr = new ArrayList(); long newest = collectAllClasses("", classes, arr); + if (compileclasses != null) { + arr.retainAll(compileclasses); + arr.addAll(compileclasses); + } + if (javascript.lastModified() > newest) { return; } @@ -81,17 +88,6 @@ } } - private static File findNonEmptyFolder(File dir) throws MojoExecutionException { - if (!dir.isDirectory()) { - throw new MojoExecutionException("Not a directory " + dir); - } - File[] arr = dir.listFiles(); - if (arr.length == 1 && arr[0].isDirectory()) { - return findNonEmptyFolder(arr[0]); - } - return dir; - } - private static long collectAllClasses(String prefix, File toCheck, List arr) { File[] files = toCheck.listFiles(); if (files != null) { @@ -104,7 +100,8 @@ } return newest; } else if (toCheck.getName().endsWith(".class")) { - arr.add(prefix.substring(0, prefix.length() - 7)); + final String cls = prefix.substring(0, prefix.length() - 7); + arr.add(cls); return toCheck.lastModified(); } else { return 0L; @@ -115,7 +112,9 @@ List arr = new ArrayList(); arr.add(root.toURI().toURL()); for (Artifact a : deps) { - arr.add(a.getFile().toURI().toURL()); + if (a.getFile() != null) { + arr.add(a.getFile().toURI().toURL()); + } } return new URLClassLoader(arr.toArray(new URL[0]), Java2JavaScript.class.getClassLoader()); } diff -r 8d6534b67252 -r d39fbe061519 rt/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Wed Mar 20 08:48:06 2013 +0100 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/VMinVMTest.java Wed Mar 20 11:53:10 2013 +0100 @@ -40,6 +40,15 @@ compareCode("org/apidesign/vm4brwsr/Classes.class"); } + @Test public void compareGeneratedCodeForToolkitClass() throws Exception { + String genCode = compareCode("org/apidesign/vm4brwsr/Bck2BrwsrToolkit.class"); + int indx = genCode.indexOf("gt = 65604"); + if (indx >= 0) { + fail("Goto to an invalid label:\n...." + genCode.substring(indx - 30, indx + 30) + "...."); + } + fail(genCode); + } + @BeforeClass public static void compileTheCode() throws Exception { code = TestVM.compileClass("org/apidesign/vm4brwsr/VMinVM"); @@ -49,7 +58,7 @@ code = null; } - private void compareCode(final String nm) throws Exception, IOException { + private String compareCode(final String nm) throws Exception, IOException { byte[] arr = BytesLoader.readClass(nm); String ret1 = VMinVM.toJavaScript(arr); @@ -88,5 +97,7 @@ msg.append(code.toString()); fail(msg.toString()); } + + return ret1; } } diff -r 8d6534b67252 -r d39fbe061519 rt/vm/src/test/resources/org/apidesign/vm4brwsr/Bck2BrwsrToolkit.class Binary file rt/vm/src/test/resources/org/apidesign/vm4brwsr/Bck2BrwsrToolkit.class has changed