diff -r f095ea52f417 -r 26a86cc00224 emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java --- a/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java Sun Feb 03 18:58:09 2013 +0100 +++ b/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java Sun Feb 03 22:58:42 2013 +0100 @@ -27,8 +27,14 @@ * @author Jaroslav Tulach */ public final class AnnotationImpl implements Annotation { + private final Class type; + + public AnnotationImpl(Class type) { + this.type = type; + } + public Class annotationType() { - return getClass(); + return type; } @JavaScriptBody(args = { "a", "n", "arr", "values" }, body = "" @@ -52,7 +58,7 @@ ); public static T create(Class annoClass, Object values) { - return create(new AnnotationImpl(), + return create(new AnnotationImpl(annoClass), annoClass.getName().replace('.', '_'), findProps(annoClass), values ); @@ -63,14 +69,14 @@ Annotation[] ret = new Annotation[names.length]; for (int i = 0; i < names.length; i++) { String annoNameSlash = names[i].substring(1, names[i].length() - 1); - Class annoClass; + Class annoClass; try { - annoClass = Class.forName(annoNameSlash.replace('/', '.')); + annoClass = (Class)Class.forName(annoNameSlash.replace('/', '.')); } catch (ClassNotFoundException ex) { throw new IllegalStateException("Can't find annotation class " + annoNameSlash); } ret[i] = create( - new AnnotationImpl(), + new AnnotationImpl(annoClass), annoNameSlash.replace('/', '_'), findProps(annoClass), findData(anno, names[i])