emul/src/main/java/java/lang/AnnotationImpl.java
branchreflection
changeset 238 5ab1f0890a42
parent 236 d97770281580
child 253 962a24ecd8f8
     1.1 --- a/emul/src/main/java/java/lang/AnnotationImpl.java	Sun Dec 02 12:39:51 2012 +0100
     1.2 +++ b/emul/src/main/java/java/lang/AnnotationImpl.java	Sun Dec 02 15:05:36 2012 +0100
     1.3 @@ -30,4 +30,29 @@
     1.4      static <T extends Annotation> T create(Class<T> annoClass, Object values) {
     1.5          return create(new AnnotationImpl(), annoClass.getName().replace('.', '_'), values);
     1.6      }
     1.7 +
     1.8 +    static Annotation[] create(Object anno) {
     1.9 +        String[] names = findNames(anno);
    1.10 +        Annotation[] ret = new Annotation[names.length];
    1.11 +        for (int i = 0; i < names.length; i++) {
    1.12 +            String n = names[i].substring(1, names[i].length() - 1).replace('/', '_');
    1.13 +            ret[i] = create(new AnnotationImpl(), n, findData(anno, names[i]));
    1.14 +        }
    1.15 +        return ret;
    1.16 +    }
    1.17 +    @JavaScriptBody(args = "anno", body =
    1.18 +          "var arr = new Array();"
    1.19 +        + "for (p in anno) {"
    1.20 +        + "  arr.push(p);"
    1.21 +        + "}"
    1.22 +        + "return arr;"
    1.23 +    )
    1.24 +    private static String[] findNames(Object anno) {
    1.25 +        throw new UnsupportedOperationException();
    1.26 +    }
    1.27 +
    1.28 +    @JavaScriptBody(args={ "anno", "p"}, body="return anno[p];")
    1.29 +    private static Object findData(Object anno, String p) {
    1.30 +        throw new UnsupportedOperationException();
    1.31 +    }
    1.32  }