61 import jdk.internal.org.objectweb.asm.AnnotationVisitor;
62 import jdk.internal.org.objectweb.asm.Opcodes;
63 import jdk.internal.org.objectweb.asm.Type;
64
65 /**
66 * An {@link AnnotationVisitor} that checks that its methods are properly used.
67 *
68 * @author Eric Bruneton
69 */
70 public class CheckAnnotationAdapter extends AnnotationVisitor {
71
72 private final boolean named;
73
74 private boolean end;
75
76 public CheckAnnotationAdapter(final AnnotationVisitor av) {
77 this(av, true);
78 }
79
80 CheckAnnotationAdapter(final AnnotationVisitor av, final boolean named) {
81 super(Opcodes.ASM5, av);
82 this.named = named;
83 }
84
85 @Override
86 public void visit(final String name, final Object value) {
87 checkEnd();
88 checkName(name);
89 if (!(value instanceof Byte || value instanceof Boolean
90 || value instanceof Character || value instanceof Short
91 || value instanceof Integer || value instanceof Long
92 || value instanceof Float || value instanceof Double
93 || value instanceof String || value instanceof Type
94 || value instanceof byte[] || value instanceof boolean[]
95 || value instanceof char[] || value instanceof short[]
96 || value instanceof int[] || value instanceof long[]
97 || value instanceof float[] || value instanceof double[])) {
98 throw new IllegalArgumentException("Invalid annotation value");
99 }
100 if (value instanceof Type) {
101 int sort = ((Type) value).getSort();
|
61 import jdk.internal.org.objectweb.asm.AnnotationVisitor;
62 import jdk.internal.org.objectweb.asm.Opcodes;
63 import jdk.internal.org.objectweb.asm.Type;
64
65 /**
66 * An {@link AnnotationVisitor} that checks that its methods are properly used.
67 *
68 * @author Eric Bruneton
69 */
70 public class CheckAnnotationAdapter extends AnnotationVisitor {
71
72 private final boolean named;
73
74 private boolean end;
75
76 public CheckAnnotationAdapter(final AnnotationVisitor av) {
77 this(av, true);
78 }
79
80 CheckAnnotationAdapter(final AnnotationVisitor av, final boolean named) {
81 super(Opcodes.ASM6, av);
82 this.named = named;
83 }
84
85 @Override
86 public void visit(final String name, final Object value) {
87 checkEnd();
88 checkName(name);
89 if (!(value instanceof Byte || value instanceof Boolean
90 || value instanceof Character || value instanceof Short
91 || value instanceof Integer || value instanceof Long
92 || value instanceof Float || value instanceof Double
93 || value instanceof String || value instanceof Type
94 || value instanceof byte[] || value instanceof boolean[]
95 || value instanceof char[] || value instanceof short[]
96 || value instanceof int[] || value instanceof long[]
97 || value instanceof float[] || value instanceof double[])) {
98 throw new IllegalArgumentException("Invalid annotation value");
99 }
100 if (value instanceof Type) {
101 int sort = ((Type) value).getSort();
|