# HG changeset patch # User Jaroslav Tulach # Date 1359916774 -3600 # Node ID bcdfc29fd00402032bb15bae88eae5e6f55943ad # Parent f095ea52f417880de159d97aa7e0d8923002fa7b Some annotation types work diff -r f095ea52f417 -r bcdfc29fd004 javap/src/main/java/org/apidesign/javap/AnnotationParser.java --- a/javap/src/main/java/org/apidesign/javap/AnnotationParser.java Sun Feb 03 18:58:09 2013 +0100 +++ b/javap/src/main/java/org/apidesign/javap/AnnotationParser.java Sun Feb 03 19:39:34 2013 +0100 @@ -131,7 +131,7 @@ int enumN = dis.readUnsignedShort(); String val = cd.stringValue(enumN, textual); if (textual) { - val = '"' + val + '"'; + val = "vm." + attrType.substring(1, attrType.length() - 1).replace('/', '_') + "(false).constructor." + val; } visitAttr(typeName, attrName, attrType, val); } else { diff -r f095ea52f417 -r bcdfc29fd004 vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Sun Feb 03 18:58:09 2013 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/ClassTest.java Sun Feb 03 19:39:34 2013 +0100 @@ -90,6 +90,9 @@ @Test public void jsArrayAnnotation() throws Exception { assertExec("Check array annotation", Classes.class, "getMarkerNicknames__Ljava_lang_String_2", Classes.getMarkerNicknames()); } + @Test public void jsEnumAnnotation() throws Exception { + assertExec("Check enum annotation", Classes.class, "getMarkerE__Ljava_lang_String_2", Classes.getMarkerE()); + } @Test public void jsStringAnnotation() throws Exception { assertExec("Check class annotation", Classes.class, "getNamer__Ljava_lang_String_2Z", "my text", true); } diff -r f095ea52f417 -r bcdfc29fd004 vm/src/test/java/org/apidesign/vm4brwsr/Classes.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/Classes.java Sun Feb 03 18:58:09 2013 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/Classes.java Sun Feb 03 19:39:34 2013 +0100 @@ -19,6 +19,7 @@ import java.io.IOException; import java.lang.annotation.Annotation; +import java.lang.annotation.RetentionPolicy; import java.lang.reflect.Method; import java.net.MalformedURLException; import org.apidesign.bck2brwsr.core.JavaScriptBody; @@ -27,7 +28,7 @@ * * @author Jaroslav Tulach */ -@ClassesMarker(number = 10, nicknames = { "Ten", "Deset" }) +@ClassesMarker(number = 10, nicknames = { "Ten", "Deset" }, count = ClassesMarker.E.TWO) @ClassesNamer(name = "my text") public class Classes { public static String nameOfIO() { @@ -40,6 +41,7 @@ private static final Class PRELOAD = Runnable.class; private static final Class PRELOAD2 = ClassesMarker.E.class; + private static final Class PRELOAD3 = RetentionPolicy.class; public static boolean isInterface(String s) throws ClassNotFoundException { return Class.forName(s).isInterface(); @@ -101,6 +103,13 @@ } return sb.toString().toString(); } + public static String getMarkerE() { + ClassesMarker cm = Classes.class.getAnnotation(ClassesMarker.class); + if (cm == null) { + return null; + } + return cm.count().name(); + } public static String getNamer(boolean direct) { if (direct) { ClassesNamer cm = Classes.class.getAnnotation(ClassesNamer.class);