[onionoo/master] Use Apache Common Lang's StringUtils.replace correctly.

commit 24d9e5128c8d823a86d1ccc011f6d058e414c709 Author: Karsten Loesing <karsten.loesing@gmx.net> Date: Wed Feb 25 11:58:09 2015 +0100 Use Apache Common Lang's StringUtils.replace correctly. When we switched from String.replaceAll to StringUtils.replaceEach for performance reasons, we forgot to change the passed regular expression into a simple string. That's why some of our replacements didn't work out as expected. Bug introduced in f660e24be80b2efed1423b9ebf912377ccea49d5. --- src/main/java/org/torproject/onionoo/docs/DetailsDocument.java | 2 +- src/main/java/org/torproject/onionoo/docs/DetailsStatus.java | 2 +- src/main/java/org/torproject/onionoo/docs/DocumentStore.java | 2 +- src/main/java/org/torproject/onionoo/server/ResponseBuilder.java | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java b/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java index 06b74cf..99a98cb 100644 --- a/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java +++ b/src/main/java/org/torproject/onionoo/docs/DetailsDocument.java @@ -22,7 +22,7 @@ public class DetailsDocument extends Document { * '\'. */ private static String escapeJSON(String s) { return StringUtils.replaceEach(StringEscapeUtils.escapeEcmaScript(s), - new String[] { "\\\\'" }, new String[] { "'" }); + new String[] { "\\'" }, new String[] { "'" }); } private static String unescapeJSON(String s) { return StringEscapeUtils.unescapeEcmaScript(StringUtils.replaceEach(s, diff --git a/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java b/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java index f38d7e8..ff951ce 100644 --- a/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java +++ b/src/main/java/org/torproject/onionoo/docs/DetailsStatus.java @@ -22,7 +22,7 @@ public class DetailsStatus extends Document { * '\'. */ private static String escapeJSON(String s) { return StringUtils.replaceEach(StringEscapeUtils.escapeEcmaScript(s), - new String[] { "\\\\'" }, new String[] { "'" }); + new String[] { "\\'" }, new String[] { "'" }); } private static String unescapeJSON(String s) { return StringEscapeUtils.unescapeEcmaScript(StringUtils.replaceEach(s, diff --git a/src/main/java/org/torproject/onionoo/docs/DocumentStore.java b/src/main/java/org/torproject/onionoo/docs/DocumentStore.java index 974f4c1..69646f1 100644 --- a/src/main/java/org/torproject/onionoo/docs/DocumentStore.java +++ b/src/main/java/org/torproject/onionoo/docs/DocumentStore.java @@ -316,7 +316,7 @@ public class DocumentStore { * this string, it escapes the \ to \\, hence writes \\u00F2. We * need to undo this and change \\u00F2 back to \u00F2. */ documentString = StringUtils.replace(gson.toJson(document), - "\\\\\\\\u", "\\\\u"); + "\\\\u", "\\u"); /* Existing details statuses don't contain opening and closing curly * brackets, so we should remove them from new details statuses, * too. */ diff --git a/src/main/java/org/torproject/onionoo/server/ResponseBuilder.java b/src/main/java/org/torproject/onionoo/server/ResponseBuilder.java index 371b79f..d1e7f23 100644 --- a/src/main/java/org/torproject/onionoo/server/ResponseBuilder.java +++ b/src/main/java/org/torproject/onionoo/server/ResponseBuilder.java @@ -6,6 +6,7 @@ import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang3.StringUtils; import org.torproject.onionoo.docs.BandwidthDocument; import org.torproject.onionoo.docs.ClientsDocument; import org.torproject.onionoo.docs.DetailsDocument; @@ -274,7 +275,7 @@ public class ResponseBuilder { /* Whenever we provide Gson with a string containing an escaped * non-ASCII character like \u00F2, it escapes the \ to \\, which * we need to undo before including the string in a response. */ - return gson.toJson(dd).replaceAll("\\\\\\\\u", "\\\\u"); + return StringUtils.replace(gson.toJson(dd), "\\\\u", "\\u"); } else { // TODO We should probably log that we didn't find a details // document that we expected to exist.
participants (1)
-
karsten@torproject.org