Author: lukaszlenart
Date: Fri Dec 14 08:53:49 2012
New Revision: 1421740
URL: http://svn.apache.org/viewvc?rev=1421740&view=rev
Log:
WW-3863 Allows to define encoding per result
Modified:
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java
Modified:
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java?rev=1421740&r1=1421739&r2=1421740&view=diff
==============================================================================
---
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
(original)
+++
struts/struts2/trunk/plugins/json/src/main/java/org/apache/struts2/json/JSONResult.java
Fri Dec 14 08:53:49 2012
@@ -65,6 +65,7 @@ public class JSONResult implements Resul
private static final Logger LOG =
LoggerFactory.getLogger(JSONResult.class);
+ private String encoding;
private String defaultEncoding = "ISO-8859-1";
private List<Pattern> includeProperties;
private List<Pattern> excludeProperties;
@@ -217,10 +218,14 @@ public class JSONResult implements Resul
* Retrieve the encoding <p/>
*
* @return The encoding associated with this template (defaults to the
value
- * of 'struts.i18n.encoding' property)
+ * of param 'encoding', if empty default to 'struts.i18n.encoding'
property)
*/
protected String getEncoding() {
- String encoding = this.defaultEncoding;
+ String encoding = this.encoding;
+
+ if (encoding == null) {
+ encoding = this.defaultEncoding;
+ }
if (encoding == null) {
encoding = System.getProperty("file.encoding");
@@ -421,4 +426,16 @@ public class JSONResult implements Resul
public void setWrapSuffix(String wrapSuffix) {
this.wrapSuffix = wrapSuffix;
}
+
+ /**
+ * If defined will be used instead of {@link #defaultEncoding}, you can
define it with result
+ * <result name="success" type="json">
+ * <param name="encoding">UTF-8</param>
+ * </result>
+ *
+ * @param encoding valid encoding string
+ */
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
}
Modified:
struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java
URL:
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java?rev=1421740&r1=1421739&r2=1421740&view=diff
==============================================================================
---
struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java
(original)
+++
struts/struts2/trunk/plugins/json/src/test/java/org/apache/struts2/json/JSONResultTest.java
Fri Dec 14 08:53:49 2012
@@ -20,6 +20,16 @@
*/
package org.apache.struts2.json;
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.mock.MockActionInvocation;
+import com.opensymphony.xwork2.util.ValueStack;
+import org.apache.struts2.StrutsStatics;
+import org.apache.struts2.StrutsTestCase;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+import org.springframework.mock.web.MockServletContext;
+
+import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
@@ -34,18 +44,6 @@ import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.struts2.StrutsStatics;
-import org.apache.struts2.StrutsTestCase;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.mock.web.MockServletContext;
-
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.mock.MockActionInvocation;
-import com.opensymphony.xwork2.util.ValueStack;
-
/**
* JSONResultTest
*/
@@ -573,6 +571,31 @@ public class JSONResultTest extends Stru
assertEquals("application/json;charset=ISO-8859-1",
response.getContentType());
}
+ public void testDefaultEncoding() throws Exception {
+ // given
+ JSONResult json = new JSONResult();
+ json.setDefaultEncoding("UTF-16");
+
+ // when
+ String encoding = json.getEncoding();
+
+ // thn
+ assertEquals("UTF-16", encoding);
+ }
+
+ public void testEncoding() throws Exception {
+ // given
+ JSONResult json = new JSONResult();
+ json.setEncoding("UTF-8");
+ json.setDefaultEncoding("UTF-8");
+
+ // when
+ String encoding = json.getEncoding();
+
+ // thn
+ assertEquals("UTF-8", encoding);
+ }
+
@Override
protected void setUp() throws Exception {
super.setUp();