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