[jboss-cvs] JBoss Messaging SVN: r3504 - branches/Branch_Stable/src/main/org/jboss/messaging/util.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Dec 14 12:55:14 EST 2007


Author: clebert.suconic at jboss.com
Date: 2007-12-14 12:55:14 -0500 (Fri, 14 Dec 2007)
New Revision: 3504

Modified:
   branches/Branch_Stable/src/main/org/jboss/messaging/util/JBMExecutor.java
Log:
Adding Security Blocks on ClassLoader

Modified: branches/Branch_Stable/src/main/org/jboss/messaging/util/JBMExecutor.java
===================================================================
--- branches/Branch_Stable/src/main/org/jboss/messaging/util/JBMExecutor.java	2007-12-14 14:31:53 UTC (rev 3503)
+++ branches/Branch_Stable/src/main/org/jboss/messaging/util/JBMExecutor.java	2007-12-14 17:55:14 UTC (rev 3504)
@@ -22,6 +22,9 @@
 
 package org.jboss.messaging.util;
 
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+
 import EDU.oswego.cs.dl.util.concurrent.QueuedExecutor;
 import EDU.oswego.cs.dl.util.concurrent.Channel;
 
@@ -61,29 +64,57 @@
    class TCLExecutor implements Runnable
    {
 
-      Runnable realExecutor;
-      ClassLoader tcl;
+      private Runnable realExecutor;
+      private ClassLoader tcl;
 
       public TCLExecutor(Runnable realExecutor)
       {
-         tcl = Thread.currentThread().getContextClassLoader();
+         tcl = AccessController.doPrivileged(
+            new PrivilegedAction<ClassLoader>()
+            {
+               public ClassLoader run()
+               {
+                  return Thread.currentThread().getContextClassLoader();
+               }
+            }
+         );
+
          this.realExecutor = realExecutor;
       }
 
       public void run()
       {
-         Thread.currentThread().setContextClassLoader(tcl);
+         AccessController.doPrivileged(
+            new PrivilegedAction()
+            {
+               public Object run()
+               {
+                  Thread.currentThread().setContextClassLoader(tcl);
+                  return null;
+               }
+            }
+         );
          try
          {
             realExecutor.run();
          }
          finally
          {
-            Thread.currentThread().setContextClassLoader(JBMExecutor.class.getClassLoader());
+            AccessController.doPrivileged(
+               new PrivilegedAction()
+               {
+                  public Object run()
+                  {
+                     Thread.currentThread().setContextClassLoader(JBMExecutor.class.getClassLoader());
+                     return null;
+                  }
+               }
+            );
          }
       }
    }
-   
+
+
    public void execute(Runnable runnable) throws InterruptedException
    {
       super.execute(new TCLExecutor(runnable));




More information about the jboss-cvs-commits mailing list