You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/06/01 02:50:30 UTC

svn commit: r1344953 - in /openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina: OpenEJBSecurityListener.java TomEERealm.java

Author: rmannibucau
Date: Fri Jun  1 00:50:30 2012
New Revision: 1344953

URL: http://svn.apache.org/viewvc?rev=1344953&view=rev
Log:
TOMEE-212 small refactoring to move the threadlocal where it is needed

Modified:
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBSecurityListener.java
    openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBSecurityListener.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBSecurityListener.java?rev=1344953&r1=1344952&r2=1344953&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBSecurityListener.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/OpenEJBSecurityListener.java Fri Jun  1 00:50:30 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.tomee.catalina;
 
+import org.apache.catalina.Realm;
 import org.apache.catalina.connector.Request;
 
 import javax.servlet.AsyncEvent;
@@ -23,8 +24,6 @@ import javax.servlet.AsyncListener;
 import java.io.IOException;
 
 public class OpenEJBSecurityListener implements AsyncListener {
-    static final ThreadLocal<Request> requests = new ThreadLocal<Request>();
-
     private TomcatSecurityService securityService;
     private Object oldState = null;
     private Request request;
@@ -52,7 +51,10 @@ public class OpenEJBSecurityListener imp
 
     public void enter() {
         if (securityService != null && request.getWrapper() != null) {
-            requests.set(request);
+            final Realm realm = request.getContext().getRealm();
+            if (realm instanceof TomEERealm) {
+                ((TomEERealm) realm).enter(request);
+            }
             oldState = securityService.enterWebApp(request.getWrapper().getRealm(), request.getPrincipal(), request.getWrapper().getRunAs());
         }
     }
@@ -62,7 +64,10 @@ public class OpenEJBSecurityListener imp
             try {
                 securityService.exitWebApp(oldState);
             } finally {
-                requests.remove();
+                final Realm realm = request.getContext().getRealm();
+                if (realm instanceof TomEERealm) {
+                    ((TomEERealm) realm).exit();
+                }
             }
         }
     }

Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java?rev=1344953&r1=1344952&r2=1344953&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEERealm.java Fri Jun  1 00:50:30 2012
@@ -3,6 +3,7 @@ package org.apache.tomee.catalina;
 import java.security.Principal;
 import java.security.cert.X509Certificate;
 import javax.security.auth.callback.CallbackHandler;
+import org.apache.catalina.connector.Request;
 import org.apache.catalina.realm.CombinedRealm;
 import org.apache.catalina.realm.JAASRealm;
 import org.apache.openejb.loader.SystemInstance;
@@ -10,6 +11,8 @@ import org.apache.openejb.spi.SecuritySe
 import org.ietf.jgss.GSSContext;
 
 public class TomEERealm extends CombinedRealm {
+    private final ThreadLocal<Request> requests = new ThreadLocal<Request>();
+
     @Override
     public Principal authenticate(String username, String password) {
         return logInTomEE(super.authenticate(username, password));
@@ -42,12 +45,20 @@ public class TomEERealm extends Combined
             // normally we don't care about oldstate because the listener already contains one
             // which is the previous one
             // so no need to clean twice here
-            if (OpenEJBSecurityListener.requests.get() != null) {
-                ss.enterWebApp(this, pcp, OpenEJBSecurityListener.requests.get().getWrapper().getRunAs());
+            if (requests.get() != null) {
+                ss.enterWebApp(this, pcp, requests.get().getWrapper().getRunAs());
             } else {
                 ss.enterWebApp(this, pcp, null);
             }
         }
         return pcp;
     }
+
+    public void enter(final Request request) {
+        requests.set(request);
+    }
+
+    public void exit() {
+        requests.remove();
+    }
 }