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: [email protected]
For additional commands, e-mail: [email protected]