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));
+       }
 }

Reply via email to