/** * Visits the header of the class. * * @param version the class version. The minor version is stored in the 16 most significant bits, * and the major version in the 16 least significant bits. * @param access the class's access flags (see {@link Opcodes}). This parameter also indicates if * the class is deprecated. * @param name the internal name of the class (see {@link Type#getInternalName()}). * @param signature the signature of this class. May be {@literal null} if the class is not a * generic one, and does not extend or implement generic classes or interfaces. * @param superName the internal of name of the super class (see {@link Type#getInternalName()}). * For interfaces, the super class is {@link Object}. May be {@literal null}, but only for the * {@link Object} class. * @param interfaces the internal names of the class's interfaces (see {@link * Type#getInternalName()}). May be {@literal null}. */ public void visit( final int version, final int access, final String name, final String signature, final String superName, final String[] interfaces) { if (cv != null) { cv.visit(version, access, name, signature, superName, interfaces); } }
classVisitor.visit( readInt(cpInfoOffsets[1] - 7), accessFlags, thisClass, signature, superClass, interfaces);
writerFlags, asmVisitorWrapper.mergeReader(AsmVisitorWrapper.NO_FLAGS)); classVisitor.visit(classFileVersion.getMinorMajorVersion(), instrumentedType.getActualModifiers(!instrumentedType.isInterface()), instrumentedType.getInternalName(),
@Override public void visit(int version, int modifiers, String internalName, String genericSignature, String superClassInternalName, String[] interfaceInternalName) { if (superClassInternalName != null) { observedTypes.add(superClassInternalName); } if (interfaceInternalName != null) { observedTypes.addAll(Arrays.asList(interfaceInternalName)); } super.visit(version, modifiers, internalName, genericSignature, superClassInternalName, interfaceInternalName); }
@Override public void visit(int version, int modifiers, String name, String signature, String superClassName, String[] interfaceName) { supportsTypeConstants = ClassFileVersion.ofMinorMajor(version).isAtLeast(ClassFileVersion.JAVA_V5); super.visit(version, modifiers, name, signature, superClassName, interfaceName); }
@Override public void visit(int version, int modifiers, String internalName, String signature, String superClassName, String[] interfaceName) { for (Adjustment<TypeDescription> adjustment : typeAdjustments) { if (adjustment.matches(instrumentedType)) { modifiers = adjustment.resolve(modifiers); break; } } super.visit(version, modifiers, internalName, signature, superClassName, interfaceName); }
@Override public void visit(int version, int modifiers, String name, String signature, String superName, String[] interfaces) { ClassFileVersion classFileVersion = ClassFileVersion.ofMinorMajor(version); List<Constraint> constraints = new ArrayList<Constraint>(); constraints.add(new Constraint.ForClassFileVersion(classFileVersion)); if (name.endsWith('/' + PackageDescription.PACKAGE_CLASS_NAME)) { constraints.add(Constraint.ForPackageType.INSTANCE); } else if ((modifiers & Opcodes.ACC_ANNOTATION) != 0) { if (!classFileVersion.isAtLeast(ClassFileVersion.JAVA_V5)) { throw new IllegalStateException("Cannot define an annotation type for class file version " + classFileVersion); } constraints.add(classFileVersion.isAtLeast(ClassFileVersion.JAVA_V8) ? Constraint.ForAnnotation.JAVA_8 : Constraint.ForAnnotation.CLASSIC); } else if ((modifiers & Opcodes.ACC_INTERFACE) != 0) { constraints.add(classFileVersion.isAtLeast(ClassFileVersion.JAVA_V8) ? Constraint.ForInterface.JAVA_8 : Constraint.ForInterface.CLASSIC); } else if ((modifiers & Opcodes.ACC_ABSTRACT) != 0) { constraints.add(Constraint.ForClass.ABSTRACT); } else { constraints.add(Constraint.ForClass.MANIFEST); } constraint = new Constraint.Compound(constraints); constraint.assertType(modifiers, interfaces != null, signature != null); super.visit(version, modifiers, name, signature, superName, interfaces); }
@Override public void visit(final int version, final int access, final String name, final String signature, final String superName, final String[] interfaces) { final int accessModifiersWithFinalRemoved = removeFinal(access); super.visit(version, accessModifiersWithFinalRemoved, name, signature, superName, interfaces); }
@Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { final ClassFileVersion classFileVersion = ClassFileVersion.ofMinorMajor(version); if (!classFileVersion.isAtLeast(MINIMUM_CLASS_FILE_VERSION)) { throw UnsupportedClassFileVersionException.INSTANCE; } super.visit(version, access, name, signature, superName, interfaces); } };