Package net.minidev.asm
Class BeansAccessBuilder
- java.lang.Object
-
- net.minidev.asm.BeansAccessBuilder
-
public class BeansAccessBuilder extends java.lang.ObjectA builder class for dynamically creatingBeansAccessclasses for accessing bean properties efficiently. This class utilizes the ASM library to generate bytecode at runtime, thereby bypassing the need for Java reflection.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) java.lang.StringaccessClassName(package private) java.lang.StringaccessClassNameInternal(package private) Accessor[]accs(package private) java.lang.StringclassName(package private) java.lang.StringclassNameInternal(package private) java.util.HashMap<java.lang.Class<?>,java.lang.reflect.Method>convMtds(package private) java.lang.Class<? extends java.lang.Exception>exceptionClass(package private) DynamicClassLoaderloaderprivate static java.lang.StringMETHOD_ACCESS_NAME(package private) java.lang.Class<?>type
-
Constructor Summary
Constructors Constructor Description BeansAccessBuilder(java.lang.Class<?> type, Accessor[] accs, DynamicClassLoader loader)Initializes a new builder instance for a given bean class.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddConversion(java.lang.Class<?> conv)Resister a new conversionvoidaddConversion(java.lang.Iterable<java.lang.Class<?>> conv)register multiple new conversionjava.lang.Class<?>bulid()build the conversion class.private voiddumpDebug(byte[] data, java.lang.String destFile)Dump Generate Codeprivate voidifNotEqJmp(org.objectweb.asm.MethodVisitor mv, int param, int value, org.objectweb.asm.Label label)dump a Jump if not EQprivate voidinternalSetFiled(org.objectweb.asm.MethodVisitor mv, Accessor acc)Dump Set Field Codeprivate voidthrowExIntParam(org.objectweb.asm.MethodVisitor mv, java.lang.Class<?> exCls)add Throws statement with int param 2private voidthrowExStrParam(org.objectweb.asm.MethodVisitor mv, java.lang.Class<?> exCls)add Throws statement with String param 2
-
-
-
Field Detail
-
METHOD_ACCESS_NAME
private static java.lang.String METHOD_ACCESS_NAME
-
type
final java.lang.Class<?> type
-
accs
final Accessor[] accs
-
loader
final DynamicClassLoader loader
-
className
final java.lang.String className
-
accessClassName
final java.lang.String accessClassName
-
accessClassNameInternal
final java.lang.String accessClassNameInternal
-
classNameInternal
final java.lang.String classNameInternal
-
convMtds
final java.util.HashMap<java.lang.Class<?>,java.lang.reflect.Method> convMtds
-
exceptionClass
java.lang.Class<? extends java.lang.Exception> exceptionClass
-
-
Constructor Detail
-
BeansAccessBuilder
public BeansAccessBuilder(java.lang.Class<?> type, Accessor[] accs, DynamicClassLoader loader)Initializes a new builder instance for a given bean class.- Parameters:
type- type to be accessaccs- used accessorloader- Loader used to store the generated class
-
-
Method Detail
-
addConversion
public void addConversion(java.lang.Iterable<java.lang.Class<?>> conv)
register multiple new conversion- Parameters:
conv- conv list
-
addConversion
public void addConversion(java.lang.Class<?> conv)
Resister a new conversion- Parameters:
conv- the conv
-
bulid
public java.lang.Class<?> bulid()
build the conversion class.- Returns:
- the new Class
-
dumpDebug
private void dumpDebug(byte[] data, java.lang.String destFile)Dump Generate Code
-
internalSetFiled
private void internalSetFiled(org.objectweb.asm.MethodVisitor mv, Accessor acc)Dump Set Field Code- Parameters:
mv-acc-
-
throwExIntParam
private void throwExIntParam(org.objectweb.asm.MethodVisitor mv, java.lang.Class<?> exCls)add Throws statement with int param 2
-
throwExStrParam
private void throwExStrParam(org.objectweb.asm.MethodVisitor mv, java.lang.Class<?> exCls)add Throws statement with String param 2
-
ifNotEqJmp
private void ifNotEqJmp(org.objectweb.asm.MethodVisitor mv, int param, int value, org.objectweb.asm.Label label)dump a Jump if not EQ
-
-