Modified:
/trunk/jjson/src/main/java/de/grobmeier/jjson/convert/JSONAnnotationEncoder.java
/trunk/jjson/src/test/java/de/grobmeier/jjson/convert/JSONAnnotationEncoderTest.java
/trunk/jjson-struts2
/trunk/jjson-struts2/src/test/java/de/grobmeier/json/plugins/struts2/JsonResultTest.java
/trunk/jjson-struts2/src/test/java/de/grobmeier/json/plugins/struts2/MultilineTestAction.java
=======================================
---
/trunk/jjson/src/main/java/de/grobmeier/jjson/convert/JSONAnnotationEncoder.java
Tue Aug 2 04:31:22 2011
+++
/trunk/jjson/src/main/java/de/grobmeier/jjson/convert/JSONAnnotationEncoder.java
Tue Aug 2 06:38:52 2011
@@ -46,7 +46,10 @@
private static final String COMMA = ",";
private static final String EMTPY_STRING = "";
private static final String BRACKET_LEFT = "{";
-
+
+ private final String CARRIAGE_RETURN = new String(new char[] { '\\', 'r'
});
+ private final String LINE_FEED = new String(new char[] {'\\', '\\', 'n'
});
+
/** Default format for dates */
private final static SimpleDateFormat DEFAULT_FORMAT = new
SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
@@ -264,14 +267,14 @@
}
}
- private void encodeString(String string, StringBuilder result, JSON
annotation) {
+ private void encodeString(String string, StringBuilder result, JSON
annotation) {
if(string == null) {
result.append(NULL);
} else {
result.append(QUOTE);
if(annotation != null && annotation.encodeLinebreaks()) {
- String replaced = string.replaceAll("\r","\\\\r");
- replaced = replaced.replaceAll("\n","\\\\n");
+ String replaced = string.replaceAll("\r", CARRIAGE_RETURN);
+ replaced = replaced.replaceAll("\n", LINE_FEED);
result.append(replaced);
} else if (annotation != null
&& !"".equals(annotation.replaceLinebreaksWith())) {
String replaced = string.replaceAll("\r\n",
annotation.replaceLinebreaksWith());
=======================================
---
/trunk/jjson/src/test/java/de/grobmeier/jjson/convert/JSONAnnotationEncoderTest.java
Tue Aug 2 03:58:59 2011
+++
/trunk/jjson/src/test/java/de/grobmeier/jjson/convert/JSONAnnotationEncoderTest.java
Tue Aug 2 06:38:52 2011
@@ -44,8 +44,34 @@
MultilineAnnotatedTestClass c = new MultilineAnnotatedTestClass();
JSONAnnotationEncoder encoder = new JSONAnnotationEncoder();
String json = encoder.encode(c);
- TestCase.assertEquals("{\"mys\":\"bla\\ntest\"}", json);
- System.out.println(json);
+
+ char[] charArray = new char[19];
+ int i = 0;
+ charArray[i++] = '{';
+ charArray[i++] = '"';
+ charArray[i++] = 'm';
+ charArray[i++] = 'y';
+ charArray[i++] = 's';
+ charArray[i++] = '"';
+ charArray[i++] = ':';
+ charArray[i++] = '"';
+ charArray[i++] = 'b';
+ charArray[i++] = 'l';
+ charArray[i++] = 'a';
+ charArray[i++] = '\\';
+ charArray[i++] = 'n';
+ charArray[i++] = 't';
+ charArray[i++] = 'e';
+ charArray[i++] = 's';
+ charArray[i++] = 't';
+ charArray[i++] = '"';
+ charArray[i++] = '}';
+
+ String part1 = new String(charArray);
+
+ System.out.println(part1);
+ System.out.println(json);
+ TestCase.assertEquals(part1, json);
}
@Test
=======================================
---
/trunk/jjson-struts2/src/test/java/de/grobmeier/json/plugins/struts2/JsonResultTest.java
Tue Aug 2 04:32:49 2011
+++
/trunk/jjson-struts2/src/test/java/de/grobmeier/json/plugins/struts2/JsonResultTest.java
Tue Aug 2 06:38:52 2011
@@ -42,7 +42,33 @@
@Test
public void testMultiline() throws Exception {
+
+ char[] charArray = new char[6];
+
+ int i = 0;
+ charArray[i++] = 'm';
+ charArray[i++] = 'y';
+ charArray[i++] = '\\';
+ charArray[i++] = 'n';
+ charArray[i++] = 'a';
+ charArray[i++] = 'g';
+ String part1 = new String(charArray);
+
+ char[] charArray2 = new char[7];
+
+ i = 0;
+ charArray2[i++] = 'm';
+ charArray2[i++] = 'y';
+ charArray2[i++] = '%';
+ charArray2[i++] = '0';
+ charArray2[i++] = 'A';
+ charArray2[i++] = 'a';
+ charArray2[i++] = 'g';
+ String part2 = new String(charArray2);
+
String executeAction = this.executeAction("/multilinetest");
-
Assert.assertEquals("{\"test\":\"mytest\\r\\nagain\",\"test2\":\"mytest%0Aagain\"}",
executeAction);
+
+ String expected = "{\"test\":\"" + part1 + "\",\"test2\":\"" + part2
+ "\"}";
+ Assert.assertEquals(expected, executeAction);
}
}
=======================================
---
/trunk/jjson-struts2/src/test/java/de/grobmeier/json/plugins/struts2/MultilineTestAction.java
Tue Aug 2 04:32:49 2011
+++
/trunk/jjson-struts2/src/test/java/de/grobmeier/json/plugins/struts2/MultilineTestAction.java
Tue Aug 2 06:38:52 2011
@@ -23,12 +23,23 @@
public class MultilineTestAction extends ActionSupport {
/** Serial */
private static final long serialVersionUID = -6707682090128966810L;
+
+ private static final char[] charArray = new char[5];
+ static {
+
+ int i = 0;
+ charArray[i++] = 'm';
+ charArray[i++] = 'y';
+ charArray[i++] = '\n';
+ charArray[i++] = 'a';
+ charArray[i++] = 'g';
+ }
@JSON(encodeLinebreaks = true)
- private String test = "mytest\r\nagain";
+ private String test = new String(charArray);
@JSON(replaceLinebreaksWith = "%0A")
- private String test2 = "mytest\nagain";
+ private String test2 = "my\nag";
public String execute(){
return SUCCESS;