You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@click.apache.org by sa...@apache.org on 2009/03/10 11:34:06 UTC

svn commit: r752040 - in /incubator/click/branches/click-2.0.x: documentation/docs/roadmap-changes.html examples/webapp/WEB-INF/web.xml extras/src/org/apache/click/extras/filter/PerformanceFilter.java

Author: sabob
Date: Tue Mar 10 10:34:05 2009
New Revision: 752040

URL: http://svn.apache.org/viewvc?rev=752040&view=rev
Log:
forwardported PerformanceFilter excludes. CLK-498

Modified:
    incubator/click/branches/click-2.0.x/documentation/docs/roadmap-changes.html
    incubator/click/branches/click-2.0.x/examples/webapp/WEB-INF/web.xml
    incubator/click/branches/click-2.0.x/extras/src/org/apache/click/extras/filter/PerformanceFilter.java

Modified: incubator/click/branches/click-2.0.x/documentation/docs/roadmap-changes.html
URL: http://svn.apache.org/viewvc/incubator/click/branches/click-2.0.x/documentation/docs/roadmap-changes.html?rev=752040&r1=752039&r2=752040&view=diff
==============================================================================
--- incubator/click/branches/click-2.0.x/documentation/docs/roadmap-changes.html (original)
+++ incubator/click/branches/click-2.0.x/documentation/docs/roadmap-changes.html Tue Mar 10 10:34:05 2009
@@ -87,6 +87,10 @@
           a page by decreasing the buffer size used for including HTML imports.
       </li>
       <li class="change">
+          Improved PerformanceFilter to implement exclude-paths filtering
+ 	 		    [<a target='_blank' href="https://issues.apache.org/click/browse/CLK-498">498</a>].
+ 	 		</li>
+      <li class="change">
           <a class="external" target="_blank" href="http://code.google.com/p/click-calendar/">Click Calendar</a>
           version 1.0.1 has been released which fixes a memory leak in the calendar popup
           [<a target='_blank' href="https://issues.apache.org/click/browse/CLK-499">499</a>].

Modified: incubator/click/branches/click-2.0.x/examples/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/incubator/click/branches/click-2.0.x/examples/webapp/WEB-INF/web.xml?rev=752040&r1=752039&r2=752040&view=diff
==============================================================================
--- incubator/click/branches/click-2.0.x/examples/webapp/WEB-INF/web.xml (original)
+++ incubator/click/branches/click-2.0.x/examples/webapp/WEB-INF/web.xml Tue Mar 10 10:34:05 2009
@@ -52,6 +52,8 @@
 	and sets the Expires header on selected static resources. 
 	The "cachable-paths" init parameter tells the filter resources can have 
 	their Expires header set so the browser will cache them.
+  The "excludes-path" init parameter tells the filter which requests should
+	be ignored by the filter.
 	-->
 	<filter>
 		<filter-name>PerformanceFilter</filter-name>
@@ -60,6 +62,10 @@
 			<param-name>cachable-paths</param-name>
  			<param-value>/assets/*</param-value>
 		</init-param>
+    <init-param>
+			<param-name>exclude-paths</param-name>
+ 			<param-value>*/excel-export.htm</param-value>
+		</init-param>
 	</filter>
 
  	<filter-mapping>

Modified: incubator/click/branches/click-2.0.x/extras/src/org/apache/click/extras/filter/PerformanceFilter.java
URL: http://svn.apache.org/viewvc/incubator/click/branches/click-2.0.x/extras/src/org/apache/click/extras/filter/PerformanceFilter.java?rev=752040&r1=752039&r2=752040&view=diff
==============================================================================
--- incubator/click/branches/click-2.0.x/extras/src/org/apache/click/extras/filter/PerformanceFilter.java (original)
+++ incubator/click/branches/click-2.0.x/extras/src/org/apache/click/extras/filter/PerformanceFilter.java Tue Mar 10 10:34:05 2009
@@ -297,12 +297,17 @@
         final HttpServletRequest request = (HttpServletRequest) servletRequest;
         final HttpServletResponse response = (HttpServletResponse) servletResponse;
 
+        final String path = ClickUtils.getResourcePath(request);
+
+        if (isExcludePath(path)) {
+            chain.doFilter(servletRequest, servletResponse);
+            return;
+        }
+
         // Enable resource versioning in Click
         request.setAttribute(ClickUtils.ENABLE_RESOURCE_VERSION, "true");
 
         // Apply cache expiry Headers
-        final String path = ClickUtils.getResourcePath(request);
-
         if (useForeverCacheHeader(path)) {
             setHeaderExpiresCache(response, FOREVER_CACHE_MAX_AGE);
 
@@ -468,6 +473,34 @@
     }
 
     /**
+     * Return true if a path should be excluded from the performance filter.
+     *
+     * @param path the request path to test
+     * @return true if the response should be excluded from the performance filter
+     */
+    protected boolean isExcludePath(String path) {
+        if (!excludeFiles.isEmpty()) {
+            for (int i = 0; i < excludeFiles.size(); i++) {
+                String file = excludeFiles.get(i).toString();
+                if (path.endsWith(file)) {
+                    return true;
+                }
+            }
+        }
+
+        if (!excludeFiles.isEmpty()) {
+            for (int i = 0; i < excludeDirs.size(); i++) {
+                String dir = excludeDirs.get(i).toString();
+                if (path.startsWith(dir)) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
+    /**
      * Return the <tt>version indicator</tt> for the specified path.
      *
      * @param path the resource path
@@ -480,8 +513,8 @@
     /**
      * Removes the version indicator from the specified path.
      * <p/>
-     * For example, given the path <tt>'/example/control-1.4.js'</tt>, where
-     * <tt>'-1.4'</tt> is the <tt>version indicator</tt>, this method will
+     * For example, given the path <tt>'/example/control_1.4.js'</tt>, where
+     * <tt>'_1.4'</tt> is the <tt>version indicator</tt>, this method will
      * return <tt>'/example/control.js'</tt>.
      *
      * @see #getResourceVersionIndicator(String)