# HG changeset patch # User Jaroslav Tulach # Date 1363593886 -3600 # Node ID 094e10a975111d1c86ba888b0adb889c3ac4aac4 # Parent 7dc6128edb0ddaf6aff7bea73b36b2a38d11e527 Modifying the static calculator sample to pre-compile all its project classes diff -r 7dc6128edb0d -r 094e10a97511 javaquery/demo-calculator/nbactions.xml --- a/javaquery/demo-calculator/nbactions.xml Fri Mar 15 20:33:01 2013 +0100 +++ b/javaquery/demo-calculator/nbactions.xml Mon Mar 18 09:04:46 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 7dc6128edb0d -r 094e10a97511 javaquery/demo-calculator/pom.xml --- a/javaquery/demo-calculator/pom.xml Fri Mar 15 20:33:01 2013 +0100 +++ b/javaquery/demo-calculator/pom.xml Mon Mar 18 09:04:46 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 7dc6128edb0d -r 094e10a97511 javaquery/demo-calculator/src/main/assembly/bck2brwsr.xml --- a/javaquery/demo-calculator/src/main/assembly/bck2brwsr.xml Fri Mar 15 20:33:01 2013 +0100 +++ b/javaquery/demo-calculator/src/main/assembly/bck2brwsr.xml Mon Mar 18 09:04:46 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 7dc6128edb0d -r 094e10a97511 rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java --- a/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java Fri Mar 15 20:33:01 2013 +0100 +++ b/rt/mojo/src/main/java/org/apidesign/bck2brwsr/mojo/Java2JavaScript.java Mon Mar 18 09:04:46 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()); }