Class.getAnnotations() works when there are no annotations
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 20 Mar 2016 11:01:12 +0100
changeset 1901e9be21ce2291
parent 1900 7865a00c30ef
child 1902 c3dee54ecc15
Class.getAnnotations() works when there are no annotations
rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionAnnotationTest.java
rt/emul/mini/src/main/java/java/lang/Class.java
     1.1 --- a/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionAnnotationTest.java	Sun Mar 20 09:25:47 2016 +0100
     1.2 +++ b/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionAnnotationTest.java	Sun Mar 20 11:01:12 2016 +0100
     1.3 @@ -158,6 +158,24 @@
     1.4      }
     1.5  
     1.6      @Compare
     1.7 +    public String noAnnotation() {
     1.8 +        Annotation[] arr = ReflectionAnnotationTest.class.getAnnotations();
     1.9 +        if (arr == null) {
    1.10 +            return "Null array";
    1.11 +        }
    1.12 +        return toClassNames(arr);
    1.13 +    }
    1.14 +
    1.15 +    @Compare
    1.16 +    public String noDeclaredAnnotation() {
    1.17 +        Annotation[] arr = ReflectionAnnotationTest.class.getDeclaredAnnotations();
    1.18 +        if (arr == null) {
    1.19 +            return "Null array";
    1.20 +        }
    1.21 +        return toClassNames(arr);
    1.22 +    }
    1.23 +
    1.24 +    @Compare
    1.25      public String twoDeclaredAnnotationsOnMethod() throws Exception {
    1.26          Annotation[] arr = D.class.getMethod("method").getAnnotations();
    1.27          if (arr == null) {
     2.1 --- a/rt/emul/mini/src/main/java/java/lang/Class.java	Sun Mar 20 09:25:47 2016 +0100
     2.2 +++ b/rt/emul/mini/src/main/java/java/lang/Class.java	Sun Mar 20 11:01:12 2016 +0100
     2.3 @@ -1785,10 +1785,8 @@
     2.4          return getAnnotation(annotationClass) != null;
     2.5      }
     2.6  
     2.7 -    @JavaScriptBody(args = {}, body = "return this.anno;")
     2.8 -    private Object getAnnotationData() {
     2.9 -        throw new UnsupportedOperationException();
    2.10 -    }
    2.11 +    @JavaScriptBody(args = {}, body = "return this.anno ? this.anno : null;")
    2.12 +    private native Object getAnnotationData();
    2.13  
    2.14      /**
    2.15       * @since 1.5