You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ge...@apache.org on 2011/04/27 17:35:23 UTC

svn commit: r1097151 - /geronimo/server/trunk/framework/modules/geronimo-security/src/main/java/org/apache/geronimo/security/ContextManager.java

Author: genspring
Date: Wed Apr 27 15:35:23 2011
New Revision: 1097151

URL: http://svn.apache.org/viewvc?rev=1097151&view=rev
Log:
GERONIMO-5937 Currently, connector will call ContextManager.unresigterSubject in the after callback method even when the current subject is the default ContextManager.EMPTY subject.

1, don't unregister default EMPTY subject.
2, add a empty non-null principal to the EMPTY subject.

Modified:
    geronimo/server/trunk/framework/modules/geronimo-security/src/main/java/org/apache/geronimo/security/ContextManager.java

Modified: geronimo/server/trunk/framework/modules/geronimo-security/src/main/java/org/apache/geronimo/security/ContextManager.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-security/src/main/java/org/apache/geronimo/security/ContextManager.java?rev=1097151&r1=1097150&r2=1097151&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-security/src/main/java/org/apache/geronimo/security/ContextManager.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-security/src/main/java/org/apache/geronimo/security/ContextManager.java Wed Apr 27 15:35:23 2011
@@ -75,6 +75,11 @@ public class ContextManager {
     }
     public final static Subject EMPTY = new Subject();
     static {
+        EMPTY.getPrincipals().add(new Principal() {
+            public String getName() {
+                return "";
+            }
+        });
         EMPTY.setReadOnly();
         registerSubject(EMPTY);
     }
@@ -221,11 +226,7 @@ public class ContextManager {
         if (sm != null) sm.checkPermission(GET_CONTEXT);
 
         if (callerSubject == null) {
-            return new Principal() {
-                public String getName() {
-                    return "";
-                }
-            };
+            return EMPTY.getPrincipals().iterator().next();
         }
         Context context = subjectContexts.get(callerSubject);
 
@@ -341,6 +342,11 @@ public class ContextManager {
     }
 
     public static synchronized void unregisterSubject(Subject subject) {
+        
+        if (subject == EMPTY) {
+            return;
+        }
+        
         SecurityManager sm = System.getSecurityManager();
         if (sm != null) sm.checkPermission(SET_CONTEXT);