/* GenericFilter.java
Purpose: A generic class to help implementing servlet filter
Description:
History:
2001/11/13 14:46:46, Create, Tom M. Yeh.
Copyright (C) 2001 Potix Corporation. All Rights Reserved.
{{IS_RIGHT
This program is distributed under LGPL Version 2.1 in the hope that
it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.web.servlet;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.zkoss.web.servlet.http.Https;
/**
* A generic class to help implementing servlet filter.
* Its role is like javax.servlet.GenericServlet to javax.servlet.Servlet.
*
* @author tomyeh
*/
public abstract class GenericFilter implements Filter {
protected FilterConfig _config;
protected GenericFilter() {
}
//-- extra API --//
/** A convenience method which can be overridden so that there's
* no need to call super.init(config).
* @see #init(FilterConfig)
*/
protected void init() throws ServletException {
}
/** Called by the web container to indicate to a filter that it is
* being placed into service.
* However, deriving class usually doesn't override this method
* but overriding {@link #init()}.
*/
public final void init(FilterConfig config) throws ServletException {
_config = config;
init();
}
/** Returns a String containing the value of the named initialization
* parameter, or null if the parameter does not exist.
*/
public final String getInitParameter(String name) {
return _config.getInitParameter(name);
}
/** Returns a String containing the value of the named initialization
* parameter, or null if the parameter does not exist.
*/
public final Enumeration getInitParameterNames() {
return _config.getInitParameterNames();
}
/** Returns the filter's name.
*/
public final String getFilterName() {
return _config.getFilterName();
}
/** Returns the servlet context in which this filter is running.
*/
public final ServletContext getServletContext() {
return _config.getServletContext();
}
/**
* Redirects to another page. Note: it supports only HTTP.
*
* <p>It resolves "*" contained in URI, if any, to the proper Locale,
* and the browser code.
* Refer to {@link Servlets#locate(ServletContext, ServletRequest, String, Locator)}
* for details.
*
* @param page the page's uri; null to denote the same request
* @param mode one of {@link Servlets#OVERWRITE_URI}, {@link Servlets#IGNORE_PARAM},
* and {@link Servlets#APPEND_PARAM}. It defines how to handle if both uri
* and params contains the same parameter.
* mode is used only if both uri contains query string and params is
* not empty.
*/
protected void sendRedirect(HttpServletRequest request, HttpServletResponse response, String page, Map params,
int mode) throws ServletException, java.io.IOException {
Https.sendRedirect(getServletContext(), request, response, page, params, mode);
}
/** Forward to the specified page.
*
* <p>It resolves "*" contained in URI, if any, to the proper Locale,
* and the browser code.
* Refer to {@link Servlets#locate(ServletContext, ServletRequest, String, Locator)}
* for details.
* @since 3.6.3
*/
protected final void forward(ServletRequest request, ServletResponse response, String uri)
throws ServletException, java.io.IOException {
Https.forward(getServletContext(), request, response, uri, null, 0);
}
/** Forward to the specified page with parameters.
*
* <p>It resolves "*" contained in URI, if any, to the proper Locale,
* and the browser code.
* Refer to {@link Servlets#locate(ServletContext, ServletRequest, String, Locator)}
* for details.
* @since 3.6.3
*/
protected final void forward(ServletRequest request, ServletResponse response, String uri, Map params, int mode)
throws ServletException, java.io.IOException {
Https.forward(getServletContext(), request, response, uri, params, mode);
}
/** Includes the specified page.
*
* <p>It resolves "*" contained in URI, if any, to the proper Locale,
* and the browser code.
* Refer to {@link Servlets#locate(ServletContext, ServletRequest, String, Locator)}
* for details.
* @since 3.6.3
*/
protected final void include(ServletRequest request, ServletResponse response, String uri)
throws ServletException, java.io.IOException {
Https.include(getServletContext(), request, response, uri, null, 0);
}
/** Includes the specified page with parameters.
*
* <p>It resolves "*" contained in URI, if any, to the proper Locale,
* and the browser code.
* Refer to {@link Servlets#locate(ServletContext, ServletRequest, String, Locator)}
* for details.
* @since 3.6.3
*/
protected final void include(ServletRequest request, ServletResponse response, String uri, Map params, int mode)
throws ServletException, java.io.IOException {
Https.include(getServletContext(), request, response, uri, params, mode);
}
//-- Filter --//
/** Called by the web container to indicate to a filter that it is
* being taken out of service.
*
* <p>This implementation does nothing.
*/
public void destroy() {
}
}