Class DriverAbst

  • All Implemented Interfaces:
    Driver, java.io.Closeable, java.lang.AutoCloseable
    Direct Known Subclasses:
    DefaultDriver

    public abstract class DriverAbst
    extends java.lang.Object
    implements Driver
    • Field Detail

      • allocateInstanceInvoker

        protected ThrowingFunction<java.lang.Class<?>,​java.lang.Object,​java.lang.Throwable> allocateInstanceInvoker
      • fieldValueRetriever

        protected BiFunction<java.lang.Object,​java.lang.reflect.Field,​java.lang.Object> fieldValueRetriever
      • fieldValueSetter

        protected TriConsumer<java.lang.Object,​java.lang.reflect.Field,​java.lang.Object> fieldValueSetter
      • hookClassDefiner

        protected ThrowingBiFunction<java.lang.Class<?>,​byte[],​java.lang.Class<?>,​java.lang.Throwable> hookClassDefiner
      • consulterRetriever

        protected ThrowingFunction<java.lang.Class<?>,​java.lang.invoke.MethodHandles.Lookup,​java.lang.Throwable> consulterRetriever
      • declaredFieldsRetriever

        protected ThrowingFunction<java.lang.Class<?>,​java.lang.reflect.Field[],​java.lang.Throwable> declaredFieldsRetriever
      • declaredMethodsRetriever

        protected ThrowingFunction<java.lang.Class<?>,​java.lang.reflect.Method[],​java.lang.Throwable> declaredMethodsRetriever
      • declaredConstructorsRetriever

        protected ThrowingFunction<java.lang.Class<?>,​java.lang.reflect.Constructor<?>[],​java.lang.Throwable> declaredConstructorsRetriever
      • accessibleSetter

        protected ThrowingBiConsumer<java.lang.reflect.AccessibleObject,​java.lang.Boolean,​java.lang.Throwable> accessibleSetter
      • constructorInvoker

        protected ThrowingBiFunction<java.lang.reflect.Constructor<?>,​java.lang.Object[],​java.lang.Object,​java.lang.Throwable> constructorInvoker
      • packageRetriever

        protected ThrowingBiFunction<java.lang.ClassLoader,​java.lang.String,​java.lang.Package,​java.lang.Throwable> packageRetriever
      • methodInvoker

        protected ThrowingTriFunction<java.lang.reflect.Method,​java.lang.Object,​java.lang.Object[],​java.lang.Object,​java.lang.Throwable> methodInvoker
      • classByNameRetriever

        protected ThrowingQuadFunction<java.lang.String,​java.lang.Boolean,​java.lang.ClassLoader,​java.lang.Class<?>,​java.lang.Class<?>,​java.lang.Throwable> classByNameRetriever
      • builtinClassLoaderClassSupplier

        protected Supplier<java.lang.Class<?>> builtinClassLoaderClassSupplier
      • classLoaderDelegateClassSupplier

        protected Supplier<java.lang.Class<?>> classLoaderDelegateClassSupplier
      • loadedClassesRetrieverSupplier

        protected Function<java.lang.ClassLoader,​CleanableSupplier<java.util.Collection<java.lang.Class<?>>>> loadedClassesRetrieverSupplier
      • loadedPackagesRetriever

        protected Function<java.lang.ClassLoader,​java.util.Map<java.lang.String,​?>> loadedPackagesRetriever
      • classLoaderToBuiltinClassLoaderConverter

        protected ThrowingFunction<java.lang.ClassLoader,​java.lang.ClassLoader,​java.lang.Throwable> classLoaderToBuiltinClassLoaderConverter
      • threadStopper

        protected ThrowingBiConsumer<java.lang.Thread,​java.lang.Throwable,​java.lang.Throwable> threadStopper
    • Constructor Detail

      • DriverAbst

        public DriverAbst()
    • Method Detail

      • init

        public <D extends Driver> D init()
        Specified by:
        init in interface Driver
      • refresh

        protected <D extends Driver> D refresh​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • functionsToMap

        protected java.util.Map<java.lang.Object,​java.lang.Object> functionsToMap()
      • putNewObjectProviderIfAbsent

        protected ObjectProvider putNewObjectProviderIfAbsent​(java.util.Map<java.lang.Object,​java.lang.Object> context)
      • getThrowExceptionFunctionClass

        protected abstract java.lang.Class<? extends ThrowExceptionFunction> getThrowExceptionFunctionClass()
      • getAllocateInstanceFunctionClass

        protected abstract java.lang.Class<? extends AllocateInstanceFunction> getAllocateInstanceFunctionClass()
      • getGetFieldValueFunctionClass

        protected abstract java.lang.Class<? extends GetFieldValueFunction> getGetFieldValueFunctionClass()
      • getSetFieldValueFunctionClass

        protected abstract java.lang.Class<? extends SetFieldValueFunction> getSetFieldValueFunctionClass()
      • getDefineHookClassFunctionClass

        protected abstract java.lang.Class<? extends DefineHookClassFunction> getDefineHookClassFunctionClass()
      • getConsulterSupplyFunctionClass

        protected abstract java.lang.Class<? extends ConsulterSupplyFunction> getConsulterSupplyFunctionClass()
      • getGetDeclaredFieldsFunctionClass

        protected abstract java.lang.Class<? extends GetDeclaredFieldsFunction> getGetDeclaredFieldsFunctionClass()
      • getGetDeclaredMethodsFunctionClass

        protected abstract java.lang.Class<? extends GetDeclaredMethodsFunction> getGetDeclaredMethodsFunctionClass()
      • getGetDeclaredConstructorsFunctionClass

        protected abstract java.lang.Class<? extends GetDeclaredConstructorsFunction> getGetDeclaredConstructorsFunctionClass()
      • getSetAccessibleFunctionClass

        protected abstract java.lang.Class<? extends SetAccessibleFunction> getSetAccessibleFunctionClass()
      • getConstructorInvokeFunctionClass

        protected abstract java.lang.Class<? extends ConstructorInvokeFunction> getConstructorInvokeFunctionClass()
      • getMethodInvokeFunctionClass

        protected abstract java.lang.Class<? extends MethodInvokeFunction> getMethodInvokeFunctionClass()
      • getGetPackageFunctionClass

        protected abstract java.lang.Class<? extends GetPackageFunction> getGetPackageFunctionClass()
      • getGetClassByNameFunctionClass

        protected abstract java.lang.Class<? extends GetClassByNameFunction> getGetClassByNameFunctionClass()
      • getGetResourcesFunctionClass

        protected abstract java.lang.Class<? extends GetResourcesFunction> getGetResourcesFunctionClass()
      • getBuiltinClassLoaderClassSupplierClass

        protected abstract java.lang.Class<? extends BuiltinClassLoaderClassSupplier> getBuiltinClassLoaderClassSupplierClass()
      • getClassLoaderDelegateClassSupplierClass

        protected abstract java.lang.Class<? extends ClassLoaderDelegateClassSupplier> getClassLoaderDelegateClassSupplierClass()
      • getDeepConsulterSupplyFunctionClass

        protected abstract java.lang.Class<? extends DeepConsulterSupplyFunction> getDeepConsulterSupplyFunctionClass()
      • getGetLoadedClassesRetrieverFunctionClass

        protected abstract java.lang.Class<? extends GetLoadedClassesRetrieverFunction> getGetLoadedClassesRetrieverFunctionClass()
      • getGetLoadedPackagesFunctionClass

        protected abstract java.lang.Class<? extends GetLoadedPackagesFunction> getGetLoadedPackagesFunctionClass()
      • getConvertToBuiltinClassLoaderFunctionClass

        protected abstract java.lang.Class<? extends ConvertToBuiltinClassLoaderFunction> getConvertToBuiltinClassLoaderFunctionClass()
      • getStopThreadFunctionClass

        protected abstract java.lang.Class<? extends StopThreadFunction> getStopThreadFunctionClass()
      • getOrBuildExceptionThrower

        protected ThrowExceptionFunction getOrBuildExceptionThrower​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildAllocateInstanceInvoker

        protected AllocateInstanceFunction getOrBuildAllocateInstanceInvoker​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildFieldValueRetriever

        protected GetFieldValueFunction getOrBuildFieldValueRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildFieldValueSetter

        protected SetFieldValueFunction getOrBuildFieldValueSetter​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildHookClassDefiner

        protected DefineHookClassFunction getOrBuildHookClassDefiner​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildConsulterRetriever

        protected ConsulterSupplyFunction getOrBuildConsulterRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildDeclaredFieldsRetriever

        protected GetDeclaredFieldsFunction getOrBuildDeclaredFieldsRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildDeclaredMethodsRetriever

        protected GetDeclaredMethodsFunction getOrBuildDeclaredMethodsRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildDeclaredConstructorsRetriever

        protected GetDeclaredConstructorsFunction getOrBuildDeclaredConstructorsRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildAccessibleSetter

        protected SetAccessibleFunction getOrBuildAccessibleSetter​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildConstructorInvoker

        protected ConstructorInvokeFunction getOrBuildConstructorInvoker​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildMethodInvoker

        protected MethodInvokeFunction getOrBuildMethodInvoker​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildPackageRetriever

        protected GetPackageFunction getOrBuildPackageRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildClassByNameRetriever

        protected GetClassByNameFunction getOrBuildClassByNameRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildResourcesRetriever

        protected GetResourcesFunction getOrBuildResourcesRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildBuiltinClassLoaderClassSupplier

        protected BuiltinClassLoaderClassSupplier getOrBuildBuiltinClassLoaderClassSupplier​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildClassLoaderDelegateClassSupplier

        protected ClassLoaderDelegateClassSupplier getOrBuildClassLoaderDelegateClassSupplier​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildDeepConsulterRetriever

        protected DeepConsulterSupplyFunction getOrBuildDeepConsulterRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildLoadedClassesRetrieverFunction

        protected GetLoadedClassesRetrieverFunction getOrBuildLoadedClassesRetrieverFunction​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildLoadedPackagesRetriever

        protected GetLoadedPackagesFunction getOrBuildLoadedPackagesRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildClassLoaderToBuiltinClassLoaderConverter

        protected ConvertToBuiltinClassLoaderFunction getOrBuildClassLoaderToBuiltinClassLoaderConverter​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getOrBuildThreadStopper

        protected StopThreadFunction getOrBuildThreadStopper​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getExceptionThrower

        protected ThrowExceptionFunction getExceptionThrower​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getAllocateInstanceInvoker

        protected AllocateInstanceFunction getAllocateInstanceInvoker​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getFieldValueRetriever

        protected GetFieldValueFunction getFieldValueRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getFieldValueSetter

        protected SetFieldValueFunction getFieldValueSetter​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getHookClassDefiner

        protected DefineHookClassFunction getHookClassDefiner​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getConsulterRetriever

        protected ConsulterSupplyFunction getConsulterRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getDeclaredFieldsRetriever

        protected GetDeclaredFieldsFunction getDeclaredFieldsRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getDeclaredMethodsRetriever

        protected GetDeclaredMethodsFunction getDeclaredMethodsRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getDeclaredConstructorsRetriever

        protected GetDeclaredConstructorsFunction getDeclaredConstructorsRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getAccessibleSetter

        protected SetAccessibleFunction getAccessibleSetter​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getConstructorInvoker

        protected ConstructorInvokeFunction getConstructorInvoker​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getMethodInvoker

        protected MethodInvokeFunction getMethodInvoker​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getPackageRetriever

        protected GetPackageFunction getPackageRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getClassByNameRetriever

        protected GetClassByNameFunction getClassByNameRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getResourcesRetriever

        protected GetResourcesFunction getResourcesRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getBuiltinClassLoaderClassSupplier

        protected BuiltinClassLoaderClassSupplier getBuiltinClassLoaderClassSupplier​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getClassLoaderDelegateClassSupplier

        protected ClassLoaderDelegateClassSupplier getClassLoaderDelegateClassSupplier​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getDeepConsulterRetriever

        protected DeepConsulterSupplyFunction getDeepConsulterRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getLoadedClassesRetrieverFunction

        protected GetLoadedClassesRetrieverFunction getLoadedClassesRetrieverFunction​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getLoadedPackagesRetriever

        protected GetLoadedPackagesFunction getLoadedPackagesRetriever​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getClassLoaderToBuiltinClassLoaderConverter

        protected ConvertToBuiltinClassLoaderFunction getClassLoaderToBuiltinClassLoaderConverter​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • getThreadStopper

        protected StopThreadFunction getThreadStopper​(java.util.Map<java.lang.Object,​java.lang.Object> initializationContext)
      • putIfNotNull

        protected void putIfNotNull​(java.util.Map<java.lang.Object,​java.lang.Object> map,
                                    java.lang.Class<?> cls,
                                    java.lang.Object object)
      • throwException

        public <T> T throwException​(java.lang.Throwable exception)
        Specified by:
        throwException in interface Driver
      • throwException

        public <T> T throwException​(java.lang.String message,
                                    java.lang.Object... placeHolderReplacements)
        Specified by:
        throwException in interface Driver
      • setAccessible

        public void setAccessible​(java.lang.reflect.AccessibleObject object,
                                  boolean flag)
        Specified by:
        setAccessible in interface Driver
      • defineHookClass

        public java.lang.Class<?> defineHookClass​(java.lang.Class<?> clientClass,
                                                  byte[] byteCode)
        Specified by:
        defineHookClass in interface Driver
      • getPackage

        public java.lang.Package getPackage​(java.lang.ClassLoader classLoader,
                                            java.lang.String packageName)
        Specified by:
        getPackage in interface Driver
      • retrieveLoadedPackages

        public java.util.Map<java.lang.String,​?> retrieveLoadedPackages​(java.lang.ClassLoader classLoader)
        Specified by:
        retrieveLoadedPackages in interface Driver
      • getFieldValue

        public <T> T getFieldValue​(java.lang.Object target,
                                   java.lang.reflect.Field field)
        Specified by:
        getFieldValue in interface Driver
      • setFieldValue

        public void setFieldValue​(java.lang.Object target,
                                  java.lang.reflect.Field field,
                                  java.lang.Object value)
        Specified by:
        setFieldValue in interface Driver
      • allocateInstance

        public <T> T allocateInstance​(java.lang.Class<?> cls)
        Specified by:
        allocateInstance in interface Driver
      • getClassByName

        public java.lang.Class<?> getClassByName​(java.lang.String className,
                                                 java.lang.Boolean initialize,
                                                 java.lang.ClassLoader classLoader,
                                                 java.lang.Class<?> caller)
        Specified by:
        getClassByName in interface Driver
      • getResources

        public java.util.Collection<java.net.URL> getResources​(java.lang.String resourceRelativePath,
                                                               boolean findFirst,
                                                               java.lang.ClassLoader... classLoaders)
        Specified by:
        getResources in interface Driver
      • getResources

        public java.util.Collection<java.net.URL> getResources​(java.lang.String resourceRelativePath,
                                                               boolean findFirst,
                                                               java.util.Collection<java.lang.ClassLoader> classLoaders)
        Specified by:
        getResources in interface Driver
      • isBuiltinClassLoader

        public boolean isBuiltinClassLoader​(java.lang.ClassLoader classLoader)
        Specified by:
        isBuiltinClassLoader in interface Driver
      • isClassLoaderDelegate

        public boolean isClassLoaderDelegate​(java.lang.ClassLoader classLoader)
        Specified by:
        isClassLoaderDelegate in interface Driver
      • getConsulter

        public java.lang.invoke.MethodHandles.Lookup getConsulter​(java.lang.Class<?> cls)
        Specified by:
        getConsulter in interface Driver
      • invoke

        public <T> T invoke​(java.lang.Object target,
                            java.lang.reflect.Method method,
                            java.lang.Object[] params)
        Specified by:
        invoke in interface Driver
      • newInstance

        public <T> T newInstance​(java.lang.reflect.Constructor<T> ctor,
                                 java.lang.Object[] params)
        Specified by:
        newInstance in interface Driver
      • getDeclaredFields

        public java.lang.reflect.Field[] getDeclaredFields​(java.lang.Class<?> cls)
        Specified by:
        getDeclaredFields in interface Driver
      • getDeclaredConstructors

        public <T> java.lang.reflect.Constructor<T>[] getDeclaredConstructors​(java.lang.Class<T> cls)
        Specified by:
        getDeclaredConstructors in interface Driver
      • getDeclaredMethods

        public java.lang.reflect.Method[] getDeclaredMethods​(java.lang.Class<?> cls)
        Specified by:
        getDeclaredMethods in interface Driver
      • stop

        @Deprecated(since="9.4.0")
        public void stop​(java.lang.Thread thread)
        Deprecated.
        Specified by:
        stop in interface Driver
      • convertToBuiltinClassLoader

        public java.lang.ClassLoader convertToBuiltinClassLoader​(java.lang.ClassLoader classLoader)
        Specified by:
        convertToBuiltinClassLoader in interface Driver
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface Driver