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
  • Field Details

    • exceptionThrower

      protected ThrowExceptionFunction exceptionThrower
    • allocateInstanceInvoker

      protected Function<java.lang.Class<?>,​java.lang.Object> 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 BiFunction<java.lang.Class<?>,​byte[],​java.lang.Class<?>> 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

      protected BiFunction<java.lang.ClassLoader,​java.lang.String,​java.lang.Package> 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 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
    • retrieveLoadedClasses

      public java.util.Collection<java.lang.Class<?>> retrieveLoadedClasses​(java.lang.ClassLoader classLoader)
      Specified by:
      retrieveLoadedClasses 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
    • 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.reflect.Method method, java.lang.Object target, 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