Class ClassInjector.UsingReflection

    • Field Detail

      • classLoader

        private final java.lang.ClassLoader classLoader
        The class loader into which the classes are to be injected.
      • protectionDomain

        @ValueHandling(REVERSE_NULLABILITY)
        private final java.security.ProtectionDomain protectionDomain
        The protection domain that is used when loading classes.
      • packageDefinitionStrategy

        private final PackageDefinitionStrategy packageDefinitionStrategy
        The package definer to be queried for package definitions.
      • forbidExisting

        private final boolean forbidExisting
        Determines if an exception should be thrown when attempting to load a type that already exists.
    • Constructor Detail

      • UsingReflection

        public UsingReflection​(java.lang.ClassLoader classLoader)
        Creates a new injector for the given ClassLoader and a default ProtectionDomain and a trivial PackageDefinitionStrategy which does not trigger an error when discovering existent classes.
        Parameters:
        classLoader - The ClassLoader into which new class definitions are to be injected. Must not be the bootstrap loader.
      • UsingReflection

        public UsingReflection​(java.lang.ClassLoader classLoader,
                               java.security.ProtectionDomain protectionDomain)
        Creates a new injector for the given ClassLoader and a default PackageDefinitionStrategy where the injection of existent classes does not trigger an error.
        Parameters:
        classLoader - The ClassLoader into which new class definitions are to be injected. Must not be the bootstrap loader.
        protectionDomain - The protection domain to apply during class definition.
      • UsingReflection

        public UsingReflection​(java.lang.ClassLoader classLoader,
                               java.security.ProtectionDomain protectionDomain,
                               PackageDefinitionStrategy packageDefinitionStrategy,
                               boolean forbidExisting)
        Creates a new injector for the given ClassLoader and ProtectionDomain.
        Parameters:
        classLoader - The ClassLoader into which new class definitions are to be injected.Must not be the bootstrap loader.
        protectionDomain - The protection domain to apply during class definition.
        packageDefinitionStrategy - The package definer to be queried for package definitions.
        forbidExisting - Determines if an exception should be thrown when attempting to load a type that already exists.
    • Method Detail

      • isAlive

        public boolean isAlive()
        Indicates if this class injector is available on the current VM.
        Returns:
        true if this injector is available on the current VM.
      • injectRaw

        public java.util.Map<java.lang.String,​java.lang.Class<?>> injectRaw​(java.util.Map<? extends java.lang.String,​byte[]> types)
        Injects the given types into the represented class loader using a mapping from name to binary representation.
        Parameters:
        types - The types to load via injection.
        Returns:
        The loaded types that were passed as arguments.
      • isAvailable

        public static boolean isAvailable()
        Indicates if this class injection is available on the current VM.
        Returns:
        true if this class injection is available.
      • ofSystemClassLoader

        public static ClassInjector ofSystemClassLoader()
        Creates a class injector for the system class loader.
        Returns:
        A class injector for the system class loader.