Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/roller/presentation/pagecache/PageCache.java


1   
2   package org.roller.presentation.pagecache;
3   
4   import org.apache.commons.lang.StringUtils;
5   import org.apache.commons.logging.Log;
6   import org.apache.commons.logging.LogFactory;
7   import org.roller.pojos.UserData;
8   
9   import java.io.IOException;
10  import java.util.ArrayList;
11  import java.util.Iterator;
12  
13  import javax.servlet.Filter;
14  import javax.servlet.FilterChain;
15  import javax.servlet.FilterConfig;
16  import javax.servlet.ServletException;
17  import javax.servlet.ServletRequest;
18  import javax.servlet.ServletResponse;
19  import javax.servlet.http.HttpServletRequest;
20  
21  
22  /////////////////////////////////////////////////////////////////////////////
23  /**
24   * Configurable PageCache Filter implementation. Set the desired FilterHandler
25   * by adding a filter init parameter to web.xml named 'handler'. Possible
26   * values:<br>
27   * <br>
28   * OSCacheFilterHandler: to use OSCache (the default)<br>
29   * CommonsPageCache: to use the Jakarta Commons cache
30   * 
31   * @author Lance Lavandowska
32   * @author David M Johnson
33   */
34  public class PageCache implements Filter
35  {
36      private static Log mLogger = 
37          LogFactory.getFactory().getInstance(PageCache.class);
38          
39      private FilterHandler mHandler = null;
40      
41      private static ArrayList mHandlers = new ArrayList();
42  
43      //-----------------------------------------------------------------------
44      /**
45       * Initialize the filter.
46       * @param filerConfig The filter configuration
47       */
48      public void init(FilterConfig filterConfig)
49      {
50          String handlerClass = filterConfig.getInitParameter("handler");
51          if (mLogger.isDebugEnabled())
52          {
53              mLogger.debug(
54                  "Initializing as filterName: "+filterConfig.getFilterName());
55          }
56          
57          if (StringUtils.isNotEmpty( handlerClass) && 
58            handlerClass.equals("CommonsPageCache"))
59          {
60              if (mLogger.isDebugEnabled())
61              {
62                  mLogger.debug("Instantiating CommonsPageCache");
63              }
64              mHandler = new CommonsPageCache(filterConfig);
65          }
66      else
67      {
68              if (mLogger.isDebugEnabled())
69              {
70            mLogger.debug("Instantiating OSCacheFilterHandler");
71              }
72              mHandler = new OSCacheFilterHandler(filterConfig);
73      }
74          mHandlers.add(mHandler);
75      }
76  
77      //-----------------------------------------------------------------------
78      /**
79       * Filter clean-up
80       */
81      public void destroy()    
82      {
83          mHandler.destroy();
84      }
85  
86      //-----------------------------------------------------------------------
87      /**
88       * Process the doFilter
89       * @param request The servlet request
90       * @param response The servlet response
91       * @param chain The filet chain
92       * @throws ServletException IOException
93       */
94      public void doFilter(ServletRequest request,
95          ServletResponse response, FilterChain chain)
96          throws ServletException, IOException
97      {
98          mHandler.doFilter(request, response, chain);
99      }
100 
101     //-----------------------------------------------------------------------
102     /** Flush cache for all handlers of this class */
103     public static void flushCache(HttpServletRequest req)
104     {
105         Iterator iter = mHandlers.iterator();
106         while (iter.hasNext())
107         {
108             FilterHandler handler = (FilterHandler)iter.next();
109             handler.flushCache(req);            
110         }
111     }
112 
113     //-----------------------------------------------------------------------
114     /** Remove from cache for all handlers of this class */
115     public static void removeFromCache(HttpServletRequest req, UserData user)
116     {
117         Iterator iter = mHandlers.iterator();
118         while (iter.hasNext())
119         {
120             FilterHandler handler = (FilterHandler)iter.next();
121             handler.removeFromCache( req,user );
122         }
123     }
124 }