vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 240 4e88a33d7972
parent 239 8ceee38f5840
child 242 8bd4adaf6590
child 248 0bfcb6585290
     1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sun Dec 02 21:00:12 2012 +0100
     1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sun Dec 02 23:10:51 2012 +0100
     1.3 @@ -102,10 +102,22 @@
     1.4                  append(sc.replace('/', '_')).append("(true);");
     1.5              out.append("\n    var c = p;");
     1.6          } else {
     1.7 -            out.append("\n    var p = ").append(proto[1]).append(";");
     1.8 +            out.append("\n    var p = CLS.prototype = ").append(proto[1]).append(";");
     1.9              out.append("\n    var c = ").append(proto[0]).append(";");
    1.10          }
    1.11          for (MethodData m : jc.getMethods()) {
    1.12 +            byte[] onlyArr = m.findAnnotationData(true);
    1.13 +            String[] only = findAnnotation(onlyArr, jc, 
    1.14 +                "org.apidesign.bck2brwsr.core.JavaScriptOnly", 
    1.15 +                "name", "value"
    1.16 +            );
    1.17 +            if (only != null) {
    1.18 +                if (only[0] != null && only[1] != null) {
    1.19 +                    out.append("\n    p.").append(only[0]).append(" = ")
    1.20 +                        .append(only[1]).append(";");
    1.21 +                }
    1.22 +                continue;
    1.23 +            }
    1.24              if (m.isStatic()) {
    1.25                  generateStaticMethod("\n    c.", m, toInitilize);
    1.26              } else {
    1.27 @@ -123,6 +135,18 @@
    1.28          out.append("\n      return new CLS();");
    1.29          out.append("\n    }");
    1.30          for (FieldData v : jc.getFields()) {
    1.31 +            byte[] onlyArr = v.findAnnotationData(true);
    1.32 +            String[] only = findAnnotation(onlyArr, jc, 
    1.33 +                "org.apidesign.bck2brwsr.core.JavaScriptOnly", 
    1.34 +                "name", "value"
    1.35 +            );
    1.36 +            if (only != null) {
    1.37 +                if (only[0] != null && only[1] != null) {
    1.38 +                    out.append("\n    p.").append(only[0]).append(" = ")
    1.39 +                        .append(only[1]).append(";");
    1.40 +                }
    1.41 +                continue;
    1.42 +            }
    1.43              if (!v.isStatic()) {
    1.44                  out.append("\n    this.fld_").
    1.45                      append(v.getName()).append(initField(v));