Author: jogep
Date: Wed Apr 27 16:36:54 2011
New Revision: 1097172

URL: http://svn.apache.org/viewvc?rev=1097172&view=rev
Log:
WW-3614: Incorrect Content-Type in REST Plugin JSON Content Handler
WW-3536: Specify UTF-8 content type in JsonLibHandler

Modified:
    
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/handler/JsonLibHandler.java
    
struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/handler/JsonLibHandlerTest.java

Modified: 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/handler/JsonLibHandler.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/handler/JsonLibHandler.java?rev=1097172&r1=1097171&r2=1097172&view=diff
==============================================================================
--- 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/handler/JsonLibHandler.java
 (original)
+++ 
struts/struts2/trunk/plugins/rest/src/main/java/org/apache/struts2/rest/handler/JsonLibHandler.java
 Wed Apr 27 16:36:54 2011
@@ -21,20 +21,27 @@
 
 package org.apache.struts2.rest.handler;
 
-import net.sf.json.JSONArray;
-import net.sf.json.JSONObject;
-import net.sf.json.JsonConfig;
-
 import java.io.IOException;
 import java.io.Reader;
 import java.io.Writer;
 import java.util.Collection;
 
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import net.sf.json.JsonConfig;
+
+import org.apache.struts2.StrutsConstants;
+
+import com.opensymphony.xwork2.inject.Inject;
+
 /**
  * Handles JSON content using json-lib
  */
 public class JsonLibHandler implements ContentTypeHandler {
 
+    private static final String DEFAULT_CONTENT_TYPE = "application/json";
+    private String defaultEncoding = "ISO-8859-1";
+
     public void toObject(Reader in, Object target) throws IOException {
         StringBuilder sb = new StringBuilder();
         char[] buffer = new char[1024];
@@ -76,10 +83,15 @@ public class JsonLibHandler implements C
     }
 
     public String getContentType() {
-        return "text/javascript";
+        return DEFAULT_CONTENT_TYPE+";charset=" + this.defaultEncoding;
     }
     
     public String getExtension() {
         return "json";
     }
+    
+    @Inject(StrutsConstants.STRUTS_I18N_ENCODING)
+    public void setDefaultEncoding(String val) {
+        this.defaultEncoding = val;
+    }
 }

Modified: 
struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/handler/JsonLibHandlerTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/handler/JsonLibHandlerTest.java?rev=1097172&r1=1097171&r2=1097172&view=diff
==============================================================================
--- 
struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/handler/JsonLibHandlerTest.java
 (original)
+++ 
struts/struts2/trunk/plugins/rest/src/test/java/org/apache/struts2/rest/handler/JsonLibHandlerTest.java
 Wed Apr 27 16:36:54 2011
@@ -21,13 +21,13 @@
 
 package org.apache.struts2.rest.handler;
 
-import junit.framework.TestCase;
-
-import java.io.StringWriter;
 import java.io.IOException;
 import java.io.StringReader;
+import java.io.StringWriter;
 import java.util.Arrays;
 
+import junit.framework.TestCase;
+
 public class JsonLibHandlerTest extends TestCase {
 
     public void testFromObject() throws IOException {
@@ -67,4 +67,15 @@ public class JsonLibHandlerTest extends 
 
         assertEquals(contact, target);
     }
+
+    public void testContentType() throws IOException {
+        JsonLibHandler handler = new JsonLibHandler();
+        assertEquals(handler.getContentType(), 
"application/json;charset=ISO-8859-1");
+    }
+    
+    public void testDefaultEncoding() throws IOException {
+        JsonLibHandler handler = new JsonLibHandler();
+        handler.setDefaultEncoding("UTF-8");
+        assertEquals(handler.getContentType(), 
"application/json;charset=UTF-8");
+    }
 }


Reply via email to