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
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
-
Field Summary
Fields Modifier and Type Field Description protected BiConsumerAdapter<?,java.lang.reflect.AccessibleObject,java.lang.Boolean>
accessibleSetter
protected Function<java.lang.Class<?>,java.lang.Object>
allocateInstanceInvoker
protected java.lang.Class<?>
builtinClassLoaderClass
protected java.lang.Class<?>
classLoaderDelegateClass
protected java.lang.invoke.MethodHandle
constructorInvoker
protected FunctionAdapter<?,java.lang.Class<?>,java.lang.invoke.MethodHandles.Lookup>
consulterRetriever
protected java.lang.invoke.MethodHandle
declaredConstructorsRetriever
protected java.lang.invoke.MethodHandle
declaredFieldsRetriever
protected java.lang.invoke.MethodHandle
declaredMethodsRetriever
protected ThrowExceptionFunction
exceptionThrower
protected BiFunction<java.lang.Object,java.lang.reflect.Field,java.lang.Object>
fieldValueRetriever
protected TriConsumer<java.lang.Object,java.lang.reflect.Field,java.lang.Object>
fieldValueSetter
protected BiFunction<java.lang.Class<?>,byte[],java.lang.Class<?>>
hookClassDefiner
protected Function<java.lang.ClassLoader,java.util.Collection<java.lang.Class<?>>>
loadedClassesRetriever
protected Function<java.lang.ClassLoader,java.util.Map<java.lang.String,?>>
loadedPackagesRetriever
protected java.lang.invoke.MethodHandle
methodInvoker
protected BiFunction<java.lang.ClassLoader,java.lang.String,java.lang.Package>
packageRetriever
-
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 void
initAccessibleSetter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initAllocateInstanceInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initBuiltinClassLoaderClass(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initClassLoaderDelegateClass(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initConstructorInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initConsulterRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initDeclaredConstructorsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initDeclaredFieldsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initDeclaredMethodsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initExceptionThrower(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initFieldValueRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initFieldValueSetter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initHookClassDefiner(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initLoadedClassesRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initLoadedPackagesRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
initMethodInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext)
protected void
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 void
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
-
Field Details
-
exceptionThrower
-
allocateInstanceInvoker
-
fieldValueRetriever
protected BiFunction<java.lang.Object,java.lang.reflect.Field,java.lang.Object> fieldValueRetriever -
fieldValueSetter
-
hookClassDefiner
-
consulterRetriever
protected FunctionAdapter<?,java.lang.Class<?>,java.lang.invoke.MethodHandles.Lookup> consulterRetriever -
declaredFieldsRetriever
protected java.lang.invoke.MethodHandle declaredFieldsRetriever -
declaredMethodsRetriever
protected java.lang.invoke.MethodHandle declaredMethodsRetriever -
declaredConstructorsRetriever
protected java.lang.invoke.MethodHandle declaredConstructorsRetriever -
accessibleSetter
protected BiConsumerAdapter<?,java.lang.reflect.AccessibleObject,java.lang.Boolean> accessibleSetter -
constructorInvoker
protected java.lang.invoke.MethodHandle constructorInvoker -
packageRetriever
-
methodInvoker
protected java.lang.invoke.MethodHandle methodInvoker -
builtinClassLoaderClass
protected java.lang.Class<?> builtinClassLoaderClass -
classLoaderDelegateClass
protected java.lang.Class<?> classLoaderDelegateClass -
loadedClassesRetriever
protected Function<java.lang.ClassLoader,java.util.Collection<java.lang.Class<?>>> loadedClassesRetriever -
loadedPackagesRetriever
protected Function<java.lang.ClassLoader,java.util.Map<java.lang.String,?>> loadedPackagesRetriever
-
-
Constructor Details
-
DefaultDriver
public DefaultDriver()
-
-
Method Details
-
initExceptionThrower
protected void initExceptionThrower(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initLoadedPackagesRetriever
protected void initLoadedPackagesRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initLoadedClassesRetriever
protected void initLoadedClassesRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
replaceConsulterWithDeepConsulter
protected void replaceConsulterWithDeepConsulter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initClassLoaderDelegateClass
protected void initClassLoaderDelegateClass(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initBuiltinClassLoaderClass
protected void initBuiltinClassLoaderClass(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initPackageRetriever
protected void initPackageRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initFieldValueSetter
protected void initFieldValueSetter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initFieldValueRetriever
protected void initFieldValueRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initAllocateInstanceInvoker
protected void initAllocateInstanceInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initMethodInvoker
protected void initMethodInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initConstructorInvoker
protected void initConstructorInvoker(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initAccessibleSetter
protected void initAccessibleSetter(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initDeclaredConstructorsRetriever
protected void initDeclaredConstructorsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initDeclaredMethodsRetriever
protected void initDeclaredMethodsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initDeclaredFieldsRetriever
protected void initDeclaredFieldsRetriever(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initHookClassDefiner
protected void initHookClassDefiner(ObjectProvider functionProvider, java.util.Map<java.lang.Object,java.lang.Object> initializationContext) -
initConsulterRetriever
protected void initConsulterRetriever(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()
-