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/d010f32f Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/d010f32f Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/d010f32f
Branch: refs/heads/sandbox/WICKET-4686 Commit: d010f32f7011c4fe6f9d94d36814cc5395703826 Parents: eab26ec Author: svenmeier <[email protected]> Authored: Tue Jan 7 19:35:50 2014 +0100 Committer: svenmeier <[email protected]> Committed: Tue Jan 7 19:35:50 2014 +0100 ---------------------------------------------------------------------- .../apache/wicket/protocol/http/RequestUtils.java | 16 +++++++++++++--- .../wicket/protocol/http/RequestUtilsTest.java | 14 ++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/d010f32f/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 9c16040..9a04164 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; @@ -204,8 +205,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) { @@ -215,7 +219,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/d010f32f/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 bfcfa14..4c41951 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 @@ -18,6 +18,7 @@ package org.apache.wicket.protocol.http; import java.nio.charset.Charset; +import org.apache.wicket.protocol.http.mock.MockHttpServletRequest; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.junit.Assert; import org.junit.Test; @@ -171,4 +172,17 @@ public class RequestUtilsTest extends Assert RequestUtils.decodeParameters("123", params, UTF_8_CHARSET); assertEquals("", params.get("123").toString()); } + + + @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)); + } }
