StringInterner is enough, we don't need to use WeakStringInterner

This commit is contained in:
Vladimir Krivosheev
2014-10-17 14:21:19 +02:00
parent cd1bbdb027
commit b96ba23fc9
4 changed files with 26 additions and 28 deletions
@@ -43,7 +43,7 @@ import com.intellij.util.ArrayUtil;
import com.intellij.util.Consumer;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.WeakStringInterner;
import com.intellij.util.containers.StringInterner;
import com.intellij.util.graph.CachingSemiGraph;
import com.intellij.util.graph.DFSTBuilder;
import com.intellij.util.graph.GraphGenerator;
@@ -267,15 +267,12 @@ public class InspectionProfileImpl extends ProfileEx implements ModifiableModel,
((SeverityProvider)getProfileManager()).getOwnSeverityRegistrar().readExternal(highlightElement);
}
WeakStringInterner interner = new WeakStringInterner();
for (final Object o : element.getChildren(INSPECTION_TOOL_TAG)) {
StringInterner interner = new StringInterner();
for (Element toolElement : element.getChildren(INSPECTION_TOOL_TAG)) {
// make clone to avoid retaining memory via o.parent pointers
Element toolElement = ((Element)o).clone();
toolElement = toolElement.clone();
JDOMUtil.internElement(toolElement, interner);
String toolClassName = toolElement.getAttributeValue(CLASS_TAG);
myDeinstalledInspectionsSettings.put(toolClassName, toolElement);
myDeinstalledInspectionsSettings.put(toolElement.getAttributeValue(CLASS_TAG), toolElement);
}
}
@@ -31,6 +31,7 @@ import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.util.NullableLazyValue;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.ArrayUtil;
import com.intellij.util.SmartList;
import com.intellij.util.containers.MultiMap;
import com.intellij.util.containers.StringInterner;
import com.intellij.util.containers.WeakStringInterner;
@@ -120,19 +121,19 @@ public class IdeaPluginDescriptorImpl implements IdeaPluginDescriptor {
}
@Nullable
private static List<Element> copyElements(final Element[] elements, final WeakStringInterner interner) {
if (elements != null) {
List<Element> result = new ArrayList<Element>();
for (Element extensionsRoot : elements) {
for (final Object o : extensionsRoot.getChildren()) {
Element element = (Element)o;
JDOMUtil.internElement(element, interner);
result.add(element);
}
}
return result;
private static List<Element> copyElements(@Nullable Element[] elements, StringInterner interner) {
if (elements == null || elements.length == 0) {
return null;
}
return null;
List<Element> result = new SmartList<Element>();
for (Element extensionsRoot : elements) {
for (Element element : extensionsRoot.getChildren()) {
JDOMUtil.internElement(element, interner);
result.add(element);
}
}
return result;
}
@SuppressWarnings({"HardCodedStringLiteral"})
@@ -167,7 +168,7 @@ public class IdeaPluginDescriptorImpl implements IdeaPluginDescriptor {
public void readExternal(@NotNull Document document, @NotNull URL url, boolean ignoreMissingInclude) throws InvalidDataException, FileNotFoundException {
document = JDOMXIncluder.resolve(document, url.toExternalForm(), ignoreMissingInclude);
Element rootElement = document.getRootElement();
JDOMUtil.internElement(rootElement, new WeakStringInterner());
JDOMUtil.internElement(rootElement, new StringInterner());
readExternal(document.getRootElement());
}
@@ -267,7 +268,7 @@ public class IdeaPluginDescriptorImpl implements IdeaPluginDescriptor {
if (myProjectComponents == null) myProjectComponents = ComponentConfig.EMPTY_ARRAY;
if (myModuleComponents == null) myModuleComponents = ComponentConfig.EMPTY_ARRAY;
WeakStringInterner interner = new WeakStringInterner();
StringInterner interner = new StringInterner();
List<Element> extensions = copyElements(pluginBean.extensions, interner);
if (extensions != null) {
myExtensions = new MultiMap<String, Element>();
@@ -65,7 +65,7 @@ public class RunConfigurationExtensionsManager<U extends RunConfigurationBase, T
if (!found) {
List<Element> copy = new ArrayList<Element>(children.size());
for (Element child : children) {
Element clone = (Element)child.clone();
Element clone = child.clone();
JDOMUtil.internElement(clone, myInterner);
copy.add(clone);
}
@@ -87,8 +87,7 @@ public class RunConfigurationExtensionsManager<U extends RunConfigurationBase, T
final List<Element> elements = configuration.getCopyableUserData(RUN_EXTENSIONS);
if (elements != null) {
for (Element el : elements) {
final String name = el.getAttributeValue(getIdAttrName());
map.put(name, (Element)el.clone());
map.put(el.getAttributeValue(getIdAttrName()), el.clone());
}
}
@@ -23,7 +23,8 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.extensions.ExtensionException;
import com.intellij.openapi.util.*;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.containers.WeakStringInterner;
import com.intellij.util.SmartList;
import com.intellij.util.containers.StringInterner;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -229,7 +230,7 @@ public class RunnerAndConfigurationSettingsImpl implements JDOMExternalizable, C
myConfiguration.readExternal(element);
List<Element> runners = element.getChildren(RUNNER_ELEMENT);
myUnloadedRunnerSettings = null;
WeakStringInterner interner = new WeakStringInterner();
StringInterner interner = new StringInterner();
for (final Element runnerElement : runners) {
String id = runnerElement.getAttributeValue(RUNNER_ID);
ProgramRunner runner = RunnerRegistry.getInstance().findRunnerById(id);
@@ -241,7 +242,7 @@ public class RunnerAndConfigurationSettingsImpl implements JDOMExternalizable, C
myRunnerSettings.put(runner, settings);
}
else {
if (myUnloadedRunnerSettings == null) myUnloadedRunnerSettings = new ArrayList<Element>(1);
if (myUnloadedRunnerSettings == null) myUnloadedRunnerSettings = new SmartList<Element>();
JDOMUtil.internElement(runnerElement, interner);
myUnloadedRunnerSettings.add(runnerElement);
}