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