rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchclosure
changeset 1586 d4ee65642d8d
parent 1564 380564345434
child 1595 19d0484c1916
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue May 13 13:34:14 2014 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Thu May 22 15:29:40 2014 +0200
     1.3 @@ -229,17 +229,7 @@
     1.4          }
     1.5          for (MethodData m : jc.getMethods()) {
     1.6              byte[] onlyArr = m.findAnnotationData(true);
     1.7 -            String[] only = findAnnotation(onlyArr, jc, 
     1.8 -                "org.apidesign.bck2brwsr.core.JavaScriptOnly", 
     1.9 -                "name", "value"
    1.10 -            );
    1.11 -            if (only != null) {
    1.12 -                if (only[0] != null && only[1] != null) {
    1.13 -                    append("\n    p.").append(only[0]).append(" = ")
    1.14 -                        .append(only[1]).append(";");
    1.15 -                }
    1.16 -                continue;
    1.17 -            }
    1.18 +            if (javaScriptOnly(onlyArr)) continue;
    1.19              String destObject;
    1.20              String mn;
    1.21              append("\n    ");
    1.22 @@ -301,17 +291,7 @@
    1.23          append("\n    }");
    1.24          for (FieldData v : jc.getFields()) {
    1.25              byte[] onlyArr = v.findAnnotationData(true);
    1.26 -            String[] only = findAnnotation(onlyArr, jc, 
    1.27 -                "org.apidesign.bck2brwsr.core.JavaScriptOnly", 
    1.28 -                "name", "value"
    1.29 -            );
    1.30 -            if (only != null) {
    1.31 -                if (only[0] != null && only[1] != null) {
    1.32 -                    append("\n    p.").append(only[0]).append(" = ")
    1.33 -                        .append(only[1]).append(";");
    1.34 -                }
    1.35 -                continue;
    1.36 -            }
    1.37 +            if (javaScriptOnly(onlyArr)) continue;
    1.38              if (!v.isStatic()) {
    1.39                  append("\n    this.fld_").
    1.40                      append(className).append('_').
    1.41 @@ -331,6 +311,25 @@
    1.42  //        }
    1.43          return "";
    1.44      }
    1.45 +
    1.46 +    private boolean javaScriptOnly(byte[] anno) throws IOException {
    1.47 +        String[] only = findAnnotation(anno, jc,
    1.48 +            "org.apidesign.bck2brwsr.core.JavaScriptOnly",
    1.49 +            "name", "value"
    1.50 +        );
    1.51 +        if (only != null) {
    1.52 +            if (only[0] != null && only[1] != null) {
    1.53 +                append("\n    p.").append(only[0]).append(" = ")
    1.54 +                    .append(only[1]).append(";");
    1.55 +            }
    1.56 +            if (ExportedSymbols.isMarkedAsExported(anno, jc)) {
    1.57 +                append("\n    p['").append(only[0]).append("'] = p.")
    1.58 +                    .append(only[0]).append(";");
    1.59 +            }
    1.60 +            return true;
    1.61 +        }
    1.62 +        return false;
    1.63 +    }
    1.64      private String generateStaticMethod(String destObject, MethodData m, StringArray toInitilize) throws IOException {
    1.65          String jsb = javaScriptBody(destObject, m, true);
    1.66          if (jsb != null) {