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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to