From 63004199d9a930d9769e8fba9f45d30725a8bd7b Mon Sep 17 00:00:00 2001 From: markt Date: Thu, 21 Jul 2011 13:20:40 +0000 Subject: [PATCH] Promote the Set Character Encoding filter to the filters package so it is more widely available. git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1149166 13f79535-47bb-0310-9956-ffa450edef68 --- .../filters/SetCharacterEncodingFilter.java | 80 ++++++---------------- webapps/docs/changelog.xml | 5 ++ webapps/docs/config/filter.xml | 45 ++++++++++++ webapps/examples/WEB-INF/web.xml | 6 +- 4 files changed, 75 insertions(+), 61 deletions(-) rename {webapps/examples/WEB-INF/classes => java/org/apache/catalina}/filters/SetCharacterEncodingFilter.java (76%) diff --git a/webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java b/java/org/apache/catalina/filters/SetCharacterEncodingFilter.java similarity index 76% rename from webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java rename to java/org/apache/catalina/filters/SetCharacterEncodingFilter.java index a8d98c115..ac35edd7f 100644 --- a/webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java +++ b/java/org/apache/catalina/filters/SetCharacterEncodingFilter.java @@ -14,19 +14,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -package filters; - +package org.apache.catalina.filters; import java.io.IOException; -import javax.servlet.Filter; import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; +import org.apache.juli.logging.Log; +import org.apache.juli.logging.LogFactory; + /** *

Example filter that sets the character encoding to be used in parsing the @@ -43,7 +42,7 @@ import javax.servlet.ServletResponse; * selectEncoding() method is set. If set to "false, * selectEncoding() is called only if the * client has not already specified an encoding. By default, this - * parameter is set to "true". + * parameter is set to "false". * * *

Although this filter can be used unchanged, it is also easy to @@ -52,53 +51,37 @@ import javax.servlet.ServletResponse; * the incoming request (such as the values of the Accept-Language * and User-Agent headers, or a value stashed in the current * user's session.

- * - * @author Craig McClanahan - * @version $Id$ */ -public class SetCharacterEncodingFilter implements Filter { +public class SetCharacterEncodingFilter extends FilterBase { + private static final Log log = + LogFactory.getLog(SetCharacterEncodingFilter.class); - // ----------------------------------------------------- Instance Variables + // ----------------------------------------------------- Instance Variables /** * The default character encoding to set for requests that pass through * this filter. */ - protected String encoding = null; - - - /** - * The filter configuration object we are associated with. If this value - * is null, this filter instance is not currently configured. - */ - protected FilterConfig filterConfig = null; + private String encoding = null; + public void setEncoding(String encoding) { this.encoding = encoding; } + public String getEncoding() { return encoding; } /** * Should a character encoding specified by the client be ignored? */ - protected boolean ignore = true; + private boolean ignore = false; + public void setIgnore(boolean ignore) { this.ignore = ignore; } + public boolean isIgnore() { return ignore; } // --------------------------------------------------------- Public Methods /** - * Take this filter out of service. - */ - @Override - public void destroy() { - - this.encoding = null; - this.filterConfig = null; - - } - - - /** * Select and set (if specified) the character encoding to be used to * interpret request parameters for this request. * @@ -123,36 +106,17 @@ public class SetCharacterEncodingFilter implements Filter { // Pass control on to the next filter chain.doFilter(request, response); - } - /** - * Place this filter into service. - * - * @param fConfig The filter configuration object - */ - @Override - public void init(FilterConfig fConfig) throws ServletException { - - this.filterConfig = fConfig; - this.encoding = fConfig.getInitParameter("encoding"); - String value = fConfig.getInitParameter("ignore"); - if (value == null) - this.ignore = true; - else if (value.equalsIgnoreCase("true")) - this.ignore = true; - else if (value.equalsIgnoreCase("yes")) - this.ignore = true; - else - this.ignore = false; + // ------------------------------------------------------ Protected Methods + @Override + protected Log getLogger() { + return log; } - // ------------------------------------------------------ Protected Methods - - /** * Select an appropriate character encoding to be used, based on the * characteristics of the current request and/or filter initialization @@ -166,10 +130,6 @@ public class SetCharacterEncodingFilter implements Filter { * @param request The servlet request we are processing */ protected String selectEncoding(ServletRequest request) { - - return (this.encoding); - + return this.encoding; } - - } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 04d53d7a4..a49d43744 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -70,6 +70,11 @@ 51518: Correct error in web.xml parsing rules for the <others/> tag when using absolute ordering. (markt) + + Move the SetCharacaterEncoding filter from the examples web application + to the org.apache.catalina.filters package so it is + available for all web applications. (markt) + diff --git a/webapps/docs/config/filter.xml b/webapps/docs/config/filter.xml index 6865a7c54..49bd27ff5 100644 --- a/webapps/docs/config/filter.xml +++ b/webapps/docs/config/filter.xml @@ -1100,6 +1100,51 @@ org.apache.catalina.filters.RequestDumperFilter.handlers = 1request-dumper.org.a +
+ + + +

User agents don't always include character encoding information in + requests. Depending on the how the request is processed, a default of either + ISO-8859-1 or the platform default encoding may be used. This is not always + desirable. This filter provides options for setting that encoding or forcing + it to a particular value.

+ +
+ + + +

The filter class name for the Set Character Encoding Filter is + org.apache.catalina.filters.SetCharacterEncodingFilter + .

+ +
+ + + +

The Set Character Encoding Filter supports the following initialization + parameters:

+ + + + +

Name of the character encoding which should be set.

+
+ + +

Determines if any character encoding specified by the user agent is + ignored. If this attribute is true, any value provided by + the user agent is ignored. If false, the encoding is only + set if the user agent did not specify an encoding.

+
+ +
+ +
+ +
+ +
diff --git a/webapps/examples/WEB-INF/web.xml b/webapps/examples/WEB-INF/web.xml index 76b0cfad9..62dda3753 100644 --- a/webapps/examples/WEB-INF/web.xml +++ b/webapps/examples/WEB-INF/web.xml @@ -46,11 +46,15 @@ Set Character Encoding - filters.SetCharacterEncodingFilter + org.apache.catalina.filters.SetCharacterEncodingFilter encoding EUC_JP + + ignore + true + -- 2.11.0