Author: fhanik
Date: Thu Jul 16 17:44:46 2009
New Revision: 794766
URL: http://svn.apache.org/viewvc?rev=794766&view=rev
Log:
Refactor the dispatcher types from int and Integer to the one supplied by the
Servlet specification.
Modified:
tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java
tomcat/trunk/java/org/apache/catalina/connector/Request.java
tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterFactory.java
tomcat/trunk/java/org/apache/catalina/core/ApplicationHttpRequest.java
tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java
tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java
tomcat/trunk/java/org/apache/coyote/Request.java
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=794766&r1=794765&r2=794766&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/AsyncContextImpl.java Thu
Jul 16 17:44:46 2009
@@ -41,9 +41,13 @@
private ServletResponse servletResponse = null;
private List<AsyncListenerWrapper> listeners = new
ArrayList<AsyncListenerWrapper>();
private boolean hasOriginalRequestAndResponse = true;
+ private boolean completed = false;
- public AsyncContextImpl() {
+ private Request request;
+
+ public AsyncContextImpl(Request request) {
//TODO SERVLET3 - async
+ this.request = request;
}
@Override
@@ -59,6 +63,7 @@
log.error("",x);
}
}
+ this.completed = true;
}
@@ -119,6 +124,7 @@
servletResponse = null;
listeners.clear();
hasOriginalRequestAndResponse = true;
+ completed = false;
}
public boolean isStarted() {
@@ -153,8 +159,14 @@
public void setHasOriginalRequestAndResponse(boolean
hasOriginalRequestAndResponse) {
this.hasOriginalRequestAndResponse = hasOriginalRequestAndResponse;
}
-
-
+
+ public boolean isCompleted() {
+ return completed;
+ }
+
+ public void setCompleted(boolean completed) {
+ this.completed = completed;
+ }
Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=794766&r1=794765&r2=794766&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Thu Jul 16
17:44:46 2009
@@ -19,11 +19,10 @@
package org.apache.catalina.connector;
-import java.io.InputStream;
-import java.io.IOException;
import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
import java.io.UnsupportedEncodingException;
-import java.nio.channels.IllegalSelectorException;
import java.security.Principal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -56,18 +55,6 @@
import javax.servlet.http.HttpSession;
import javax.servlet.http.Part;
-import org.apache.tomcat.util.buf.B2CConverter;
-import org.apache.tomcat.util.buf.ByteChunk;
-import org.apache.tomcat.util.buf.MessageBytes;
-import org.apache.tomcat.util.buf.StringCache;
-import org.apache.tomcat.util.http.Cookies;
-import org.apache.tomcat.util.http.FastHttpDateFormat;
-import org.apache.tomcat.util.http.Parameters;
-import org.apache.tomcat.util.http.ServerCookie;
-import org.apache.tomcat.util.http.mapper.MappingData;
-
-import org.apache.coyote.ActionCode;
-
import org.apache.catalina.Context;
import org.apache.catalina.Globals;
import org.apache.catalina.Host;
@@ -79,8 +66,18 @@
import org.apache.catalina.realm.GenericPrincipal;
import org.apache.catalina.util.Enumerator;
import org.apache.catalina.util.ParameterMap;
-import org.apache.tomcat.util.res.StringManager;
import org.apache.catalina.util.StringParser;
+import org.apache.coyote.ActionCode;
+import org.apache.tomcat.util.buf.B2CConverter;
+import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.buf.StringCache;
+import org.apache.tomcat.util.http.Cookies;
+import org.apache.tomcat.util.http.FastHttpDateFormat;
+import org.apache.tomcat.util.http.Parameters;
+import org.apache.tomcat.util.http.ServerCookie;
+import org.apache.tomcat.util.http.mapper.MappingData;
+import org.apache.tomcat.util.res.StringManager;
/**
@@ -225,7 +222,7 @@
/**
* The current dispatcher type.
*/
- protected Object dispatcherType = null;
+ protected DispatcherType internalDispatcherType = null;
/**
@@ -403,6 +400,8 @@
* async timeout
*/
protected long asyncTimeout = 0;
+
+
// --------------------------------------------------------- Public Methods
@@ -421,7 +420,7 @@
context = null;
wrapper = null;
- dispatcherType = null;
+ internalDispatcherType = null;
requestDispatcherPath = null;
comet = false;
@@ -490,7 +489,9 @@
}
-
+ protected boolean isProcessing() {
+ return coyoteRequest.isProcessing();
+ }
/**
* Clear cached encoders (to save memory for Comet requests).
*/
@@ -842,9 +843,9 @@
public Object getAttribute(String name) {
if (name.equals(Globals.DISPATCHER_TYPE_ATTR)) {
- return (dispatcherType == null)
- ? ApplicationFilterFactory.REQUEST_INTEGER
- : dispatcherType;
+ return (internalDispatcherType == null)
+ ? DispatcherType.REQUEST
+ : internalDispatcherType;
} else if (name.equals(Globals.DISPATCHER_REQUEST_PATH_ATTR)) {
return (requestDispatcherPath == null)
? getRequestPathMB().toString()
@@ -1364,7 +1365,7 @@
}
if (name.equals(Globals.DISPATCHER_TYPE_ATTR)) {
- dispatcherType = value;
+ internalDispatcherType = (DispatcherType)value;
return;
} else if (name.equals(Globals.DISPATCHER_REQUEST_PATH_ATTR)) {
requestDispatcherPath = value;
@@ -1461,7 +1462,7 @@
public AsyncContext startAsync() {
// TODO SERVLET3 - async
if (!isAsyncSupported()) throw new IllegalStateException("Not
supported.");
- if (asyncContext==null) asyncContext = new AsyncContextImpl();
+ if (asyncContext==null) asyncContext = new AsyncContextImpl(this);
else if (asyncContext.isStarted()) throw new
IllegalStateException("Already started.");
asyncContext.setServletRequest(getRequest());
asyncContext.setServletResponse(response.getResponse());
@@ -1512,7 +1513,10 @@
public void setAsyncTimeout(long timeout) {
// TODO SERVLET3 - async
- this.asyncTimeout = timeout;
+ if (this.asyncTimeout!=timeout) {
+ this.asyncTimeout = timeout;
+ coyoteRequest.action(ActionCode.ACTION_ASYNC_SETTIMEOUT,new
Long(timeout));
+ }
}
public long getAsyncTimeout() {
@@ -1522,7 +1526,11 @@
public DispatcherType getDispatcherType() {
// TODO SERVLET3 - dispatcher
- return null;
+ if (internalDispatcherType==null) {
+ return DispatcherType.REQUEST;
+ } else {
+ return this.internalDispatcherType;
+ }
}
// ---------------------------------------------------- HttpRequest Methods
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=794766&r1=794765&r2=794766&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationDispatcher.java Thu
Jul 16 17:44:46 2009
@@ -24,6 +24,7 @@
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
+import javax.servlet.DispatcherType;
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
@@ -425,16 +426,15 @@
State state)
throws IOException, ServletException {
- Integer disInt = (Integer) request.getAttribute
- (ApplicationFilterFactory.DISPATCHER_TYPE_ATTR);
+ DispatcherType disInt = (DispatcherType)
request.getAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR);
if (disInt != null) {
- if (disInt.intValue() != ApplicationFilterFactory.ERROR) {
+ if (disInt != DispatcherType.ERROR) {
state.outerRequest.setAttribute
(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
getCombinedPath());
state.outerRequest.setAttribute
(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
- Integer.valueOf(ApplicationFilterFactory.FORWARD));
+ DispatcherType.FORWARD);
invoke(state.outerRequest, response, state);
} else {
invoke(state.outerRequest, response, state);
@@ -514,7 +514,7 @@
if (servletPath != null)
wrequest.setServletPath(servletPath);
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
- Integer.valueOf(ApplicationFilterFactory.INCLUDE));
+ DispatcherType.INCLUDE);
wrequest.setAttribute(
ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
getCombinedPath());
@@ -546,7 +546,7 @@
}
wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
- Integer.valueOf(ApplicationFilterFactory.INCLUDE));
+ DispatcherType.INCLUDE);
wrequest.setAttribute(
ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
getCombinedPath());
Modified:
tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterFactory.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterFactory.java?rev=794766&r1=794765&r2=794766&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterFactory.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterFactory.java
Thu Jul 16 17:44:46 2009
@@ -19,6 +19,7 @@
package org.apache.catalina.core;
+import javax.servlet.DispatcherType;
import javax.servlet.Servlet;
import javax.servlet.ServletRequest;
@@ -43,15 +44,6 @@
// -------------------------------------------------------------- Constants
- public static final int ERROR = 1;
- public static final Integer ERROR_INTEGER = new Integer(ERROR);
- public static final int FORWARD = 2;
- public static final Integer FORWARD_INTEGER = new Integer(FORWARD);
- public static final int INCLUDE = 4;
- public static final Integer INCLUDE_INTEGER = new Integer(INCLUDE);
- public static final int REQUEST = 8;
- public static final Integer REQUEST_INTEGER = new Integer(REQUEST);
-
public static final String DISPATCHER_TYPE_ATTR =
Globals.DISPATCHER_TYPE_ATTR;
public static final String DISPATCHER_REQUEST_PATH_ATTR =
@@ -96,11 +88,9 @@
(ServletRequest request, Wrapper wrapper, Servlet servlet) {
// get the dispatcher type
- int dispatcher = -1;
+ DispatcherType dispatcher = null;
if (request.getAttribute(DISPATCHER_TYPE_ATTR) != null) {
- Integer dispatcherInt =
- (Integer) request.getAttribute(DISPATCHER_TYPE_ATTR);
- dispatcher = dispatcherInt.intValue();
+ dispatcher = (DispatcherType)
request.getAttribute(DISPATCHER_TYPE_ATTR);
}
String requestPath = null;
Object attribute = request.getAttribute(DISPATCHER_REQUEST_PATH_ATTR);
@@ -341,8 +331,8 @@
* Convienience method which returns true if the dispatcher type
* matches the dispatcher types specified in the FilterMap
*/
- private boolean matchDispatcher(FilterMap filterMap, int dispatcher) {
- switch (dispatcher) {
+ private boolean matchDispatcher(FilterMap filterMap, DispatcherType type) {
+ switch (type) {
case FORWARD : {
if (filterMap.getDispatcherMapping() == FilterMap.FORWARD ||
filterMap.getDispatcherMapping() ==
FilterMap.FORWARD_ERROR ||
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationHttpRequest.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationHttpRequest.java?rev=794766&r1=794765&r2=794766&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationHttpRequest.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationHttpRequest.java Thu
Jul 16 17:44:46 2009
@@ -27,6 +27,7 @@
import java.util.Map;
import java.util.NoSuchElementException;
+import javax.servlet.DispatcherType;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
@@ -126,7 +127,7 @@
/**
* The current dispatcher type.
*/
- protected Object dispatcherType = null;
+ protected DispatcherType dispatcherType = null;
/**
@@ -268,7 +269,7 @@
public void setAttribute(String name, Object value) {
if (name.equals(Globals.DISPATCHER_TYPE_ATTR)) {
- dispatcherType = value;
+ dispatcherType = (DispatcherType)value;
return;
} else if (name.equals(Globals.DISPATCHER_REQUEST_PATH_ATTR)) {
requestDispatcherPath = value;
@@ -673,7 +674,7 @@
super.setRequest(request);
// Initialize the attributes for this request
- dispatcherType = request.getAttribute(Globals.DISPATCHER_TYPE_ATTR);
+ dispatcherType =
(DispatcherType)request.getAttribute(Globals.DISPATCHER_TYPE_ATTR);
requestDispatcherPath =
request.getAttribute(Globals.DISPATCHER_REQUEST_PATH_ATTR);
Modified: tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java?rev=794766&r1=794765&r2=794766&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java Thu Jul
16 17:44:46 2009
@@ -21,6 +21,7 @@
import java.io.IOException;
+import javax.servlet.DispatcherType;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
@@ -251,7 +252,7 @@
(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
errorPage.getLocation());
request.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
- new Integer(ApplicationFilterFactory.ERROR));
+ DispatcherType.ERROR);
request.setAttribute
(Globals.STATUS_CODE_ATTR,
new Integer(HttpServletResponse.SC_INTERNAL_SERVER_ERROR));
@@ -330,7 +331,7 @@
(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
errorPage.getLocation());
request.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
- new Integer(ApplicationFilterFactory.ERROR));
+ DispatcherType.ERROR);
Wrapper wrapper = request.getWrapper();
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=794766&r1=794765&r2=794766&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardWrapperValve.java Thu
Jul 16 17:44:46 2009
@@ -23,6 +23,7 @@
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
+import javax.servlet.DispatcherType;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
@@ -183,7 +184,7 @@
MessageBytes requestPathMB = request.getRequestPathMB();
request.setAttribute
(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
- ApplicationFilterFactory.REQUEST_INTEGER);
+ DispatcherType.REQUEST);
request.setAttribute
(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
requestPathMB);
@@ -381,7 +382,7 @@
MessageBytes requestPathMB = request.getRequestPathMB();
request.setAttribute
(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR,
- ApplicationFilterFactory.REQUEST_INTEGER);
+ DispatcherType.REQUEST);
request.setAttribute
(ApplicationFilterFactory.DISPATCHER_REQUEST_PATH_ATTR,
requestPathMB);
Modified: tomcat/trunk/java/org/apache/coyote/Request.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/Request.java?rev=794766&r1=794765&r2=794766&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/Request.java (original)
+++ tomcat/trunk/java/org/apache/coyote/Request.java Thu Jul 16 17:44:46 2009
@@ -528,4 +528,8 @@
public void setBytesRead(int bytesRead) {
this.bytesRead = bytesRead;
}
+
+ public boolean isProcessing() {
+ return
reqProcessorMX.getStage()==org.apache.coyote.Constants.STAGE_SERVICE;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]