diff -r 380564345434 -r d4ee65642d8d rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue May 13 13:34:14 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu May 22 15:29:40 2014 +0200 @@ -229,17 +229,7 @@ } for (MethodData m : jc.getMethods()) { byte[] onlyArr = m.findAnnotationData(true); - String[] only = findAnnotation(onlyArr, jc, - "org.apidesign.bck2brwsr.core.JavaScriptOnly", - "name", "value" - ); - if (only != null) { - if (only[0] != null && only[1] != null) { - append("\n p.").append(only[0]).append(" = ") - .append(only[1]).append(";"); - } - continue; - } + if (javaScriptOnly(onlyArr)) continue; String destObject; String mn; append("\n "); @@ -301,17 +291,7 @@ append("\n }"); for (FieldData v : jc.getFields()) { byte[] onlyArr = v.findAnnotationData(true); - String[] only = findAnnotation(onlyArr, jc, - "org.apidesign.bck2brwsr.core.JavaScriptOnly", - "name", "value" - ); - if (only != null) { - if (only[0] != null && only[1] != null) { - append("\n p.").append(only[0]).append(" = ") - .append(only[1]).append(";"); - } - continue; - } + if (javaScriptOnly(onlyArr)) continue; if (!v.isStatic()) { append("\n this.fld_"). append(className).append('_'). @@ -331,6 +311,25 @@ // } return ""; } + + private boolean javaScriptOnly(byte[] anno) throws IOException { + String[] only = findAnnotation(anno, jc, + "org.apidesign.bck2brwsr.core.JavaScriptOnly", + "name", "value" + ); + if (only != null) { + if (only[0] != null && only[1] != null) { + append("\n p.").append(only[0]).append(" = ") + .append(only[1]).append(";"); + } + if (ExportedSymbols.isMarkedAsExported(anno, jc)) { + append("\n p['").append(only[0]).append("'] = p.") + .append(only[0]).append(";"); + } + return true; + } + return false; + } private String generateStaticMethod(String destObject, MethodData m, StringArray toInitilize) throws IOException { String jsb = javaScriptBody(destObject, m, true); if (jsb != null) {