[jboss-cvs] JBossAS SVN: r97420 - branches/JBPAPP_5_0_JBPAPP-2742/tomcat/src/main/org/jboss/web/tomcat/service/deployers.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Dec 3 12:09:43 EST 2009
Author: scott.stark at jboss.org
Date: 2009-12-03 12:09:43 -0500 (Thu, 03 Dec 2009)
New Revision: 97420
Modified:
branches/JBPAPP_5_0_JBPAPP-2742/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java
branches/JBPAPP_5_0_JBPAPP-2742/tomcat/src/main/org/jboss/web/tomcat/service/deployers/SecurityActions.java
Log:
JBPAPP-2742, wrap the tcl manipulation is a privileged block
Modified: branches/JBPAPP_5_0_JBPAPP-2742/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java
===================================================================
--- branches/JBPAPP_5_0_JBPAPP-2742/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java 2009-12-03 17:06:50 UTC (rev 97419)
+++ branches/JBPAPP_5_0_JBPAPP-2742/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java 2009-12-03 17:09:43 UTC (rev 97420)
@@ -542,8 +542,8 @@
protected void processContextConfig(String resourceName, boolean local)
{
- ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ ClassLoader oldCl = SecurityActions.getContextClassLoader();
+ SecurityActions.setContextClassLoader(this.getClass().getClassLoader());
ContextMetaData contextMetaData = null;
try
@@ -598,7 +598,7 @@
}
finally
{
- Thread.currentThread().setContextClassLoader(oldCl);
+ SecurityActions.setContextClassLoader(oldCl);
}
if (contextMetaData != null)
Modified: branches/JBPAPP_5_0_JBPAPP-2742/tomcat/src/main/org/jboss/web/tomcat/service/deployers/SecurityActions.java
===================================================================
--- branches/JBPAPP_5_0_JBPAPP-2742/tomcat/src/main/org/jboss/web/tomcat/service/deployers/SecurityActions.java 2009-12-03 17:06:50 UTC (rev 97419)
+++ branches/JBPAPP_5_0_JBPAPP-2742/tomcat/src/main/org/jboss/web/tomcat/service/deployers/SecurityActions.java 2009-12-03 17:09:43 UTC (rev 97420)
@@ -33,6 +33,123 @@
*/
class SecurityActions
{
+ interface TCLAction
+ {
+ class UTIL
+ {
+ static TCLAction getTCLAction()
+ {
+ return System.getSecurityManager() == null ? NON_PRIVILEGED : PRIVILEGED;
+ }
+
+ static ClassLoader getContextClassLoader()
+ {
+ return getTCLAction().getContextClassLoader();
+ }
+
+ static ClassLoader getContextClassLoader(Thread thread)
+ {
+ return getTCLAction().getContextClassLoader(thread);
+ }
+
+ static void setContextClassLoader(ClassLoader cl)
+ {
+ getTCLAction().setContextClassLoader(cl);
+ }
+
+ static void setContextClassLoader(Thread thread, ClassLoader cl)
+ {
+ getTCLAction().setContextClassLoader(thread, cl);
+ }
+ }
+
+ TCLAction NON_PRIVILEGED = new TCLAction()
+ {
+ public ClassLoader getContextClassLoader()
+ {
+ return Thread.currentThread().getContextClassLoader();
+ }
+
+ public ClassLoader getContextClassLoader(Thread thread)
+ {
+ return thread.getContextClassLoader();
+ }
+
+ public void setContextClassLoader(ClassLoader cl)
+ {
+ Thread.currentThread().setContextClassLoader(cl);
+ }
+
+ public void setContextClassLoader(Thread thread, ClassLoader cl)
+ {
+ thread.setContextClassLoader(cl);
+ }
+ };
+
+ TCLAction PRIVILEGED = new TCLAction()
+ {
+ private final PrivilegedAction getTCLPrivilegedAction = new PrivilegedAction()
+ {
+ public Object run()
+ {
+ return Thread.currentThread().getContextClassLoader();
+ }
+ };
+
+ public ClassLoader getContextClassLoader()
+ {
+ return (ClassLoader)AccessController.doPrivileged(getTCLPrivilegedAction);
+ }
+
+ public ClassLoader getContextClassLoader(final Thread thread)
+ {
+ return (ClassLoader)AccessController.doPrivileged(new PrivilegedAction()
+ {
+ public Object run()
+ {
+ return thread.getContextClassLoader();
+ }
+ });
+ }
+
+ public void setContextClassLoader(final ClassLoader cl)
+ {
+ AccessController.doPrivileged(
+ new PrivilegedAction()
+ {
+ public Object run()
+ {
+ Thread.currentThread().setContextClassLoader(cl);
+ return null;
+ }
+ }
+ );
+ }
+
+ public void setContextClassLoader(final Thread thread, final ClassLoader cl)
+ {
+ AccessController.doPrivileged(
+ new PrivilegedAction()
+ {
+ public Object run()
+ {
+ thread.setContextClassLoader(cl);
+ return null;
+ }
+ }
+ );
+ }
+ };
+
+ ClassLoader getContextClassLoader();
+
+ ClassLoader getContextClassLoader(Thread thread);
+
+ void setContextClassLoader(ClassLoader cl);
+
+ void setContextClassLoader(Thread thread, ClassLoader cl);
+ }
+
static String getSystemProperty(final String key, final String defaultValue)
{
return AccessController.doPrivileged(new PrivilegedAction<String>()
@@ -67,4 +184,13 @@
} );
}
-}
\ No newline at end of file
+ static ClassLoader getContextClassLoader()
+ {
+ return TCLAction.UTIL.getContextClassLoader();
+ }
+
+ static void setContextClassLoader(ClassLoader loader)
+ {
+ TCLAction.UTIL.setContextClassLoader(loader);
+ }
+}
More information about the jboss-cvs-commits
mailing list