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

Reply via email to