- try {\r
- List<String> lines = IOUtils.readLines(new StringReader(log));\r
- logLines.addAll(lines);\r
- } catch (IOException e) {\r
- throw new RuntimeException("Cannot add log", e);\r
+ StringTokenizer st = new StringTokenizer(log, "\n");\r
+ while (st.hasMoreTokens())\r
+ logLines.add(removeNonXmlChars(st.nextToken()));\r
+ }\r
+\r
+ /**\r
+ * Removes non XML compliant characters (from\r
+ * http://stackoverflow.com/questions\r
+ * /20762/how-do-you-remove-invalid-hexadecimal\r
+ * -characters-from-an-xml-based-data-source-pr)\r
+ */\r
+ private static String removeNonXmlChars(String inString) {\r
+ if (inString == null)\r
+ return null;\r
+\r
+ StringBuilder newString = new StringBuilder();\r
+ char ch;\r
+\r
+ for (int i = 0; i < inString.length(); i++) {\r
+\r
+ ch = inString.charAt(i);\r
+ // remove any characters outside the valid UTF-8 range as well as\r
+ // all control characters\r
+ // except tabs and new lines\r
+ if ((ch < 0x00FD && ch > 0x001F) || ch == '\t' || ch == '\n'\r
+ || ch == '\r') {\r
+ newString.append(ch);\r
+ }\r