rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 1722 fd3a354d6e8f
parent 1706 65c6f805797f
child 1725 489fe829817f
     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)) {");