You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2014/01/07 19:36:16 UTC

git commit: WICKET-5463 resilience against unsupported Charsets

Updated Branches:
  refs/heads/master eab26ec83 -> d010f32f7


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/master
Commit: d010f32f7011c4fe6f9d94d36814cc5395703826
Parents: eab26ec
Author: svenmeier <sv...@meiers.net>
Authored: Tue Jan 7 19:35:50 2014 +0100
Committer: svenmeier <sv...@meiers.net>
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));
+	}
 }