com.jalios.jcms.servlet
Class JcmsServletFilter

java.lang.Object
  extended by com.jalios.jcms.servlet.JcmsServletFilter
Direct Known Subclasses:
AjaxFilter, ChromeFrameFilter, ExpiresFilter, FriendlyURLFilter, GZIPFilter, InitFilter, MultipartFilter, RestrictedFileFilter, SecurityFilter

public abstract class JcmsServletFilter
extends Object

Convenient super class for servlet filter developped in JCMS.

As of current implementation, this class mainly provides the method processFilter(ServletRequest) to prevent multiple processing of the filter under weblogic.
Also provides a method initJSONBridge(HttpServletRequest) in order to retrieve (and init if not already done) the JSON RPC Bridge in use for current session.

Since:
jcms-5.7.0
Version:
$Revision: 37047 $

Constructor Summary
JcmsServletFilter()
           
 
Method Summary
protected  void endFilter(javax.servlet.ServletRequest req)
          Ends the filter invocation if processFilter(ServletRequest) had been invoked.
protected  org.jabsorb.JSONRPCBridge initJSONBridge(javax.servlet.http.HttpSession session)
          Initialize the session JSON Bridge (if not already done) and store it under session attribute "JSONRPCBridge".
protected  boolean processFilter(javax.servlet.ServletRequest req)
          Checks and set the servlet filter state indicating if the filter can do all its processing or if it should directly call filter chain.
Fix a bug in WebLogic which calls filters for every forward and include.
To use, insert the following code at the begining of your doFilter implementation :
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JcmsServletFilter

public JcmsServletFilter()
Method Detail

processFilter

protected boolean processFilter(javax.servlet.ServletRequest req)
Checks and set the servlet filter state indicating if the filter can do all its processing or if it should directly call filter chain.
Fix a bug in WebLogic which calls filters for every forward and include.
To use, insert the following code at the begining of your doFilter implementation :
  if (!processFilter(req)) {
    chain.doFilter(req, res);
    return;
  }
  [...]
 

Parameters:
req - the current request being processed
Returns:
true if the filter can continue its work, false if it must directly process the filter chain and return.

endFilter

protected void endFilter(javax.servlet.ServletRequest req)
Ends the filter invocation if processFilter(ServletRequest) had been invoked.

  if (!processFilter(req)) {
    chain.doFilter(req, res);
    return;
  }
  try {
    [...]
  } finally {
    endFilter(req);
  }
 

This method is optionnal, but it must be called to allow the filter to be invoked again in the same request if a new forward is performed after filter invocation. This can happens for error processing.
For example :

 request 
   filter 1 begin > servlet (throws NPE) > filter 1 ends
    > appserver forward to error page  >  
   filter 1 begin > error page > filter1 ends  
 

Parameters:
req - the current request being processed

initJSONBridge

protected org.jabsorb.JSONRPCBridge initJSONBridge(javax.servlet.http.HttpSession session)
Initialize the session JSON Bridge (if not already done) and store it under session attribute "JSONRPCBridge".

Parameters:
session - the current HttpSession
Returns:
the instance already available or the one newly created.
Since:
jcms-5.7.3


Copyright © 2001-2010 Jalios SA. All Rights Reserved.