From 1e7a28353a3d5e2a9e7ef52c735fc6599a264e9a Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 5 Jan 2018 19:59:27 +0100 Subject: [PATCH] IDEA-178428 Support unescaping JSON strings in Analyze stacktrace --- .../src/com/intellij/unscramble/UnscrambleDialog.java | 3 ++- .../com/intellij/unscramble/NormalizeTextTest.groovy | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/unscramble/UnscrambleDialog.java b/java/java-impl/src/com/intellij/unscramble/UnscrambleDialog.java index def23e27f7b5..1efcc5853649 100644 --- a/java/java-impl/src/com/intellij/unscramble/UnscrambleDialog.java +++ b/java/java-impl/src/com/intellij/unscramble/UnscrambleDialog.java @@ -311,7 +311,8 @@ public class UnscrambleDialog extends DialogWrapper { public static String normalizeText(@NonNls String text) { StringBuilder builder = new StringBuilder(text.length()); - text = text.replaceAll("(\\S[ \\t\\x0B\\f\\r]+)(at\\s+)", "$1\n$2"); + text = StringUtil.convertLineSeparators(StringUtil.unescapeStringCharacters(text)) + .replaceAll("(\\S[ \\t\\x0B\\f\\r]+)(at\\s+)", "$1\n$2"); String[] lines = text.split("\n"); boolean first = true; diff --git a/java/java-tests/testSrc/com/intellij/unscramble/NormalizeTextTest.groovy b/java/java-tests/testSrc/com/intellij/unscramble/NormalizeTextTest.groovy index d6649d200ccd..63d85af54c44 100644 --- a/java/java-tests/testSrc/com/intellij/unscramble/NormalizeTextTest.groovy +++ b/java/java-tests/testSrc/com/intellij/unscramble/NormalizeTextTest.groovy @@ -198,6 +198,17 @@ nid=0x898 runnable [0x4424f000] assert ThreadDumpParser.parse(UnscrambleDialog.normalizeText(text)).size() == 2 } + void testJsonEscapes() { + doTest '''\ + "error": "java.lang.RuntimeException: Error creating table\\n\\tat org.kablambda.aws.dynamodb.DBImpl.createTable(DBImpl.java:63)\\n\\tat org.kablambda.aws.handler.InstallHandler.lambda$new$1(InstallHandler.java:16)\\n\\tat org.kablambda.aws.handler.PathHandler.handle(PathHandler.java:26)\\n\\tat +''', '''\ + "error": "java.lang.RuntimeException: Error creating table +\tat org.kablambda.aws.dynamodb.DBImpl.createTable(DBImpl.java:63) +\tat org.kablambda.aws.handler.InstallHandler.lambda$new$1(InstallHandler.java:16) +\tat org.kablambda.aws.handler.PathHandler.handle(PathHandler.java:26) +\tat''' + } + private static void doTest(@NonNls String stackTrace, @NonNls String expected) { String normalized = UnscrambleDialog.normalizeText(stackTrace) assertEquals(expected, normalized)