From 50b1726893fb646aee1deb64f005ab7ef6989f79 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 3 May 2012 00:01:34 +0400 Subject: [PATCH] do not create strings just to create (String)Reader when we can use CharArrayReader (quite often we can get char[] form sequence) --- .../src/com/intellij/util/text/CharArrayUtil.java | 12 +++++++++--- .../intellij/lang/ant/psi/impl/AntImportsIndex.java | 6 +++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/platform/util/src/com/intellij/util/text/CharArrayUtil.java b/platform/util/src/com/intellij/util/text/CharArrayUtil.java index 9cdd22360386..164b1ad9eb9d 100644 --- a/platform/util/src/com/intellij/util/text/CharArrayUtil.java +++ b/platform/util/src/com/intellij/util/text/CharArrayUtil.java @@ -19,9 +19,7 @@ import com.intellij.openapi.util.TextRange; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; +import java.io.*; import java.nio.CharBuffer; import java.util.ArrayList; import java.util.List; @@ -547,4 +545,12 @@ public class CharArrayUtil { } return true; } + + public static Reader readerFromCharSequence(CharSequence text) { + Reader reader; + char[] chars = fromSequenceWithoutCopying(text); + if (chars != null) reader = new CharArrayReader(chars, 0, text.length()); + else reader = new StringReader(text.toString()); + return reader; + } } diff --git a/plugins/ant/src/com/intellij/lang/ant/psi/impl/AntImportsIndex.java b/plugins/ant/src/com/intellij/lang/ant/psi/impl/AntImportsIndex.java index e64a45dbeddd..a466ef4bf23b 100644 --- a/plugins/ant/src/com/intellij/lang/ant/psi/impl/AntImportsIndex.java +++ b/plugins/ant/src/com/intellij/lang/ant/psi/impl/AntImportsIndex.java @@ -20,10 +20,10 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.indexing.*; import com.intellij.util.io.EnumeratorIntegerDescriptor; import com.intellij.util.io.KeyDescriptor; +import com.intellij.util.text.CharArrayUtil; import com.intellij.util.xml.NanoXmlUtil; import org.jetbrains.annotations.NotNull; -import java.io.StringReader; import java.util.HashMap; import java.util.Map; @@ -41,8 +41,8 @@ public class AntImportsIndex extends ScalarIndexExtension{ @NotNull public Map map(final FileContent inputData) { final Map map = new HashMap(); - - NanoXmlUtil.parse(new StringReader(inputData.getContentAsText().toString()), new NanoXmlUtil.IXMLBuilderAdapter() { + + NanoXmlUtil.parse(CharArrayUtil.readerFromCharSequence(inputData.getContentAsText()), new NanoXmlUtil.IXMLBuilderAdapter() { private boolean isFirstElement = true; @Override public void startElement(final String elemName, final String nsPrefix, final String nsURI, final String systemID, final int lineNr) throws Exception {