Package io.github.toolfactory.jvm
Class DefaultDriver
java.lang.Object
io.github.toolfactory.jvm.DefaultDriver
- All Implemented Interfaces:
Driver
,java.io.Closeable
,java.lang.AutoCloseable
- Direct Known Subclasses:
HybridDriver
,NativeDriver
public class DefaultDriver extends java.lang.Object implements Driver
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.github.toolfactory.jvm.Driver
Driver.Factory, Driver.InitializeException, Driver.InstantiateException
-
Constructor Summary
Constructors Constructor Description DefaultDriver()
-
Method Summary
Modifier and Type Method Description <T> T
allocateInstance(java.lang.Class<?> cls)
void
close()
java.lang.Class<?>
defineHookClass(java.lang.Class<?> clientClass, byte[] byteCode)
java.lang.Class<?>
getBuiltinClassLoaderClass()
java.lang.Class<?>
getClassLoaderDelegateClass()
java.lang.invoke.MethodHandles.Lookup
getConsulter(java.lang.Class<?> cls)
<T> java.lang.reflect.Constructor<T>[]
getDeclaredConstructors(java.lang.Class<T> cls)
java.lang.reflect.Field[]
getDeclaredFields(java.lang.Class<?> cls)
java.lang.reflect.Method[]
getDeclaredMethods(java.lang.Class<?> cls)
<T> T
getFieldValue(java.lang.Object target, java.lang.reflect.Field field)
java.lang.Package
getPackage(java.lang.ClassLoader classLoader, java.lang.String packageName)
protected SetAccessibleFunction<?>
initAccessibleSetter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected AllocateInstanceFunction
initAllocateInstanceInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected java.lang.Class<?>
initBuiltinClassLoaderClass(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected java.lang.Class<?>
initClassLoaderDelegateClass(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected java.lang.invoke.MethodHandle
initConstructorInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected ConsulterSupplyFunction<?>
initConsulterRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected GetDeclaredConstructorsFunction
initDeclaredConstructorsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected GetDeclaredFieldsFunction
initDeclaredFieldsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected GetDeclaredMethodsFunction
initDeclaredMethodsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected ThrowExceptionFunction
initExceptionThrower(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected GetFieldValueFunction
initFieldValueRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected SetFieldValueFunction
initFieldValueSetter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected DefineHookClassFunction
initHookClassDefiner(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected GetLoadedClassesFunction
initLoadedClassesRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected GetLoadedPackagesFunction
initLoadedPackagesRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected java.lang.invoke.MethodHandle
initMethodInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected GetPackageFunction
initPackageRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
<T> T
invoke(java.lang.reflect.Method method, java.lang.Object target, java.lang.Object[] params)
boolean
isBuiltinClassLoader(java.lang.ClassLoader classLoader)
boolean
isClassLoaderDelegate(java.lang.ClassLoader classLoader)
<T> T
newInstance(java.lang.reflect.Constructor<T> ctor, java.lang.Object[] params)
protected DeepConsulterSupplyFunction<?>
replaceConsulterWithDeepConsulter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
java.util.Collection<java.lang.Class<?>>
retrieveLoadedClasses(java.lang.ClassLoader classLoader)
java.util.Map<java.lang.String,?>
retrieveLoadedPackages(java.lang.ClassLoader classLoader)
void
setAccessible(java.lang.reflect.AccessibleObject object, boolean flag)
void
setFieldValue(java.lang.Object target, java.lang.reflect.Field field, java.lang.Object value)
<T> T
throwException(java.lang.Object exceptionOrMessage, java.lang.Object... placeHolderReplacements)
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
DefaultDriver
public DefaultDriver()
-
-
Method Details
-
initExceptionThrower
protected ThrowExceptionFunction initExceptionThrower(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initAllocateInstanceInvoker
protected AllocateInstanceFunction initAllocateInstanceInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initFieldValueRetriever
protected GetFieldValueFunction initFieldValueRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initFieldValueSetter
protected SetFieldValueFunction initFieldValueSetter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initHookClassDefiner
protected DefineHookClassFunction initHookClassDefiner(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initConsulterRetriever
protected ConsulterSupplyFunction<?> initConsulterRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initDeclaredFieldsRetriever
protected GetDeclaredFieldsFunction initDeclaredFieldsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initDeclaredMethodsRetriever
protected GetDeclaredMethodsFunction initDeclaredMethodsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initDeclaredConstructorsRetriever
protected GetDeclaredConstructorsFunction initDeclaredConstructorsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initAccessibleSetter
protected SetAccessibleFunction<?> initAccessibleSetter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initConstructorInvoker
protected java.lang.invoke.MethodHandle initConstructorInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initMethodInvoker
protected java.lang.invoke.MethodHandle initMethodInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initPackageRetriever
protected GetPackageFunction initPackageRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initBuiltinClassLoaderClass
protected java.lang.Class<?> initBuiltinClassLoaderClass(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initClassLoaderDelegateClass
protected java.lang.Class<?> initClassLoaderDelegateClass(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
replaceConsulterWithDeepConsulter
protected DeepConsulterSupplyFunction<?> replaceConsulterWithDeepConsulter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initLoadedClassesRetriever
protected GetLoadedClassesFunction initLoadedClassesRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initLoadedPackagesRetriever
protected GetLoadedPackagesFunction initLoadedPackagesRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
throwException
public <T> T throwException(java.lang.Object exceptionOrMessage, java.lang.Object... placeHolderReplacements)- Specified by:
throwException
in interfaceDriver
-
setAccessible
public void setAccessible(java.lang.reflect.AccessibleObject object, boolean flag)- Specified by:
setAccessible
in interfaceDriver
-
defineHookClass
public java.lang.Class<?> defineHookClass(java.lang.Class<?> clientClass, byte[] byteCode)- Specified by:
defineHookClass
in interfaceDriver
-
getPackage
public java.lang.Package getPackage(java.lang.ClassLoader classLoader, java.lang.String packageName)- Specified by:
getPackage
in interfaceDriver
-
retrieveLoadedClasses
public java.util.Collection<java.lang.Class<?>> retrieveLoadedClasses(java.lang.ClassLoader classLoader)- Specified by:
retrieveLoadedClasses
in interfaceDriver
-
retrieveLoadedPackages
public java.util.Map<java.lang.String,?> retrieveLoadedPackages(java.lang.ClassLoader classLoader)- Specified by:
retrieveLoadedPackages
in interfaceDriver
-
getFieldValue
public <T> T getFieldValue(java.lang.Object target, java.lang.reflect.Field field)- Specified by:
getFieldValue
in interfaceDriver
-
setFieldValue
public void setFieldValue(java.lang.Object target, java.lang.reflect.Field field, java.lang.Object value)- Specified by:
setFieldValue
in interfaceDriver
-
allocateInstance
public <T> T allocateInstance(java.lang.Class<?> cls)- Specified by:
allocateInstance
in interfaceDriver
-
isBuiltinClassLoader
public boolean isBuiltinClassLoader(java.lang.ClassLoader classLoader)- Specified by:
isBuiltinClassLoader
in interfaceDriver
-
isClassLoaderDelegate
public boolean isClassLoaderDelegate(java.lang.ClassLoader classLoader)- Specified by:
isClassLoaderDelegate
in interfaceDriver
-
getBuiltinClassLoaderClass
public java.lang.Class<?> getBuiltinClassLoaderClass()- Specified by:
getBuiltinClassLoaderClass
in interfaceDriver
-
getClassLoaderDelegateClass
public java.lang.Class<?> getClassLoaderDelegateClass()- Specified by:
getClassLoaderDelegateClass
in interfaceDriver
-
getConsulter
public java.lang.invoke.MethodHandles.Lookup getConsulter(java.lang.Class<?> cls)- Specified by:
getConsulter
in interfaceDriver
-
invoke
public <T> T invoke(java.lang.reflect.Method method, java.lang.Object target, java.lang.Object[] params) -
newInstance
public <T> T newInstance(java.lang.reflect.Constructor<T> ctor, java.lang.Object[] params)- Specified by:
newInstance
in interfaceDriver
-
getDeclaredFields
public java.lang.reflect.Field[] getDeclaredFields(java.lang.Class<?> cls)- Specified by:
getDeclaredFields
in interfaceDriver
-
getDeclaredConstructors
public <T> java.lang.reflect.Constructor<T>[] getDeclaredConstructors(java.lang.Class<T> cls)- Specified by:
getDeclaredConstructors
in interfaceDriver
-
getDeclaredMethods
public java.lang.reflect.Method[] getDeclaredMethods(java.lang.Class<?> cls)- Specified by:
getDeclaredMethods
in interfaceDriver
-
close
public void close()
-