ContextClassLoader.java |
/*************************************** * * * JBoss: The OpenSource J2EE WebOS * * * * Distributable under LGPL license. * * See terms of license at gnu.org. * * * ***************************************/ package org.jboss.util.loading; import java.security.AccessController; import java.security.PrivilegedAction; /** * A helper for context classloading.<p> * * When a security manager is installed, the * constructor checks for the runtime permissions * "getClassLoader" * * @version <tt>$Revision: 1.3 $</tt> * @author <a href="mailto:adrian@jboss.org">Adrian Brock</a> */ public class ContextClassLoader { /** * Retrieve a classloader permission */ public static final RuntimePermission GETCLASSLOADER = new RuntimePermission("getClassLoader"); /** * Instantiate a new context class loader */ public static final NewInstance INSTANTIATOR = new NewInstance(); /** * Constructor. * * @throws SecurityException when not authroized to get the context classloader */ /*package*/ ContextClassLoader() { SecurityManager manager = System.getSecurityManager(); if (manager != null) { manager.checkPermission(GETCLASSLOADER); } } /** * Retrieve the context classloader * * @return the context classloader */ public ClassLoader getContextClassLoader() { return getContextClassLoader(Thread.currentThread()); } /** * Retrieve the context classloader for the given thread * * @param thread the thread * @return the context classloader */ public ClassLoader getContextClassLoader(final Thread thread) { return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return thread.getContextClassLoader(); } }); } private static class NewInstance implements PrivilegedAction { public Object run() { return new ContextClassLoader(); } } }
ContextClassLoader.java |