@Override public AnnotationVisitor visitArray(final String name) { checkVisitEndNotCalled(); checkName(name); return new CheckAnnotationAdapter(super.visitArray(name), false); }
@Override public AnnotationVisitor visitArray(final String name) { checkEnd(); checkName(name); return new CheckAnnotationAdapter(av == null ? null : av.visitArray(name), false); }
@Override public void visitEnum(final String name, final String descriptor, final String value) { checkVisitEndNotCalled(); checkName(name); // Annotations can only appear in V1_5 or more classes. CheckMethodAdapter.checkDescriptor(Opcodes.V1_5, descriptor, false); if (value == null) { throw new IllegalArgumentException("Invalid enum value"); } super.visitEnum(name, descriptor, value); }
@Override public AnnotationVisitor visitAnnotationDefault() { checkEndMethod(); return new CheckAnnotationAdapter(super.visitAnnotationDefault(), false); }
@Override public void visitEnd() { checkEnd(); end = true; if (av != null) { av.visitEnd(); } }
@Override public void visitEnd() { checkVisitEndNotCalled(); visitEndCalled = true; super.visitEnd(); }
@Override public AnnotationVisitor visitAnnotationDefault() { checkVisitEndNotCalled(); return new CheckAnnotationAdapter(super.visitAnnotationDefault(), false); }
@Override public void visitEnum(final String name, final String descriptor, final String value) { checkVisitEndNotCalled(); checkName(name); // Annotations can only appear in V1_5 or more classes. CheckMethodAdapter.checkDescriptor(Opcodes.V1_5, descriptor, false); if (value == null) { throw new IllegalArgumentException("Invalid enum value"); } super.visitEnum(name, descriptor, value); }
@Override public void visit(final String name, final Object value) { checkEnd(); checkName(name); if (!(value instanceof Byte || value instanceof Boolean || value instanceof Character || value instanceof Short || value instanceof Integer || value instanceof Long || value instanceof Float || value instanceof Double || value instanceof String || value instanceof Type || value instanceof byte[] || value instanceof boolean[] || value instanceof char[] || value instanceof short[] || value instanceof int[] || value instanceof long[] || value instanceof float[] || value instanceof double[])) { throw new IllegalArgumentException("Invalid annotation value"); } if (value instanceof Type) { int sort = ((Type) value).getSort(); if (sort == Type.METHOD) { throw new IllegalArgumentException("Invalid annotation value"); } } if (av != null) { av.visit(name, value); } }
@Override public void visitEnd() { checkVisitEndNotCalled(); visitEndCalled = true; super.visitEnd(); }
@Override public AnnotationVisitor visitAnnotationDefault() { checkVisitEndNotCalled(); return new CheckAnnotationAdapter(super.visitAnnotationDefault(), false); }
@Override public AnnotationVisitor visitArray(final String name) { checkVisitEndNotCalled(); checkName(name); return new CheckAnnotationAdapter(super.visitArray(name), false); }
@Override public AnnotationVisitor visitAnnotation(final String name, final String desc) { checkEnd(); checkName(name); CheckMethodAdapter.checkDesc(desc, false); return new CheckAnnotationAdapter(av == null ? null : av.visitAnnotation(name, desc)); }
@Override public void visit(final String name, final Object value) { checkVisitEndNotCalled(); checkName(name); if (!(value instanceof Byte || value instanceof Boolean || value instanceof Character || value instanceof Short || value instanceof Integer || value instanceof Long || value instanceof Float || value instanceof Double || value instanceof String || value instanceof Type || value instanceof byte[] || value instanceof boolean[] || value instanceof char[] || value instanceof short[] || value instanceof int[] || value instanceof long[] || value instanceof float[] || value instanceof double[])) { throw new IllegalArgumentException("Invalid annotation value"); } if (value instanceof Type && ((Type) value).getSort() == Type.METHOD) { throw new IllegalArgumentException("Invalid annotation value"); } super.visit(name, value); }
@Override public AnnotationVisitor visitTypeAnnotation(final int typeRef, final TypePath typePath, final String desc, final boolean visible) { checkEnd(); int sort = typeRef >>> 24; if (sort != TypeReference.FIELD) { throw new IllegalArgumentException("Invalid type reference sort 0x" + Integer.toHexString(sort)); } CheckClassAdapter.checkTypeRefAndPath(typeRef, typePath); CheckMethodAdapter.checkDesc(desc, false); return new CheckAnnotationAdapter(super.visitTypeAnnotation(typeRef, typePath, desc, visible)); }
@Override public AnnotationVisitor visitAnnotation(final String name, final String descriptor) { checkVisitEndNotCalled(); checkName(name); // Annotations can only appear in V1_5 or more classes. CheckMethodAdapter.checkDescriptor(Opcodes.V1_5, descriptor, false); return new CheckAnnotationAdapter(super.visitAnnotation(name, descriptor)); }
@Override public void visit(final String name, final Object value) { checkVisitEndNotCalled(); checkName(name); if (!(value instanceof Byte || value instanceof Boolean || value instanceof Character || value instanceof Short || value instanceof Integer || value instanceof Long || value instanceof Float || value instanceof Double || value instanceof String || value instanceof Type || value instanceof byte[] || value instanceof boolean[] || value instanceof char[] || value instanceof short[] || value instanceof int[] || value instanceof long[] || value instanceof float[] || value instanceof double[])) { throw new IllegalArgumentException("Invalid annotation value"); } if (value instanceof Type && ((Type) value).getSort() == Type.METHOD) { throw new IllegalArgumentException("Invalid annotation value"); } super.visit(name, value); }
@Override public AnnotationVisitor visitParameterAnnotation( final int parameter, final String descriptor, final boolean visible) { checkVisitEndNotCalled(); if ((visible && visibleAnnotableParameterCount > 0 && parameter >= visibleAnnotableParameterCount) || (!visible && invisibleAnnotableParameterCount > 0 && parameter >= invisibleAnnotableParameterCount)) { throw new IllegalArgumentException("Invalid parameter index"); } checkDescriptor(version, descriptor, false); return new CheckAnnotationAdapter( super.visitParameterAnnotation(parameter, descriptor, visible)); }
@Override public AnnotationVisitor visitAnnotation(final String name, final String descriptor) { checkVisitEndNotCalled(); checkName(name); // Annotations can only appear in V1_5 or more classes. CheckMethodAdapter.checkDescriptor(Opcodes.V1_5, descriptor, false); return new CheckAnnotationAdapter(super.visitAnnotation(name, descriptor)); }