Author: rmannibucau
Date: Fri Aug 19 15:49:31 2011
New Revision: 1159669

URL: http://svn.apache.org/viewvc?rev=1159669&view=rev
Log:
adding an asynclistener to replace old valve inside tomcat - missing file

Added:
    
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/OpenEJBSecurityListener.java

Added: 
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/OpenEJBSecurityListener.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/OpenEJBSecurityListener.java?rev=1159669&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/OpenEJBSecurityListener.java
 (added)
+++ 
openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/OpenEJBSecurityListener.java
 Fri Aug 19 15:49:31 2011
@@ -0,0 +1,49 @@
+package org.apache.openejb.tomcat.catalina;
+
+import org.apache.catalina.connector.Request;
+
+import javax.servlet.AsyncEvent;
+import javax.servlet.AsyncListener;
+import java.io.IOException;
+
+/**
+ * @author rmannibucau
+ */
+public class OpenEJBSecurityListener implements AsyncListener {
+    private TomcatSecurityService securityService;
+    private Object oldState = null;
+    private Request request;
+
+    public OpenEJBSecurityListener(TomcatSecurityService service, Request req) 
{
+        securityService = service;
+        request = req;
+    }
+
+    @Override public void onComplete(AsyncEvent asyncEvent) throws IOException 
{
+        exit();
+    }
+
+    @Override public void onError(AsyncEvent asyncEvent) throws IOException {
+        exit();
+    }
+
+    @Override public void onStartAsync(AsyncEvent asyncEvent) throws 
IOException {
+        enter();
+    }
+
+    @Override public void onTimeout(AsyncEvent asyncEvent) throws IOException {
+        exit();
+    }
+
+    public void enter() {
+        if (securityService != null && request.getWrapper() != null) {
+            oldState = 
securityService.enterWebApp(request.getWrapper().getRealm(), 
request.getPrincipal(), request.getWrapper().getRunAs());
+        }
+    }
+
+    public void exit() {
+        if (securityService != null) {
+            securityService.exitWebApp(oldState);
+        }
+    }
+}


Reply via email to