diff --git a/platform/analysis-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java b/platform/analysis-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java index cbd26398f451..9a2213ce1634 100644 --- a/platform/analysis-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java +++ b/platform/analysis-impl/src/com/intellij/codeInspection/ex/InspectionProfileImpl.java @@ -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); } } diff --git a/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java b/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java index 0d8cdf7be6c1..de909940c0f5 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java +++ b/platform/core-impl/src/com/intellij/ide/plugins/IdeaPluginDescriptorImpl.java @@ -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 copyElements(final Element[] elements, final WeakStringInterner interner) { - if (elements != null) { - List result = new ArrayList(); - 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 copyElements(@Nullable Element[] elements, StringInterner interner) { + if (elements == null || elements.length == 0) { + return null; } - return null; + + List result = new SmartList(); + 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 extensions = copyElements(pluginBean.extensions, interner); if (extensions != null) { myExtensions = new MultiMap(); diff --git a/platform/lang-api/src/com/intellij/execution/configuration/RunConfigurationExtensionsManager.java b/platform/lang-api/src/com/intellij/execution/configuration/RunConfigurationExtensionsManager.java index b42cd249ca8e..af28f681420b 100644 --- a/platform/lang-api/src/com/intellij/execution/configuration/RunConfigurationExtensionsManager.java +++ b/platform/lang-api/src/com/intellij/execution/configuration/RunConfigurationExtensionsManager.java @@ -65,7 +65,7 @@ public class RunConfigurationExtensionsManager copy = new ArrayList(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 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()); } } diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunnerAndConfigurationSettingsImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/RunnerAndConfigurationSettingsImpl.java index 2e6d88ababd4..da69c0db290a 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunnerAndConfigurationSettingsImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunnerAndConfigurationSettingsImpl.java @@ -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 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(1); + if (myUnloadedRunnerSettings == null) myUnloadedRunnerSettings = new SmartList(); JDOMUtil.internElement(runnerElement, interner); myUnloadedRunnerSettings.add(runnerElement); }