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();
+ }
}