[jboss-cvs] JBossAS SVN: r97672 - branches/JBPAPP_5_0_0_GA_JBPAPP-3236/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 10 01:34:17 EST 2009
Author: vicky.kak at jboss.com
Date: 2009-12-10 01:34:16 -0500 (Thu, 10 Dec 2009)
New Revision: 97672
Modified:
branches/JBPAPP_5_0_0_GA_JBPAPP-3236/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java
branches/JBPAPP_5_0_0_GA_JBPAPP-3236/tomcat/src/main/org/jboss/web/tomcat/service/deployers/SecurityActions.java
Log:
JBPAPP-3236 changes
Modified: branches/JBPAPP_5_0_0_GA_JBPAPP-3236/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java
===================================================================
--- branches/JBPAPP_5_0_0_GA_JBPAPP-3236/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java 2009-12-10 06:28:07 UTC (rev 97671)
+++ branches/JBPAPP_5_0_0_GA_JBPAPP-3236/tomcat/src/main/org/jboss/web/tomcat/service/deployers/JBossContextConfig.java 2009-12-10 06:34:16 UTC (rev 97672)
@@ -542,6 +542,9 @@
protected void processContextConfig(String resourceName, boolean local)
{
+ ClassLoader oldCl = SecurityActions.getContextClassLoader();
+ SecurityActions.setContextClassLoader(this.getClass().getClassLoader());
+
ContextMetaData contextMetaData = null;
try
{
@@ -593,6 +596,10 @@
ok = false;
return;
}
+ finally
+ {
+ SecurityActions.setContextClassLoader(oldCl);
+ }
if (contextMetaData != null)
{
Modified: branches/JBPAPP_5_0_0_GA_JBPAPP-3236/tomcat/src/main/org/jboss/web/tomcat/service/deployers/SecurityActions.java
===================================================================
--- branches/JBPAPP_5_0_0_GA_JBPAPP-3236/tomcat/src/main/org/jboss/web/tomcat/service/deployers/SecurityActions.java 2009-12-10 06:28:07 UTC (rev 97671)
+++ branches/JBPAPP_5_0_0_GA_JBPAPP-3236/tomcat/src/main/org/jboss/web/tomcat/service/deployers/SecurityActions.java 2009-12-10 06:34:16 UTC (rev 97672)
@@ -33,6 +33,125 @@
*/
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 +186,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