Author: tmjee
Date: Tue Oct 10 05:31:52 2006
New Revision: 454720

URL: http://svn.apache.org/viewvc?view=rev&rev=454720
Log:
WW-727
  - added profiling to FilterDispatcher and ActionContextCleanUp
  

Modified:
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java
    
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java?view=diff&rev=454720&r1=454719&r2=454720
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/ActionContextCleanUp.java
 Tue Oct 10 05:31:52 2006
@@ -33,6 +33,7 @@
 import org.apache.commons.logging.LogFactory;
 
 import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.util.profiling.UtilTimerStack;
 
 /**
  * <!-- SNIPPET START: description -->
@@ -55,6 +56,8 @@
  * </ul>
  * <!-- SNIPPET END: description -->
  *
+ * @version $Date$ $Id$
+ *
  * @see FilterDispatcher
  */
 public class ActionContextCleanUp implements Filter {
@@ -77,7 +80,7 @@
     }
 
     
-    /* (non-Javadoc)
+    /**
      * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, 
javax.servlet.ServletResponse, javax.servlet.FilterChain)
      */
     public void doFilter(ServletRequest req, ServletResponse res, FilterChain 
chain) throws IOException, ServletException {
@@ -85,35 +88,43 @@
         HttpServletRequest request = (HttpServletRequest) req;
         HttpServletResponse response = (HttpServletResponse) res;
 
-        // prepare the request no matter what - this ensures that the proper 
character encoding
-        // is used before invoking the mapper (see WW-9127)
-        Dispatcher.setInstance(dispatcher);
-        dispatcher.prepare(request, response);
-
-        ServletContext servletContext = filterConfig.getServletContext();
+        String timerKey = "ActionContextCleanUp_doFilter: ";
         try {
-            request = dispatcher.wrapRequest(request, servletContext);
-        } catch (IOException e) {
-            String message = "Could not wrap servlet request with 
MultipartRequestWrapper!";
-            LOG.error(message, e);
-            throw new ServletException(message, e);
+               UtilTimerStack.push(timerKey);
+               
+               // prepare the request no matter what - this ensures that the 
proper character encoding
+               // is used before invoking the mapper (see WW-9127)
+               Dispatcher.setInstance(dispatcher);
+               dispatcher.prepare(request, response);
+
+               ServletContext servletContext = 
filterConfig.getServletContext();
+               try {
+                       request = dispatcher.wrapRequest(request, 
servletContext);
+               } catch (IOException e) {
+                       String message = "Could not wrap servlet request with 
MultipartRequestWrapper!";
+                       LOG.error(message, e);
+                       throw new ServletException(message, e);
+               }
+
+               try {
+                       Integer count = (Integer)request.getAttribute(COUNTER);
+                       if (count == null) {
+                               count = new Integer(1);
+                       }
+                       else {
+                               count = new Integer(count.intValue()+1);
+                       }
+                       request.setAttribute(COUNTER, count);
+                       chain.doFilter(request, response);
+               } finally {
+                       int counterVal = 
((Integer)request.getAttribute(COUNTER)).intValue();
+                       counterVal -= 1;
+                       request.setAttribute(COUNTER, new Integer(counterVal));
+                       cleanUp(request);
+               }
         }
-
-        try {
-            Integer count = (Integer)request.getAttribute(COUNTER);
-            if (count == null) {
-                count = new Integer(1);
-            }
-            else {
-                count = new Integer(count.intValue()+1);
-            }
-            request.setAttribute(COUNTER, count);
-            chain.doFilter(request, response);
-        } finally {
-            int counterVal = 
((Integer)request.getAttribute(COUNTER)).intValue();
-            counterVal -= 1;
-            request.setAttribute(COUNTER, new Integer(counterVal));
-            cleanUp(request);
+        finally {
+               UtilTimerStack.pop(timerKey);
         }
     }
 

Modified: 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java?view=diff&rev=454720&r1=454719&r2=454720
==============================================================================
--- 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
 (original)
+++ 
struts/struts2/trunk/core/src/main/java/org/apache/struts2/dispatcher/FilterDispatcher.java
 Tue Oct 10 05:31:52 2006
@@ -50,6 +50,7 @@
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
 
 import com.opensymphony.xwork2.util.ClassLoaderUtil;
+import com.opensymphony.xwork2.util.profiling.UtilTimerStack;
 import com.opensymphony.xwork2.ActionContext;
 
 /**
@@ -114,6 +115,8 @@
  * @see org.apache.struts2.lifecycle.LifecycleListener
  * @see ActionMapper
  * @see ActionContextCleanUp
+ * 
+ * @version $Date$ $Id$
  */
 public class FilterDispatcher implements Filter, StrutsStatics {
     private static final Log LOG = LogFactory.getLog(FilterDispatcher.class);
@@ -193,63 +196,70 @@
         HttpServletResponse response = (HttpServletResponse) res;
         ServletContext servletContext = filterConfig.getServletContext();
 
-        Dispatcher du = Dispatcher.getInstance();
-        
-        // Prepare and wrap the request if the cleanup filter hasn't already
-        if (du == null) {
-            du = dispatcher;
-            // prepare the request no matter what - this ensures that the 
proper character encoding
-            // is used before invoking the mapper (see WW-9127)
-            du.prepare(request, response);
-
-            try {
-                // Wrap request first, just in case it is multipart/form-data 
-                // parameters might not be accessible through before encoding 
(ww-1278)
-                request = du.wrapRequest(request, servletContext);
-            } catch (IOException e) {
-                String message = "Could not wrap servlet request with 
MultipartRequestWrapper!";
-                LOG.error(message, e);
-                throw new ServletException(message, e);
-            }
-            Dispatcher.setInstance(du);
-        }
-
-        ActionMapper mapper = null;
-        ActionMapping mapping = null;
+        String timerKey = "FilterDispatcher_doFilter: ";
         try {
-            mapper = ActionMapperFactory.getMapper();
-            mapping = mapper.getMapping(request, du.getConfigurationManager());
-        } catch (Exception ex) {
-            du.sendError(request, response, servletContext, 
HttpServletResponse.SC_INTERNAL_SERVER_ERROR, ex);
-            ActionContextCleanUp.cleanUp(req);
-            return;
-        }
-
-        if (mapping == null) {
-            // there is no action in this request, should we look for a static 
resource?
-            String resourcePath = RequestUtils.getServletPath(request);
-
-            if ("".equals(resourcePath) && null != request.getPathInfo()) {
-                resourcePath = request.getPathInfo();
-            }
+               UtilTimerStack.push(timerKey);
+               Dispatcher du = Dispatcher.getInstance();
+        
+               // Prepare and wrap the request if the cleanup filter hasn't 
already
+               if (du == null) {
+                       du = dispatcher;
+                       // prepare the request no matter what - this ensures 
that the proper character encoding
+                       // is used before invoking the mapper (see WW-9127)
+                       du.prepare(request, response);
+
+                       try {
+                               // Wrap request first, just in case it is 
multipart/form-data 
+                               // parameters might not be accessible through 
before encoding (ww-1278)
+                               request = du.wrapRequest(request, 
servletContext);
+                       } catch (IOException e) {
+                               String message = "Could not wrap servlet 
request with MultipartRequestWrapper!";
+                               LOG.error(message, e);
+                               throw new ServletException(message, e);
+                       }
+                       Dispatcher.setInstance(du);
+               }
+
+               ActionMapper mapper = null;
+               ActionMapping mapping = null;
+               try {
+                       mapper = ActionMapperFactory.getMapper();
+                       mapping = mapper.getMapping(request, 
du.getConfigurationManager());
+               } catch (Exception ex) {
+                       du.sendError(request, response, servletContext, 
HttpServletResponse.SC_INTERNAL_SERVER_ERROR, ex);
+                       ActionContextCleanUp.cleanUp(req);
+                       return;
+               }
+
+               if (mapping == null) {
+                       // there is no action in this request, should we look 
for a static resource?
+                       String resourcePath = 
RequestUtils.getServletPath(request);
+
+                       if ("".equals(resourcePath) && null != 
request.getPathInfo()) {
+                               resourcePath = request.getPathInfo();
+                       }
 
-            if 
("true".equals(Settings.get(StrutsConstants.STRUTS_SERVE_STATIC_CONTENT)) 
+                       if 
("true".equals(Settings.get(StrutsConstants.STRUTS_SERVE_STATIC_CONTENT)) 
                     && resourcePath.startsWith("/struts")) {
-                String name = resourcePath.substring("/struts".length());
-                findStaticResource(name, response);
-            } else {
-                // this is a normal request, let it pass through
-                chain.doFilter(request, response);
-            }
-            // The framework did its job here
-            return;
+                               String name = 
resourcePath.substring("/struts".length());
+                               findStaticResource(name, response);
+                       } else {
+                               // this is a normal request, let it pass through
+                               chain.doFilter(request, response);
+                       }
+                       // The framework did its job here
+                       return;
+               }
+
+
+               try {
+                       dispatcher.serviceAction(request, response, 
servletContext, mapping);
+               } finally {
+                       ActionContextCleanUp.cleanUp(req);
+               }
         }
-
-
-        try {
-            dispatcher.serviceAction(request, response, servletContext, 
mapping);
-        } finally {
-            ActionContextCleanUp.cleanUp(req);
+        finally {
+               UtilTimerStack.pop(timerKey);
         }
     }
 


Reply via email to