rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java
changeset 1889 e1953d8b8338
parent 772 d382dacfd73f
child 1907 f5be41227c81
     1.1 --- a/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java	Tue Feb 26 16:54:16 2013 +0100
     1.2 +++ b/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java	Sat Mar 19 10:31:13 2016 +0100
     1.3 @@ -38,11 +38,20 @@
     1.4      }
     1.5  
     1.6      @JavaScriptBody(args = { "a", "n", "arr", "values" }, body = ""
     1.7 -        + "function f(val, prop, clazz) {\n"
     1.8 +        + "function r(anno, val, prop, m) {\n"
     1.9 +        + "  var v = val[prop];\n"
    1.10 +        + "  if (typeof v === 'undefined') {\n"
    1.11 +        + "    var cls = anno.fld_org_apidesign_bck2brwsr_emul_reflect_AnnotationImpl_type.cnstr;\n"
    1.12 +        + "    try { throw 'x'; } catch (errr) {};\n"
    1.13 +        + "    v = cls.prototype[m]();\n"
    1.14 +        + "  }\n"
    1.15 +        + "  return v;\n"
    1.16 +        + "}\n"
    1.17 +        + "function f(val, prop, clazz, m) {\n"
    1.18          + "  return function() {\n"
    1.19 -        + "    if (clazz == null) return val[prop];\n"
    1.20 +        + "    if (clazz == null) return r(this, val, prop, m);\n"
    1.21          + "    if (clazz.isArray__Z()) {\n"
    1.22 -        + "      var valarr = val[prop];\n"
    1.23 +        + "      var valarr = r(this, val, prop, m);\n"
    1.24          + "      var cmp = clazz.getComponentType__Ljava_lang_Class_2();\n"
    1.25          + "      var retarr = vm.java_lang_reflect_Array(false).newInstance__Ljava_lang_Object_2Ljava_lang_Class_2I(cmp, valarr.length);\n"
    1.26          + "      for (var i = 0; i < valarr.length; i++) {\n"
    1.27 @@ -50,14 +59,14 @@
    1.28          + "      }\n"
    1.29          + "      return retarr;\n"
    1.30          + "    }\n"
    1.31 -        + "    return CLS.prototype.c__Ljava_lang_Object_2Ljava_lang_Class_2Ljava_lang_Object_2(clazz, val[prop]);\n"
    1.32 +        + "    return CLS.prototype.c__Ljava_lang_Object_2Ljava_lang_Class_2Ljava_lang_Object_2(clazz, r(this, val, prop, m));\n"
    1.33          + "  };\n"
    1.34          + "}\n"
    1.35          + "for (var i = 0; i < arr.length; i += 3) {\n"
    1.36          + "  var m = arr[i];\n"
    1.37          + "  var p = arr[i + 1];\n"
    1.38          + "  var c = arr[i + 2];\n"
    1.39 -        + "  a[m] = f(values, p, c);\n"
    1.40 +        + "  a[m] = f(values, p, c, m);\n"
    1.41          + "}\n"
    1.42          + "a['$instOf_' + n] = true;\n"
    1.43          + "return a;"