Author: fhanik
Date: Fri Jul 17 22:37:54 2009
New Revision: 795256

URL: http://svn.apache.org/viewvc?rev=795256&view=rev
Log:
the dispatcher type should be ASYNC when we are doing a dispatch

Modified:
    tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java
    tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
    tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
    tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java
    tomcat/trunk/webapps/examples/jsp/async/async1.jsp

Modified: tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java?rev=795256&r1=795255&r2=795256&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java Fri 
Jul 17 22:37:54 2009
@@ -64,7 +64,9 @@
 
     @Override
     public void dispatch() {
-        // TODO SERVLET3 - async
+        HttpServletRequest sr = (HttpServletRequest)getServletRequest();
+        String path = sr.getRequestURI();
+        dispatch(path);
     }
 
     @Override
@@ -84,6 +86,7 @@
                 try {
                     //piggy back on the request dispatcher to ensure that 
filters etc get called.
                     //TODO SERVLET3 - async should this be include/forward or 
a new dispatch type
+                    //javadoc suggests include with the type of 
DispatcherType.ASYNC
                     requestDispatcher.include(servletRequest, servletResponse);
                 }catch (Exception x) {
                     //log.error("Async.dispatch",x);

Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=795256&r1=795255&r2=795256&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Fri Jul 
17 22:37:54 2009
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import java.util.EnumSet;
 
+import javax.servlet.DispatcherType;
 import javax.servlet.SessionTrackingMode;
 
 import org.apache.catalina.CometEvent;
@@ -262,11 +263,15 @@
         boolean success = true;
         
         try {
+            DispatcherType prevDispatcherType = request.getDispatcherType();
+            request.setAttribute(Globals.DISPATCHER_TYPE_ATTR, 
DispatcherType.ASYNC);
             // Calling the container
             try {
                 
connector.getContainer().getPipeline().getFirst().invoke(request, response);
             }catch (RuntimeException x) {
                 success = false;
+            } finally {
+                request.setAttribute(Globals.DISPATCHER_TYPE_ATTR, 
prevDispatcherType);
             }
 
             if (request.isComet()) {

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java?rev=795256&r1=795255&r2=795256&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java Fri 
Jul 17 22:37:54 2009
@@ -96,7 +96,9 @@
         }
 
         public Void run() throws ServletException, IOException {
-            doInclude(request,response);
+            DispatcherType type = DispatcherType.INCLUDE;
+            if (request.getDispatcherType()==DispatcherType.ASYNC) type = 
DispatcherType.ASYNC; 
+            doInclude(request,response,type);
             return null;
         }
     }
@@ -487,11 +489,13 @@
                 throw (IOException) e;
             }
         } else {
-            doInclude(request,response);
+            DispatcherType type = DispatcherType.INCLUDE;
+            if (request.getDispatcherType()==DispatcherType.ASYNC) type = 
DispatcherType.ASYNC; 
+            doInclude(request,response,type);
         }
     }
 
-    private void doInclude(ServletRequest request, ServletResponse response)
+    private void doInclude(ServletRequest request, ServletResponse response, 
DispatcherType type)
         throws ServletException, IOException
     {
         // Set up to handle the specified request and response
@@ -514,7 +518,7 @@
             if (servletPath != null)
                 wrequest.setServletPath(servletPath);
             
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
-                    DispatcherType.INCLUDE);
+                    type);
             wrequest.setAttribute(
                     ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
                     getCombinedPath());
@@ -546,7 +550,7 @@
             }
             
             
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
-                    DispatcherType.INCLUDE);
+                    type);
             wrequest.setAttribute(
                     ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
                     getCombinedPath());

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java?rev=795256&r1=795255&r2=795256&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java Fri 
Jul 17 22:37:54 2009
@@ -183,9 +183,11 @@
             servlet = null;
         }
         MessageBytes requestPathMB = request.getRequestPathMB();
+        DispatcherType dispatcherType = DispatcherType.REQUEST;
+        if (request.getDispatcherType()==DispatcherType.ASYNC) dispatcherType 
= DispatcherType.ASYNC; 
         request.setAttribute
             (ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
-             DispatcherType.REQUEST);
+             dispatcherType);
         request.setAttribute
             (ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
              requestPathMB);

Modified: tomcat/trunk/webapps/examples/jsp/async/async1.jsp
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/examples/jsp/async/async1.jsp?rev=795256&r1=795255&r2=795256&view=diff
==============================================================================
--- tomcat/trunk/webapps/examples/jsp/async/async1.jsp (original)
+++ tomcat/trunk/webapps/examples/jsp/async/async1.jsp Fri Jul 17 22:37:54 2009
@@ -1,5 +1,6 @@
 <%...@page session="false"%>
 Output from async1.jsp
+Type is <%=request.getDispatcherType()%>
 <%
 System.out.println("Inside Async 1");
   if (request.isAsyncStarted()) {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to