You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by at...@apache.org on 2011/05/13 17:48:42 UTC

svn commit: r1102800 - /portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/security/JSSubject.java

Author: ate
Date: Fri May 13 15:48:42 2011
New Revision: 1102800

URL: http://svn.apache.org/viewvc?rev=1102800&view=rev
Log:
JS2-1183: ensure JSSubject wrapped Subject ThreadLocal is cleared after (request) usage

Modified:
    portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/security/JSSubject.java

Modified: portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/security/JSSubject.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/security/JSSubject.java?rev=1102800&r1=1102799&r2=1102800&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/security/JSSubject.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/security/JSSubject.java Fri May 13 15:48:42 2011
@@ -27,6 +27,9 @@ package org.apache.jetspeed.security;
  */
 
 import javax.security.auth.*;
+
+import org.apache.jetspeed.util.ServletRequestThreadLocalCleanupCallback;
+
 import java.security.AccessControlContext;
 import java.security.PrivilegedActionException;
 
@@ -37,12 +40,17 @@ public class JSSubject implements java.i
 
     private static final long serialVersionUID = -8308522755600156057L;
 
-    static ThreadLocal threadLocal = 
-        new ThreadLocal();
-    
-    
+    static ThreadLocal threadLocal = new ThreadLocal();
     
     
+    private static void setSubject(Subject subject)
+    {
+        if (threadLocal.get() == null && subject != null)
+        {
+            new ServletRequestThreadLocalCleanupCallback(threadLocal);
+        }
+        threadLocal.set(subject);
+    }
 
     /**
      * Get the <code>Subject</code> associated with the provided
@@ -103,7 +111,7 @@ public class JSSubject implements java.i
     	Subject subject = subject1;
     	if (subject == null)
     		subject = JSSubject.getSubject(null);
-    	threadLocal.set(subject);
+    	setSubject(subject);
     	return Subject.doAs(subject,action);	
     }
 
@@ -139,7 +147,7 @@ public class JSSubject implements java.i
     	Subject subject = subject1;
     	if (subject == null)
     		subject = JSSubject.getSubject(null);
-    	threadLocal.set(subject);
+    	setSubject(subject);
     	if (subject != null)
     		return Subject.doAs(subject,action);
     	else
@@ -174,7 +182,7 @@ public class JSSubject implements java.i
     	Subject subject = subject1;
     	if (subject == null)
     		subject = JSSubject.getSubject(acc);
-    	threadLocal.set(subject);
+    	setSubject(subject);
     	if (subject != null)
     		return Subject.doAsPrivileged(subject,action,acc);
     	else
@@ -218,7 +226,7 @@ public class JSSubject implements java.i
     	Subject s = subject;
     	if (s == null)
     		s = JSSubject.getSubject(acc);
-    	threadLocal.set(s);
+    	setSubject(s);
     	if (s != null)
     		return Subject.doAsPrivileged(s,action,acc);
     	else



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org