Package jodd.proxetta.asm
Class ProxettaWrapperClassBuilder
- java.lang.Object
-
- jodd.asm9.ClassVisitor
-
- jodd.asm.EmptyClassVisitor
-
- jodd.proxetta.asm.ProxettaClassBuilder
-
- jodd.proxetta.asm.ProxettaWrapperClassBuilder
-
public class ProxettaWrapperClassBuilder extends ProxettaClassBuilder
-
-
Field Summary
Fields Modifier and Type Field Description protected booleancreateTargetInDefaultCtorprotected java.lang.ClasstargetClassOrInterfaceprotected java.lang.StringtargetFieldNameprotected java.lang.ClasstargetInterface-
Fields inherited from class jodd.proxetta.asm.ProxettaClassBuilder
aspects, reqProxyClassName, suffix, targetClassInfo, wd
-
Fields inherited from class jodd.asm9.ClassVisitor
api, cv
-
-
Constructor Summary
Constructors Constructor Description ProxettaWrapperClassBuilder(java.lang.Class targetClassOrInterface, java.lang.Class targetInterface, java.lang.String targetFieldName, ClassVisitor dest, ProxyAspect[] aspects, java.lang.String suffix, java.lang.String reqProxyClassName, TargetClassInfoReader targetClassInfoReader, boolean createTargetInDefaultCtor)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ProxettaMethodBuilderapplyProxy(MethodSignatureVisitor msign)Check if proxy should be applied on method and return proxy method builder if so.protected voidcreateEmptyCtor()Created empty default constructor.protected voidcreateEmptyCtorThatCreatesTarget()protected voidcreateSimpleMethodWrapper(MethodSignatureVisitor msign)Creates simple method wrapper without proxy.voidvisit(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)Creates destination subclass header from current target class.voidvisitEnd()Finalizes creation of destination proxy class.MethodVisitorvisitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)Creates proxified methods and constructors.-
Methods inherited from class jodd.proxetta.asm.ProxettaClassBuilder
getWorkData, makeProxyConstructor, makeStaticInitBlock, matchMethodPointcuts, processSuperMethods, visitAnnotation, visitAttribute, visitField, visitInnerClass, visitOuterClass, visitSource
-
Methods inherited from class jodd.asm9.ClassVisitor
visitModule, visitNestHost, visitNestMember, visitPermittedSubclass, visitRecordComponent, visitTypeAnnotation
-
-
-
-
Constructor Detail
-
ProxettaWrapperClassBuilder
public ProxettaWrapperClassBuilder(java.lang.Class targetClassOrInterface, java.lang.Class targetInterface, java.lang.String targetFieldName, ClassVisitor dest, ProxyAspect[] aspects, java.lang.String suffix, java.lang.String reqProxyClassName, TargetClassInfoReader targetClassInfoReader, boolean createTargetInDefaultCtor)
-
-
Method Detail
-
visit
public void visit(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)Creates destination subclass header from current target class. Destination name is created from targets by adding a suffix and, optionally, a number. Destination extends the target.- Overrides:
visitin classProxettaClassBuilder- Parameters:
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.access- the class's access flags (seeOpcodes). This parameter also indicates if the class is deprecatedOpcodes.ACC_DEPRECATEDor a recordOpcodes.ACC_RECORD.name- the internal name of the class (seeType.getInternalName()).signature- the signature of this class. May be null if the class is not a generic one, and does not extend or implement generic classes or interfaces.superName- the internal of name of the super class (seeType.getInternalName()). For interfaces, the super class isObject. May be null, but only for theObjectclass.interfaces- the internal names of the class's interfaces (seeType.getInternalName()). May be null.
-
createEmptyCtor
protected void createEmptyCtor()
Created empty default constructor.
-
createEmptyCtorThatCreatesTarget
protected void createEmptyCtorThatCreatesTarget()
-
visitMethod
public MethodVisitor visitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)
Creates proxified methods and constructors. Destination proxy will have all constructors as a target class, usingProxettaCtorBuilder. Static initializers are removed, since they will be execute in target anyway. For each method,ProxettaMethodBuilderdetermines if method matches pointcut. If so, method will be proxified.- Overrides:
visitMethodin classProxettaClassBuilder- Parameters:
access- the method's access flags (seeOpcodes). This parameter also indicates if the method is synthetic and/or deprecated.name- the method's name.desc- the method's descriptor (seeType).signature- the method's signature. May be null if the method parameters, return type and exceptions do not use generic types.exceptions- the internal names of the method's exception classes (seeType.getInternalName()). May be null.- Returns:
- an object to visit the byte code of the method, or null if this class visitor is not interested in visiting the code of this method.
-
applyProxy
protected ProxettaMethodBuilder applyProxy(MethodSignatureVisitor msign)
Description copied from class:ProxettaClassBuilderCheck if proxy should be applied on method and return proxy method builder if so. Otherwise, returnsnull.- Overrides:
applyProxyin classProxettaClassBuilder
-
createSimpleMethodWrapper
protected void createSimpleMethodWrapper(MethodSignatureVisitor msign)
Creates simple method wrapper without proxy.
-
visitEnd
public void visitEnd()
Description copied from class:ProxettaClassBuilderFinalizes creation of destination proxy class.- Overrides:
visitEndin classProxettaClassBuilder
-
-