harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vasily Zakharov (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-5086) [drlvm][kernel][geronimo] AccessibleObject.getDeclaredAnnotations() throws exception if annotation is not available
Date Wed, 07 Nov 2007 23:12:50 GMT
[drlvm][kernel][geronimo] AccessibleObject.getDeclaredAnnotations() throws exception if annotation
is not available
-------------------------------------------------------------------------------------------------------------------

                 Key: HARMONY-5086
                 URL: https://issues.apache.org/jira/browse/HARMONY-5086
             Project: Harmony
          Issue Type: Bug
          Components: App-Oriented Bug Reports, DRLVM
            Reporter: Vasily Zakharov
            Priority: Critical


When AccessibleObject.getDeclaredAnnotations() is called and the annotation class to be returned
cannot be loaded, RI just skips that annotation, and Harmony throws exception.
To reproduce, use the following code:

import java.lang.annotation.*;
import java.lang.reflect.*;
import java.net.*;
public class Test {
    public static void main(String[] args) {
        try {
            Class cls = Foo.class;
            Field field = cls.getDeclaredFields()[0];
            Constructor constructor = cls.getDeclaredConstructors()[0];
            Method method = cls.getDeclaredMethods()[0];
            int fan = field.getDeclaredAnnotations().length;
            int can = constructor.getDeclaredAnnotations().length;
            int man = method.getDeclaredAnnotations().length;
            System.out.println("SUCCESS: " + fan + " " + can + " " + man);
        } catch (Exception e) {
            e.printStackTrace(System.out);
        }
    }
}

@Retention(RetentionPolicy.RUNTIME)
@interface Ann {}

class Foo {
    @Ann int field;
    @Ann Foo() {}
    @Ann void method() {}
}

If the test is run normally, both RI and Harmony produce the same result, but if Ann.class
file is REMOVED, the output becomes different:

Output on RI and Harmony with Ann.class present:

SUCCESS: 1 1 1

Output on RI with Ann.class removed:

SUCCESS: 0 0 0

Output on Harmony with Ann.class removed:

java.lang.TypeNotPresentException: Type Ann not present
        at org.apache.harmony.vm.VMGenericsAndAnnotations.getDeclaredAnnotations(VMGenericsAndAnnotations.java)
        at java.lang.reflect.Field$FieldData.getAnnotations(Field.java:457)
        at java.lang.reflect.Field.getDeclaredAnnotations(Field.java:42)
        at Test.main(Test.java:11)
Caused by: java.lang.NoClassDefFoundError: Ann
        at org.apache.harmony.vm.VMGenericsAndAnnotations.getDeclaredAnnotations(VMGenericsAndAnnotations.java)
        ... 3 more
Caused by: java.lang.ClassNotFoundException: Ann
        at java.net.URLClassLoader.findClass(URLClassLoader.java:894)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:575)
        at java.lang.ClassLoader$SystemClassLoader.loadClass(ClassLoader.java:963)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
        at org.apache.harmony.vm.VMGenericsAndAnnotations.getDeclaredAnnotations(VMGenericsAndAnnotations.java)
        ... 3 more

This issue prevents Apache Geronimo 2.0 from starting on Harmony. 


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message