diff options
Diffstat (limited to 'platform/util/src/com/intellij/openapi/util/JDOMUtil.java')
-rw-r--r-- | platform/util/src/com/intellij/openapi/util/JDOMUtil.java | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/platform/util/src/com/intellij/openapi/util/JDOMUtil.java b/platform/util/src/com/intellij/openapi/util/JDOMUtil.java index 2cd5ed09bfdc..c82ee6df346b 100644 --- a/platform/util/src/com/intellij/openapi/util/JDOMUtil.java +++ b/platform/util/src/com/intellij/openapi/util/JDOMUtil.java @@ -204,34 +204,34 @@ public class JDOMUtil { @NotNull private static String intern(@NotNull final StringInterner interner, @NotNull final String s) { - synchronized (interner) { - return interner.intern(s); - } + return interner.intern(s); } @NotNull - public static String legalizeText(@NotNull final String str) { - StringReader reader = new StringReader(str); - StringBuilder result = new StringBuilder(); - - while(true) { - try { - int each = reader.read(); - if (each == -1) break; + public static String legalizeText(@NotNull String str) { + return legalizeChars(str).toString(); + } - if (Verifier.isXMLCharacter(each)) { - result.append((char)each); - } else { - result.append("0x").append(StringUtil.toUpperCase(Long.toHexString(each))); - } - } - catch (IOException ignored) { - } + @NotNull + public static CharSequence legalizeChars(@NotNull CharSequence str) { + StringBuilder result = new StringBuilder(str.length()); + for (int i = 0, len = str.length(); i < len; i ++) { + appendLegalized(result, str.charAt(i)); } - - return result.toString().replaceAll("<", "<").replaceAll(">", ">"); + return result; } + public static void appendLegalized(@NotNull StringBuilder sb, char each) { + if (each == '<' || each == '>') { + sb.append(each == '<' ? "<" : ">"); + } + else if (!Verifier.isXMLCharacter(each)) { + sb.append("0x").append(StringUtil.toUpperCase(Long.toHexString(each))); + } + else { + sb.append(each); + } + } private static class EmptyTextFilter implements Filter { @Override |