Class ContextClassLoaderSwitcher


  • public class ContextClassLoaderSwitcher
    extends ContextClassLoader
    A helper for context classloading switching.

    When a security manager is installed, the constructor checks for the runtime permissions "getClassLoader" and "setContextClassLoader". This allows the methods of this class to be used later without having to run in privileged blocks. There are optimized methods to perform the operations within a switch context. This avoids retrieving the current thread on every operation.

    Version:
    $Revision$
    • Field Detail

      • SETCONTEXTCLASSLOADER

        public static final java.lang.RuntimePermission SETCONTEXTCLASSLOADER
        Set the context classloader permission
    • Constructor Detail

      • ContextClassLoaderSwitcher

        private ContextClassLoaderSwitcher()
        Constructor.
        Throws:
        java.lang.SecurityException - when not authroized to get/set the context classloader
    • Method Detail

      • setContextClassLoader

        public void setContextClassLoader​(java.lang.ClassLoader cl)
        Set the context classloader
        Parameters:
        cl -
      • setContextClassLoader

        public void setContextClassLoader​(java.lang.Thread thread,
                                          java.lang.ClassLoader cl)
        Set the context classloader for the given thread
        Parameters:
        thread - the thread
        cl - the new context classloader
      • getSwitchContext

        public ContextClassLoaderSwitcher.SwitchContext getSwitchContext​(java.lang.ClassLoader cl)
        Retrieve a switch context and set the new context classloader
        Parameters:
        cl - the new classloader
        Returns:
        the switch context
      • getSwitchContext

        public ContextClassLoaderSwitcher.SwitchContext getSwitchContext​(java.lang.Class clazz)
        Deprecated.
        using a class to determine the classloader is a bad idea, it has the same problems as Class.forName()
        Retrieve a switch context for the classloader of a given class
        Parameters:
        clazz - the class whose classloader should be set as the context classloader
        Returns:
        the switch context