diff -r dde8422fb5ae -r bf0a77f029c4 emul/src/main/java/java/lang/Class.java --- a/emul/src/main/java/java/lang/Class.java Sat Dec 01 15:48:12 2012 +0100 +++ b/emul/src/main/java/java/lang/Class.java Sun Dec 02 12:26:14 2012 +0100 @@ -774,14 +774,28 @@ * @throws NullPointerException {@inheritDoc} * @since 1.5 */ + @JavaScriptBody(args = { "self", "ac" }, + body = + "if (self.anno) {" + + " return self.anno['L' + ac.jvmName + ';'];" + + "}" + ) + private Object getAnnotationData(Class annotationClass) { + throw new UnsupportedOperationException(); + } public A getAnnotation(Class annotationClass) { - throw new UnsupportedOperationException(); + Object data = getAnnotationData(annotationClass); + return data == null ? null : AnnotationImpl.create(annotationClass, data); } /** * @throws NullPointerException {@inheritDoc} * @since 1.5 */ + @JavaScriptBody(args = { "self", "ac" }, + body = "if (self.anno && self.anno['L' + ac.jvmName + ';']) { return true; }" + + "else return false;" + ) public boolean isAnnotationPresent( Class annotationClass) { if (annotationClass == null)