org.jboss.util.loading
Class ContextClassLoaderSwitcher

java.lang.Object
  extended byorg.jboss.util.loading.ContextClassLoader (src) 
      extended byorg.jboss.util.loading.ContextClassLoaderSwitcher

public class ContextClassLoaderSwitcher
extends ContextClassLoader (src)

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.


Nested Class Summary
 class ContextClassLoaderSwitcher.SwitchContext (src)
          A helper class to remember the original classloader and avoid continually retrieveing the current thread.
 
Field Summary
static org.jboss.util.loading.ContextClassLoaderSwitcher.NewInstance INSTANTIATOR
          Instantiate a new context class loader switcher
static java.lang.RuntimePermission SETCONTEXTCLASSLOADER
          Set the context classloader permission
 
Fields inherited from class org.jboss.util.loading.ContextClassLoader (src)
GETCLASSLOADER
 
Method Summary
 ContextClassLoaderSwitcher.SwitchContext (src) getSwitchContext()
          Retrieve a switch context
 ContextClassLoaderSwitcher.SwitchContext (src) 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()
 ContextClassLoaderSwitcher.SwitchContext (src) getSwitchContext(java.lang.ClassLoader cl)
          Retrieve a switch context and set the new context classloader
 void setContextClassLoader(java.lang.ClassLoader cl)
          Set the context classloader
 void setContextClassLoader(java.lang.Thread thread, java.lang.ClassLoader cl)
          Set the context classloader for the given thread
 
Methods inherited from class org.jboss.util.loading.ContextClassLoader (src)
getContextClassLoader, getContextClassLoader
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SETCONTEXTCLASSLOADER

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


INSTANTIATOR

public static final org.jboss.util.loading.ContextClassLoaderSwitcher.NewInstance INSTANTIATOR
Instantiate a new context class loader switcher

Method Detail

setContextClassLoader

public void setContextClassLoader(java.lang.ClassLoader cl)
Set the context classloader


setContextClassLoader

public void setContextClassLoader(java.lang.Thread thread,
                                  java.lang.ClassLoader cl)
Set the context classloader for the given thread

Parameters:
thread - the thread

getSwitchContext

public ContextClassLoaderSwitcher.SwitchContext (src)  getSwitchContext()
Retrieve a switch context

Returns:
the switch context

getSwitchContext

public ContextClassLoaderSwitcher.SwitchContext (src)  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 (src)  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