Updated Branches: refs/heads/wicket-6.x 16c962d99 -> 84a3b04f3
WICKET-5463 resilience against unsupported Charsets Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/84a3b04f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/84a3b04f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/84a3b04f Branch: refs/heads/wicket-6.x Commit: 84a3b04f3fdab86a4fd938a237aff0683f360ac9 Parents: 16c962d Author: svenmeier <[email protected]> Authored: Tue Jan 7 19:30:09 2014 +0100 Committer: svenmeier <[email protected]> Committed: Tue Jan 7 19:30:09 2014 +0100 ---------------------------------------------------------------------- .../apache/wicket/protocol/http/RequestUtils.java | 17 ++++++++++++++--- .../wicket/protocol/http/RequestUtilsTest.java | 15 +++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/84a3b04f/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java index cf832bc..0989ea5 100644 --- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java +++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestUtils.java @@ -17,6 +17,7 @@ package org.apache.wicket.protocol.http; import java.nio.charset.Charset; +import java.nio.charset.UnsupportedCharsetException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -26,6 +27,7 @@ import javax.servlet.http.HttpServletRequest; import org.apache.wicket.Application; import org.apache.wicket.request.cycle.RequestCycle; import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.settings.IRequestCycleSettings; import org.apache.wicket.util.encoding.UrlDecoder; import org.apache.wicket.util.string.Strings; @@ -181,8 +183,11 @@ public final class RequestUtils /** * @param request - * the http servlet request to extract the charset from - * @return the request's charset + * the http servlet request to extract the charset from + * @return the request's charset or a default it request is {@code null} or + * has an unsupported character encoding + * + * @see IRequestCycleSettings#getResponseRequestEncoding() */ public static Charset getCharset(HttpServletRequest request) { @@ -192,7 +197,13 @@ public final class RequestUtils String charsetName = request.getCharacterEncoding(); if (charsetName != null) { - charset = Charset.forName(charsetName); + try + { + charset = Charset.forName(charsetName); + } + catch (UnsupportedCharsetException useDefault) + { + } } } if (charset == null) http://git-wip-us.apache.org/repos/asf/wicket/blob/84a3b04f/wicket-core/src/test/java/org/apache/wicket/protocol/http/RequestUtilsTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/protocol/http/RequestUtilsTest.java b/wicket-core/src/test/java/org/apache/wicket/protocol/http/RequestUtilsTest.java index a7398c0..b14fe19 100644 --- a/wicket-core/src/test/java/org/apache/wicket/protocol/http/RequestUtilsTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/protocol/http/RequestUtilsTest.java @@ -16,6 +16,9 @@ */ package org.apache.wicket.protocol.http; +import java.nio.charset.Charset; + +import org.apache.wicket.protocol.http.mock.MockHttpServletRequest; import org.junit.Assert; import org.junit.Test; @@ -97,4 +100,16 @@ public class RequestUtilsTest extends Assert assertEquals(RequestUtils.toAbsolutePath("http://aif.ru/", "./"), "http://aif.ru/"); } + + @Test + public void charset() throws Exception + { + MockHttpServletRequest request = new MockHttpServletRequest(null, null, null); + + request.setCharacterEncoding("UTF-8"); + assertEquals(Charset.forName("UTF-8"), RequestUtils.getCharset(request)); + + request.setCharacterEncoding("FOO"); + assertEquals(Charset.forName("UTF-8"), RequestUtils.getCharset(request)); + } }
