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-unsubscr...@portals.apache.org For additional commands, e-mail: jetspeed-dev-h...@portals.apache.org