You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2009/08/17 22:54:55 UTC

svn commit: r805136 - in /incubator/shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/http/HttpResponse.java test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java

Author: johnh
Date: Mon Aug 17 20:54:55 2009
New Revision: 805136

URL: http://svn.apache.org/viewvc?rev=805136&view=rev
Log:
Make charset parsing case-insensitive. Per RFC 2616 sec 3.7:

"The ... parameter attribute names are case- insensitive"

...so this behavior is RFC-compliant.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java?rev=805136&r1=805135&r2=805136&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java Mon Aug 17 20:54:55 2009
@@ -432,7 +432,7 @@
         return DEFAULT_ENCODING;
       }
       if (parts.length == 2) {
-        int offset = parts[1].indexOf("charset=");
+        int offset = parts[1].toLowerCase().indexOf("charset=");
         if (offset != -1) {
           String charset = parts[1].substring(offset + 8).toUpperCase();
           // Some servers include quotes around the charset:

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java?rev=805136&r1=805135&r2=805136&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java Mon Aug 17 20:54:55 2009
@@ -72,6 +72,16 @@
   }
 
   @Test
+  public void testEncodingDetectionUtf8WithBomCaseInsensitiveKey() throws Exception {
+    HttpResponse response = new HttpResponseBuilder()
+        .addHeader("Content-Type", "text/plain; Charset=utf-8")
+        // Legitimate data, should be ignored in favor of explicit charset.
+        .setResponse(LATIN1_DATA)
+        .create();
+    assertEquals("UTF-8", response.getEncoding());
+  }
+
+  @Test
   public void testEncodingDetectionLatin1() throws Exception {
     // Input is a basic latin-1 string with 1 non-UTF8 compatible char.
     HttpResponse response = new HttpResponseBuilder()