1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Sep 26 09:21:49 2014 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Nov 09 10:36:08 2014 +0100
1.3 @@ -70,6 +70,8 @@
1.4 */
1.5 protected abstract void requireScript(String resourcePath) throws IOException;
1.6
1.7 + protected abstract void requireResource(String resourcePath) throws IOException;
1.8 +
1.9 /** Allows subclasses to redefine what field a function representing a
1.10 * class gets assigned. By default it returns the suggested name followed
1.11 * by <code>" = "</code>;
1.12 @@ -165,6 +167,7 @@
1.13 }
1.14 }
1.15 }
1.16 + final String jsResource;
1.17 {
1.18 String[] arr = findAnnotation(arrData, jc,
1.19 "net.java.html.js.JavaScriptResource",
1.20 @@ -172,13 +175,13 @@
1.21 );
1.22 if (arr != null) {
1.23 if (arr[0].startsWith("/")) {
1.24 - requireScript(arr[0]);
1.25 + jsResource = arr[0];
1.26 } else {
1.27 int last = jc.getClassName().lastIndexOf('/');
1.28 - requireScript(
1.29 - jc.getClassName().substring(0, last + 1).replace('.', '/') + arr[0]
1.30 - );
1.31 + jsResource = jc.getClassName().substring(0, last + 1).replace('.', '/') + arr[0];
1.32 }
1.33 + } else {
1.34 + jsResource = null;
1.35 }
1.36 }
1.37 String[] proto = findAnnotation(arrData, jc,
1.38 @@ -303,6 +306,11 @@
1.39 for (String init : toInitilize.toArray()) {
1.40 append("\n ").append(init).append("();");
1.41 }
1.42 +
1.43 + if (jsResource != null) {
1.44 + requireResource(jsResource);
1.45 + }
1.46 +
1.47 append("\n }");
1.48 append("\n if (arguments.length === 0) {");
1.49 append("\n if (!(this instanceof CLS)) {");