Class DriverAbst

java.lang.Object
io.github.toolfactory.jvm.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
  • Constructor Details

    • DriverAbst

      public DriverAbst()
  • Method Details

    • init

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

      protected java.util.Map<java.lang.Object,​java.lang.Object> functionsToMap()
    • 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()
    • 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)
    • 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)
    • 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.Object exceptionOrMessage, 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
    • getLoadedClassesRetriever

      public CleanableSupplier<java.util.Collection<java.lang.Class<?>>> getLoadedClassesRetriever​(java.lang.ClassLoader classLoader)
      Specified by:
      getLoadedClassesRetriever 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
    • getBuiltinClassLoaderClass

      public java.lang.Class<?> getBuiltinClassLoaderClass()
      Specified by:
      getBuiltinClassLoaderClass in interface Driver
    • getClassLoaderDelegateClass

      public java.lang.Class<?> getClassLoaderDelegateClass()
      Specified by:
      getClassLoaderDelegateClass 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
    • 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