1.1 --- a/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java Sun Feb 03 18:58:09 2013 +0100
1.2 +++ b/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java Sun Feb 03 22:58:42 2013 +0100
1.3 @@ -27,8 +27,14 @@
1.4 * @author Jaroslav Tulach <jtulach@netbeans.org>
1.5 */
1.6 public final class AnnotationImpl implements Annotation {
1.7 + private final Class<? extends Annotation> type;
1.8 +
1.9 + public AnnotationImpl(Class<? extends Annotation> type) {
1.10 + this.type = type;
1.11 + }
1.12 +
1.13 public Class<? extends Annotation> annotationType() {
1.14 - return getClass();
1.15 + return type;
1.16 }
1.17
1.18 @JavaScriptBody(args = { "a", "n", "arr", "values" }, body = ""
1.19 @@ -52,7 +58,7 @@
1.20 );
1.21
1.22 public static <T extends Annotation> T create(Class<T> annoClass, Object values) {
1.23 - return create(new AnnotationImpl(),
1.24 + return create(new AnnotationImpl(annoClass),
1.25 annoClass.getName().replace('.', '_'),
1.26 findProps(annoClass), values
1.27 );
1.28 @@ -63,14 +69,14 @@
1.29 Annotation[] ret = new Annotation[names.length];
1.30 for (int i = 0; i < names.length; i++) {
1.31 String annoNameSlash = names[i].substring(1, names[i].length() - 1);
1.32 - Class<?> annoClass;
1.33 + Class<? extends Annotation> annoClass;
1.34 try {
1.35 - annoClass = Class.forName(annoNameSlash.replace('/', '.'));
1.36 + annoClass = (Class<? extends Annotation>)Class.forName(annoNameSlash.replace('/', '.'));
1.37 } catch (ClassNotFoundException ex) {
1.38 throw new IllegalStateException("Can't find annotation class " + annoNameSlash);
1.39 }
1.40 ret[i] = create(
1.41 - new AnnotationImpl(),
1.42 + new AnnotationImpl(annoClass),
1.43 annoNameSlash.replace('/', '_'),
1.44 findProps(annoClass),
1.45 findData(anno, names[i])