protected class TypeWriter.Default.ForInlining.WithFullProcessing.RedefinitionClassVisitor extends MetadataAwareClassVisitor
| Modifier and Type | Class and Description |
|---|---|
protected class |
TypeWriter.Default.ForInlining.WithFullProcessing.RedefinitionClassVisitor.AttributeObtainingFieldVisitor
A field visitor that obtains all attributes and annotations of a field that is found in the
class file but that discards all code.
|
protected class |
TypeWriter.Default.ForInlining.WithFullProcessing.RedefinitionClassVisitor.AttributeObtainingMethodVisitor
A method visitor that obtains all attributes and annotations of a method that is found in the
class file but that discards all code.
|
protected class |
TypeWriter.Default.ForInlining.WithFullProcessing.RedefinitionClassVisitor.CodePreservingMethodVisitor
A method visitor that preserves the code of a method in the class file by copying it into a rebased
method while copying all attributes and annotations to the actual method.
|
| Modifier and Type | Field and Description |
|---|---|
private TypeWriter.Default.ForInlining.ContextRegistry |
contextRegistry
A context registry to register the lazily created implementation context to.
|
private java.util.LinkedHashMap<java.lang.String,FieldDescription> |
declarableFields
A mapping of fields to write by their names.
|
private java.util.LinkedHashMap<java.lang.String,MethodDescription> |
declarableMethods
A mapping of methods to write by a concatenation of internal name and descriptor.
|
private java.util.LinkedHashMap<java.lang.String,TypeDescription> |
declaredTypes
A mapping of the internal names of all declared types to their description.
|
private Implementation.Context.ExtractableView |
implementationContext
The implementation context for this class creation or
null if it was not yet created. |
private TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler |
initializationHandler
The initialization handler to use or
null if the handler was not yet initialized. |
private TypeWriter.MethodPool |
methodPool
The method pool to use or
null if the pool was not yet initialized. |
private java.util.Set<java.lang.String> |
nestMembers
A set of internal names of all nest members not yet defined by this type.
|
private int |
readerFlags
The reader flags being used.
|
private boolean |
retainDeprecationModifiers
true if the modifiers for deprecation should be retained. |
private TypeInitializer |
typeInitializer
The type initializer to apply.
|
private int |
writerFlags
The writer flags being used.
|
| Modifier | Constructor and Description |
|---|---|
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.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
onAfterAttributes()
Invoked if the attribute visitation is about to complete.
|
protected void |
onNestHost()
Invoked if the nest host was not visited.
|
protected void |
onOuterType()
Invoked if the outer class was not visited.
|
protected org.objectweb.asm.AnnotationVisitor |
onVisitAnnotation(java.lang.String descriptor,
boolean visible)
An order-sensitive invocation of
ClassVisitor.visitAnnotation(String, boolean). |
protected void |
onVisitEnd()
An order-sensitive invocation of
ClassVisitor.visitEnd(). |
protected org.objectweb.asm.FieldVisitor |
onVisitField(int modifiers,
java.lang.String internalName,
java.lang.String descriptor,
java.lang.String genericSignature,
java.lang.Object defaultValue)
An order-sensitive invocation of
ClassVisitor.visitField(int, String, String, String, Object). |
protected void |
onVisitInnerClass(java.lang.String internalName,
java.lang.String outerName,
java.lang.String innerName,
int modifiers)
An order-sensitive invocation of
ClassVisitor.visitInnerClass(String, String, String, int). |
protected org.objectweb.asm.MethodVisitor |
onVisitMethod(int modifiers,
java.lang.String internalName,
java.lang.String descriptor,
java.lang.String genericSignature,
java.lang.String[] exceptionName)
An order-sensitive invocation of
ClassVisitor.visitMethod(int, String, String, String, String[]). |
protected void |
onVisitNestHost(java.lang.String nestHost)
An order-sensitive invocation of
ClassVisitor.visitNestHost(String). |
protected void |
onVisitNestMember(java.lang.String nestMember)
An order-sensitive invocation of
ClassVisitor.visitNestMember(String). |
protected void |
onVisitOuterClass(java.lang.String owner,
java.lang.String name,
java.lang.String descriptor)
An order-sensitive invocation of
ClassVisitor.visitOuterClass(String, String, String). |
protected org.objectweb.asm.AnnotationVisitor |
onVisitTypeAnnotation(int typeReference,
org.objectweb.asm.TypePath typePath,
java.lang.String descriptor,
boolean visible)
An order-sensitive invocation of
ClassVisitor.visitTypeAnnotation(int, TypePath, String, boolean). |
protected org.objectweb.asm.MethodVisitor |
redefine(MethodDescription methodDescription,
boolean abstractOrigin,
int modifiers,
java.lang.String genericSignature)
Redefines a given method if this is required by looking up a potential implementation from the
TypeWriter.MethodPool. |
protected org.objectweb.asm.FieldVisitor |
redefine(TypeWriter.FieldPool.Record record,
java.lang.Object defaultValue,
int modifiers,
java.lang.String genericSignature)
Redefines a field using the given explicit field pool record and default value.
|
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. |
void |
visit(int classFileVersionNumber,
int modifiers,
java.lang.String internalName,
java.lang.String genericSignature,
java.lang.String superClassInternalName,
java.lang.String[] interfaceTypeInternalName) |
onVisitAttribute, visitAnnotation, visitAttribute, visitEnd, visitField, visitInnerClass, visitMethod, visitNestHost, visitNestMember, visitOuterClass, visitTypeAnnotationprivate final TypeInitializer typeInitializer
private final TypeWriter.Default.ForInlining.ContextRegistry contextRegistry
private final int writerFlags
private final int readerFlags
private final java.util.LinkedHashMap<java.lang.String,FieldDescription> declarableFields
private final java.util.LinkedHashMap<java.lang.String,MethodDescription> declarableMethods
private final java.util.Set<java.lang.String> nestMembers
private final java.util.LinkedHashMap<java.lang.String,TypeDescription> declaredTypes
private TypeWriter.MethodPool methodPool
null if the pool was not yet initialized.private TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler initializationHandler
null if the handler was not yet initialized.private Implementation.Context.ExtractableView implementationContext
null if it was not yet created.private boolean retainDeprecationModifiers
true if the modifiers for deprecation should be retained.protected RedefinitionClassVisitor(org.objectweb.asm.ClassVisitor classVisitor,
TypeInitializer typeInitializer,
TypeWriter.Default.ForInlining.ContextRegistry contextRegistry,
int writerFlags,
int readerFlags)
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.public void visit(int classFileVersionNumber,
int modifiers,
java.lang.String internalName,
java.lang.String genericSignature,
java.lang.String superClassInternalName,
java.lang.String[] interfaceTypeInternalName)
visit in class org.objectweb.asm.ClassVisitorprotected void onVisitNestHost(java.lang.String nestHost)
MetadataAwareClassVisitorClassVisitor.visitNestHost(String).onVisitNestHost in class MetadataAwareClassVisitornestHost - The internal name of the nest host.protected void onNestHost()
MetadataAwareClassVisitoronNestHost in class MetadataAwareClassVisitorprotected void onVisitOuterClass(java.lang.String owner,
java.lang.String name,
java.lang.String descriptor)
MetadataAwareClassVisitorClassVisitor.visitOuterClass(String, String, String).onVisitOuterClass in class MetadataAwareClassVisitorowner - 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.protected void onOuterType()
MetadataAwareClassVisitoronOuterType in class MetadataAwareClassVisitorprotected void onAfterAttributes()
MetadataAwareClassVisitoronAfterAttributes in class MetadataAwareClassVisitorprotected org.objectweb.asm.AnnotationVisitor onVisitTypeAnnotation(int typeReference,
org.objectweb.asm.TypePath typePath,
java.lang.String descriptor,
boolean visible)
MetadataAwareClassVisitorClassVisitor.visitTypeAnnotation(int, TypePath, String, boolean).onVisitTypeAnnotation in class MetadataAwareClassVisitortypeReference - 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.null if the annotation should be ignored.protected org.objectweb.asm.AnnotationVisitor onVisitAnnotation(java.lang.String descriptor,
boolean visible)
MetadataAwareClassVisitorClassVisitor.visitAnnotation(String, boolean).onVisitAnnotation in class MetadataAwareClassVisitordescriptor - The annotation type's descriptor.visible - true if the annotation is visible at runtime.null if the annotation should be ignored.protected org.objectweb.asm.FieldVisitor onVisitField(int modifiers,
java.lang.String internalName,
java.lang.String descriptor,
java.lang.String genericSignature,
java.lang.Object defaultValue)
MetadataAwareClassVisitorClassVisitor.visitField(int, String, String, String, Object).onVisitField in class MetadataAwareClassVisitormodifiers - 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.null to ignore it.protected org.objectweb.asm.FieldVisitor redefine(TypeWriter.FieldPool.Record record, java.lang.Object defaultValue, int modifiers, java.lang.String genericSignature)
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.protected org.objectweb.asm.MethodVisitor onVisitMethod(int modifiers,
java.lang.String internalName,
java.lang.String descriptor,
java.lang.String genericSignature,
java.lang.String[] exceptionName)
MetadataAwareClassVisitorClassVisitor.visitMethod(int, String, String, String, String[]).onVisitMethod in class MetadataAwareClassVisitormodifiers - 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.null to ignore it.protected org.objectweb.asm.MethodVisitor redefine(MethodDescription methodDescription, boolean abstractOrigin, int modifiers, java.lang.String genericSignature)
TypeWriter.MethodPool.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.protected void onVisitInnerClass(java.lang.String internalName,
java.lang.String outerName,
java.lang.String innerName,
int modifiers)
MetadataAwareClassVisitorClassVisitor.visitInnerClass(String, String, String, int).onVisitInnerClass in class MetadataAwareClassVisitorinternalName - 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.protected void onVisitNestMember(java.lang.String nestMember)
MetadataAwareClassVisitorClassVisitor.visitNestMember(String).onVisitNestMember in class MetadataAwareClassVisitornestMember - The internal name of the nest member.protected void onVisitEnd()
MetadataAwareClassVisitorClassVisitor.visitEnd().onVisitEnd in class MetadataAwareClassVisitorprivate int resolveDeprecationModifiers(int modifiers)
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.modifiers - The original modifiers.Opcodes.ACC_DEPRECATED if the supplied modifiers imply deprecation.