From 968cc3909d8ed215fec2dd9cb9f1fad65e973daf Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 6 Jul 2010 16:38:28 +0000 Subject: [PATCH] Deal with special characters in logs git-svn-id: https://svn.argeo.org/slc/trunk@3650 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../argeo/slc/process/SlcExecutionStep.java | 30 ++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/process/SlcExecutionStep.java b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/process/SlcExecutionStep.java index 235b617e5..f3319bbe6 100644 --- a/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/process/SlcExecutionStep.java +++ b/runtime/org.argeo.slc.specs/src/main/java/org/argeo/slc/process/SlcExecutionStep.java @@ -87,7 +87,35 @@ public class SlcExecutionStep { StringTokenizer st = new StringTokenizer(log, "\n"); while (st.hasMoreTokens()) - logLines.add(st.nextToken()); + logLines.add(removeNonXmlChars(st.nextToken())); + } + + /** + * Removes non XML compliant characters (from + * http://stackoverflow.com/questions + * /20762/how-do-you-remove-invalid-hexadecimal + * -characters-from-an-xml-based-data-source-pr) + */ + private static String removeNonXmlChars(String inString) { + if (inString == null) + return null; + + StringBuilder newString = new StringBuilder(); + char ch; + + for (int i = 0; i < inString.length(); i++) { + + ch = inString.charAt(i); + // remove any characters outside the valid UTF-8 range as well as + // all control characters + // except tabs and new lines + if ((ch < 0x00FD && ch > 0x001F) || ch == '\t' || ch == '\n' + || ch == '\r') { + newString.append(ch); + } + } + return newString.toString(); + } @Override -- 2.39.5