View Javadoc

1   package org.seasar.cubby.filter;
2   
3   import java.io.IOException;
4   
5   import javax.servlet.Filter;
6   import javax.servlet.FilterChain;
7   import javax.servlet.FilterConfig;
8   import javax.servlet.ServletException;
9   import javax.servlet.ServletRequest;
10  import javax.servlet.ServletResponse;
11  import javax.servlet.http.HttpServletRequest;
12  import javax.servlet.http.HttpServletResponse;
13  
14  import org.seasar.cubby.controller.ActionProcessor;
15  import org.seasar.cubby.controller.ThreadContext;
16  import org.seasar.framework.container.SingletonS2Container;
17  import org.seasar.framework.log.Logger;
18  
19  /**
20   * Cubby用のフィルター。
21   * リクエストの処理をActionProcesserに委譲します。
22   * 
23   * @author agata
24   * @author baba
25   */
26  public class CubbyFilter implements Filter {
27  
28  	/**
29  	 * ログ 
30  	 */
31  	private static final Logger logger = Logger.getLogger(CubbyFilter.class);
32  
33  	/**
34  	 * 初期化処理。
35  	 * 特に何も処理しません。
36  	 */
37  	public void init(final FilterConfig config) throws ServletException {
38  	}
39  
40  	/**
41  	 * 廃棄処理。
42  	 * 特に何も処理しません。
43  	 */
44  	public void destroy() {
45  	}
46  
47  	/**
48  	 * フィルター処理。
49  	 * リクエストの処理をS2Containerから取得したActionProcesserに委譲します。
50  	 */
51  	public void doFilter(final ServletRequest req, final ServletResponse res,
52  			final FilterChain chain) throws IOException, ServletException {
53  		try {
54  			final HttpServletRequest request = (HttpServletRequest) req;
55  			final HttpServletResponse response = (HttpServletResponse) res;
56  			ThreadContext.setRequest(request);
57  
58  			final ActionProcessor processor = SingletonS2Container
59  					.getComponent(ActionProcessor.class);
60  			processor.process(request, response, chain);
61  		} catch (final Throwable e) {
62  			logger.log(e);
63  			throw new ServletException(e);
64  		} finally {
65  			ThreadContext.remove();
66  		}
67  	}
68  
69  }