You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2007/06/17 02:59:35 UTC

svn commit: r548000 - in /geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat: GeronimoStandardContext.java listener/RunAsInstanceListener.java

Author: djencks
Date: Sat Jun 16 17:59:31 2007
New Revision: 548000

URL: http://svn.apache.org/viewvc?view=rev&rev=548000
Log:
GERONIMO=2687 Make sure tomcat doesn't register or unregister default subjects

Modified:
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java
    geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/listener/RunAsInstanceListener.java

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java?view=diff&rev=548000&r1=547999&r2=548000
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java Sat Jun 16 17:59:31 2007
@@ -213,15 +213,6 @@
             super.start();
     }
 
-    public synchronized void stop() throws LifecycleException {
-        // Remove the defaultSubject
-        if (defaultSubject != null) {
-            ContextManager.unregisterSubject(defaultSubject);
-        }
-
-        super.stop();
-    }
-
     public void addChild(Container child) {
         Wrapper wrapper = (Wrapper) child;
 

Modified: geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/listener/RunAsInstanceListener.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/listener/RunAsInstanceListener.java?view=diff&rev=548000&r1=547999&r2=548000
==============================================================================
--- geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/listener/RunAsInstanceListener.java (original)
+++ geronimo/server/trunk/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/listener/RunAsInstanceListener.java Sat Jun 16 17:59:31 2007
@@ -16,6 +16,9 @@
  */
 package org.apache.geronimo.tomcat.listener;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.security.auth.Subject;
 
 import org.apache.catalina.Container;
@@ -28,7 +31,11 @@
 
 public class RunAsInstanceListener implements InstanceListener {
 
-    private static final ThreadLocal<Callers> threadLocal = new ThreadLocal<Callers>();
+    private static final ThreadLocal<List<Callers>> threadLocal = new ThreadLocal<List<Callers>>() {
+        protected List<Callers> initialValue() {
+            return new ArrayList<Callers>(2);
+        }
+    };
     
     public void instanceEvent(InstanceEvent event) {
         
@@ -39,17 +46,19 @@
                 Wrapper wrapper = event.getWrapper();
                 String runAsRole = wrapper.getRunAs();
                 Subject runAsSubject = context.getSubjectForRole(runAsRole);
+                List<Callers> callersStack = threadLocal.get();
                 if (runAsSubject != null) {
-                    Callers oldCallers = ContextManager.getCallers();
-                    ContextManager.registerSubject(runAsSubject);
-                    ContextManager.pushNextCaller(runAsSubject);
-                    threadLocal.set(oldCallers);
+                    Callers oldCallers = ContextManager.pushNextCaller(runAsSubject);
+                    callersStack.add(oldCallers);
+                } else {
+                    callersStack.add(null);
                 }
             }
         }
 
         else if (event.getType().equals(InstanceEvent.AFTER_SERVICE_EVENT)) {
-            Callers oldCallers = threadLocal.get();
+            List<Callers> callersStack = threadLocal.get();
+            Callers oldCallers = callersStack.remove(callersStack.size() - 1);
             if (oldCallers!=null) {
                 ContextManager.popCallers(oldCallers);
             }