emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java
branchreflection
changeset 665 799a8cfefe35
parent 663 09225928b9fb
     1.1 --- a/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java	Mon Feb 04 23:22:54 2013 +0100
     1.2 +++ b/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java	Tue Feb 05 00:00:22 2013 +0100
     1.3 @@ -41,6 +41,15 @@
     1.4          + "function f(val, prop, clazz) {\n"
     1.5          + "  return function() {\n"
     1.6          + "    if (clazz == null) return val[prop];\n"
     1.7 +        + "    if (clazz.isArray__Z()) {\n"
     1.8 +        + "      var valarr = val[prop];\n"
     1.9 +        + "      var cmp = clazz.getComponentType__Ljava_lang_Class_2();\n"
    1.10 +        + "      var retarr = vm.java_lang_reflect_Array(false).newInstance__Ljava_lang_Object_2Ljava_lang_Class_2I(cmp, valarr.length);\n"
    1.11 +        + "      for (var i = 0; i < valarr.length; i++) {\n"
    1.12 +        + "        retarr[i] = CLS.prototype.c__Ljava_lang_Object_2Ljava_lang_Class_2Ljava_lang_Object_2(cmp, valarr[i]);\n"
    1.13 +        + "      }\n"
    1.14 +        + "      return retarr;\n"
    1.15 +        + "    }\n"
    1.16          + "    return CLS.prototype.c__Ljava_lang_Object_2Ljava_lang_Class_2Ljava_lang_Object_2(clazz, val[prop]);\n"
    1.17          + "  };\n"
    1.18          + "}\n"
    1.19 @@ -109,7 +118,12 @@
    1.20          for (Method m : marr) {
    1.21              arr[pos++] = MethodImpl.toSignature(m);
    1.22              arr[pos++] = m.getName();
    1.23 -            arr[pos++] = m.getReturnType().isAnnotation() ? m.getReturnType() : null;
    1.24 +            final Class<?> rt = m.getReturnType();
    1.25 +            if (rt.isArray()) {
    1.26 +                arr[pos++] = rt.getComponentType().isAnnotation() ? rt : null;
    1.27 +            } else {
    1.28 +                arr[pos++] = rt.isAnnotation() ? rt : null;
    1.29 +            }
    1.30          }
    1.31          return arr;
    1.32      }