Class TypeWriter.Default.ForInlining.WithFullProcessing.RedefinitionClassVisitor

java.lang.Object
org.objectweb.asm.ClassVisitor
net.bytebuddy.utility.visitor.MetadataAwareClassVisitor
net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.RedefinitionClassVisitor
Enclosing class:
TypeWriter.Default.ForInlining.WithFullProcessing<V>

protected class TypeWriter.Default.ForInlining.WithFullProcessing.RedefinitionClassVisitor extends MetadataAwareClassVisitor
A class visitor which is capable of applying a redefinition of an existing class file.
  • Field Details

    • typeInitializer

      private final TypeInitializer typeInitializer
      The type initializer to apply.
    • contextRegistry

      private final TypeWriter.Default.ForInlining.ContextRegistry contextRegistry
      A context registry to register the lazily created implementation context to.
    • writerFlags

      private final int writerFlags
      The writer flags being used.
    • readerFlags

      private final int readerFlags
      The reader flags being used.
    • declarableFields

      private final LinkedHashMap<String,FieldDescription> declarableFields
      A mapping of fields to write by their names.
    • declarableMethods

      private final LinkedHashMap<String,MethodDescription> declarableMethods
      A mapping of methods to write by a concatenation of internal name and descriptor.
    • declarableRecordComponents

      private final LinkedHashMap<String,RecordComponentDescription> declarableRecordComponents
      A mapping of record components to write by their names.
    • nestMembers

      private final Set<String> nestMembers
      A set of internal names of all nest members not yet defined by this type. If this type is not a nest host, this set is empty.
    • declaredTypes

      private final LinkedHashMap<String,TypeDescription> declaredTypes
      A mapping of the internal names of all declared types to their description.
    • permittedSubclasses

      private final Set<String> permittedSubclasses
      A list of internal names of permitted subclasses to include.
    • methodPool

      private TypeWriter.MethodPool methodPool
      The method pool to use or null if the pool was not yet initialized.
    • initializationHandler

      The initialization handler to use or null if the handler was not yet initialized.
    • implementationContext

      private Implementation.Context.ExtractableView implementationContext
      The implementation context for this class creation or null if it was not yet created.
    • retainDeprecationModifiers

      private boolean retainDeprecationModifiers
      true if the modifiers for deprecation should be retained.
  • Constructor Details

    • RedefinitionClassVisitor

      protected RedefinitionClassVisitor(org.objectweb.asm.ClassVisitor classVisitor, TypeInitializer typeInitializer, TypeWriter.Default.ForInlining.ContextRegistry contextRegistry, int writerFlags, int readerFlags)
      Creates a class visitor which is capable of redefining an existent class on the fly.
      Parameters:
      classVisitor - The underlying class visitor to which writes are delegated.
      typeInitializer - The type initializer to apply.
      contextRegistry - A context registry to register the lazily created implementation context to.
      writerFlags - The writer flags being used.
      readerFlags - The reader flags being used.
  • Method Details

    • visit

      public void visit(int classFileVersionNumber, int modifiers, String internalName, String genericSignature, String superClassInternalName, String[] interfaceTypeInternalName)
      Overrides:
      visit in class org.objectweb.asm.ClassVisitor
    • onVisitNestHost

      protected void onVisitNestHost(String nestHost)
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor.visitNestHost(String).
      Overrides:
      onVisitNestHost in class MetadataAwareClassVisitor
      Parameters:
      nestHost - The internal name of the nest host.
    • onNestHost

      protected void onNestHost()
      Description copied from class: MetadataAwareClassVisitor
      Invoked if the nest host was not visited.
      Overrides:
      onNestHost in class MetadataAwareClassVisitor
    • onVisitPermittedSubclass

      protected void onVisitPermittedSubclass(String permittedSubclass)
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor#visitPermittedSubclass.
      Overrides:
      onVisitPermittedSubclass in class MetadataAwareClassVisitor
      Parameters:
      permittedSubclass - The internal name of the permitted subclass.
    • onVisitOuterClass

      protected void onVisitOuterClass(String owner, String name, String descriptor)
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor.visitOuterClass(String, String, String).
      Overrides:
      onVisitOuterClass in class MetadataAwareClassVisitor
      Parameters:
      owner - The outer class's internal name.
      name - The outer method's name or null if it does not exist.
      descriptor - The outer method's descriptor or null if it does not exist.
    • onOuterType

      protected void onOuterType()
      Description copied from class: MetadataAwareClassVisitor
      Invoked if the outer class was not visited.
      Overrides:
      onOuterType in class MetadataAwareClassVisitor
    • onAfterAttributes

      protected void onAfterAttributes()
      Description copied from class: MetadataAwareClassVisitor
      Invoked if the attribute visitation is about to complete.
      Overrides:
      onAfterAttributes in class MetadataAwareClassVisitor
    • onVisitTypeAnnotation

      protected org.objectweb.asm.AnnotationVisitor onVisitTypeAnnotation(int typeReference, org.objectweb.asm.TypePath typePath, String descriptor, boolean visible)
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor.visitTypeAnnotation(int, TypePath, String, boolean).
      Overrides:
      onVisitTypeAnnotation in class MetadataAwareClassVisitor
      Parameters:
      typeReference - The type reference of the type annotation.
      typePath - The type path of the type annotation.
      descriptor - The descriptor of the annotation type.
      visible - true if the annotation is visible at runtime.
      Returns:
      An annotation visitor or null if the annotation should be ignored.
    • onVisitAnnotation

      protected org.objectweb.asm.AnnotationVisitor onVisitAnnotation(String descriptor, boolean visible)
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor.visitAnnotation(String, boolean).
      Overrides:
      onVisitAnnotation in class MetadataAwareClassVisitor
      Parameters:
      descriptor - The annotation type's descriptor.
      visible - true if the annotation is visible at runtime.
      Returns:
      An annotation visitor or null if the annotation should be ignored.
    • onVisitRecordComponent

      protected org.objectweb.asm.RecordComponentVisitor onVisitRecordComponent(String name, String descriptor, String genericSignature)
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor.visitRecordComponent(String, String, String).
      Overrides:
      onVisitRecordComponent in class MetadataAwareClassVisitor
      Parameters:
      name - The record component's name.
      descriptor - The record component's descriptor.
      genericSignature - The record component's generic signature or null if the record component's type is non-generic.
      Returns:
      The record component visitor or null if the component should not be visited.
    • redefine

      protected org.objectweb.asm.RecordComponentVisitor redefine(TypeWriter.RecordComponentPool.Record record, String genericSignature)
      Redefines a record component using the given explicit record component pool record.
      Parameters:
      record - The record component pool record to apply during visitation of the existing record.
      genericSignature - The record component's original generic signature which can be null.
      Returns:
      A record component visitor for visiting the existing record component definition.
    • onVisitField

      protected org.objectweb.asm.FieldVisitor onVisitField(int modifiers, String internalName, String descriptor, String genericSignature, Object defaultValue)
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor.visitField(int, String, String, String, Object).
      Overrides:
      onVisitField in class MetadataAwareClassVisitor
      Parameters:
      modifiers - The field's modifiers.
      internalName - The field's internal name.
      descriptor - The field type's descriptor.
      genericSignature - The field's generic signature or null if the field is not generic.
      defaultValue - The field's default value or null if no such value exists.
      Returns:
      A field visitor to visit the field or null to ignore it.
    • redefine

      protected org.objectweb.asm.FieldVisitor redefine(TypeWriter.FieldPool.Record record, Object defaultValue, int modifiers, String genericSignature)
      Redefines a field using the given explicit field pool record and default value.
      Parameters:
      record - The field pool value to apply during visitation of the existing field.
      defaultValue - The default value to write onto the field which might be null.
      modifiers - The original modifiers of the transformed field.
      genericSignature - The field's original generic signature which can be null.
      Returns:
      A field visitor for visiting the existing field definition.
    • onVisitMethod

      protected org.objectweb.asm.MethodVisitor onVisitMethod(int modifiers, String internalName, String descriptor, String genericSignature, String[] exceptionName)
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor.visitMethod(int, String, String, String, String[]).
      Overrides:
      onVisitMethod in class MetadataAwareClassVisitor
      Parameters:
      modifiers - The method's modifiers.
      internalName - The method's internal name.
      descriptor - The field type's descriptor.
      genericSignature - The method's generic signature or null if the method is not generic.
      exceptionName - The method's declared exceptions or null if no exceptions are declared.
      Returns:
      A method visitor to visit the method or null to ignore it.
    • redefine

      protected org.objectweb.asm.MethodVisitor redefine(MethodDescription methodDescription, boolean abstractOrigin, int modifiers, String genericSignature)
      Redefines a given method if this is required by looking up a potential implementation from the TypeWriter.MethodPool.
      Parameters:
      methodDescription - The method being considered for redefinition.
      abstractOrigin - true if the original method is abstract, i.e. there is no implementation to preserve.
      modifiers - The original modifiers of the transformed method.
      genericSignature - The method's original generic signature which can be null.
      Returns:
      A method visitor which is capable of consuming the original method.
    • onVisitInnerClass

      protected void onVisitInnerClass(String internalName, String outerName, String innerName, int modifiers)
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor.visitInnerClass(String, String, String, int).
      Overrides:
      onVisitInnerClass in class MetadataAwareClassVisitor
      Parameters:
      internalName - The internal name of the inner class.
      outerName - The internal name of the outer class.
      innerName - The inner class's simple name or null for an anonymous class.
      modifiers - The inner class's source code modifiers.
    • onVisitNestMember

      protected void onVisitNestMember(String nestMember)
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor.visitNestMember(String).
      Overrides:
      onVisitNestMember in class MetadataAwareClassVisitor
      Parameters:
      nestMember - The internal name of the nest member.
    • onVisitEnd

      protected void onVisitEnd()
      Description copied from class: MetadataAwareClassVisitor
      An order-sensitive invocation of ClassVisitor.visitEnd().
      Overrides:
      onVisitEnd in class MetadataAwareClassVisitor
    • resolveDeprecationModifiers

      private int resolveDeprecationModifiers(int modifiers)
      Returns Opcodes.ACC_DEPRECATED if the current class file version only represents deprecated methods using modifiers that are not exposed in the type description API what is true for class files before Java 5 and if the supplied modifiers indicate deprecation.
      Parameters:
      modifiers - The original modifiers.
      Returns:
      Opcodes.ACC_DEPRECATED if the supplied modifiers imply deprecation.