diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java index 45ead827bcc7..62d13f4c604a 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ModulesConfigurator.java @@ -29,6 +29,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; @@ -37,7 +38,6 @@ import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ContentEntry; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootModel; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.roots.impl.ProjectRootManagerImpl; import com.intellij.openapi.roots.ui.configuration.actions.ModuleDeleteProvider; import com.intellij.openapi.roots.ui.configuration.projectRoot.ModuleStructureConfigurable; @@ -311,7 +311,7 @@ public class ModulesConfigurator implements ModulesProvider, ModuleEditor.Change public void run() { try { final ModifiableRootModel[] rootModels = models.toArray(new ModifiableRootModel[models.size()]); - ModuleRootManagerImpl.multiCommit(rootModels, myModuleModel); + ModifiableModelCommitter.multiCommit(rootModels, myModuleModel); myModuleModelCommitted = true; myFacetsConfigurator.commitFacets(); diff --git a/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java b/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java index 73eb2566108b..b37502c52ab8 100644 --- a/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImplementationHelperImpl.java @@ -25,9 +25,9 @@ import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.ModuleUtil; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.wm.ToolWindow; @@ -121,7 +121,7 @@ public class PsiPackageImplementationHelperImpl extends PsiPackageImplementation if (!modelsToCommit.isEmpty()) { ModifiableRootModel[] rootModels = modelsToCommit.toArray(new ModifiableRootModel[modelsToCommit.size()]); if (rootModels.length > 0) { - ModuleRootManagerImpl.multiCommit(rootModels, ModuleManager.getInstance(rootModels[0].getProject()).getModifiableModel()); + ModifiableModelCommitter.multiCommit(rootModels, ModuleManager.getInstance(rootModels[0].getProject()).getModifiableModel()); } return true; } else { diff --git a/java/java-tests/testSrc/com/intellij/roots/MultiModuleEditingTest.java b/java/java-tests/testSrc/com/intellij/roots/MultiModuleEditingTest.java index 52e3d774acc6..39e9049f68cd 100644 --- a/java/java-tests/testSrc/com/intellij/roots/MultiModuleEditingTest.java +++ b/java/java-tests/testSrc/com/intellij/roots/MultiModuleEditingTest.java @@ -22,12 +22,12 @@ import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.StdModuleTypes; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.project.ModuleAdapter; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ContentEntry; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.util.Computable; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; @@ -129,7 +129,7 @@ public class MultiModuleEditingTest extends ModuleTestCase { ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { - ModuleRootManagerImpl.multiCommit(new ModifiableRootModel[]{rootModelB, rootModelA}, moduleModel); + ModifiableModelCommitter.multiCommit(new ModifiableRootModel[]{rootModelB, rootModelA}, moduleModel); } }); } @@ -166,7 +166,7 @@ public class MultiModuleEditingTest extends ModuleTestCase { ApplicationManager.getApplication().runWriteAction(new Runnable() { @Override public void run() { - ModuleRootManagerImpl.multiCommit(new ModifiableRootModel[]{rootModelB}, moduleModel); + ModifiableModelCommitter.multiCommit(new ModifiableRootModel[]{rootModelB}, moduleModel); } }); } diff --git a/java/java-tests/testSrc/com/intellij/roots/RootsChangedTest.java b/java/java-tests/testSrc/com/intellij/roots/RootsChangedTest.java index 7a2856b828a3..c2f75d32dd41 100644 --- a/java/java-tests/testSrc/com/intellij/roots/RootsChangedTest.java +++ b/java/java-tests/testSrc/com/intellij/roots/RootsChangedTest.java @@ -18,12 +18,12 @@ package com.intellij.roots; import com.intellij.ProjectTopics; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.projectRoots.ProjectJdkTable; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.SdkModificator; import com.intellij.openapi.projectRoots.impl.JavaSdkImpl; import com.intellij.openapi.roots.*; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar; @@ -93,7 +93,7 @@ public class RootsChangedTest extends ModuleTestCase { rootModelB.setSdk(jdk); ModifiableRootModel[] rootModels = new ModifiableRootModel[]{rootModelA, rootModelB}; if (rootModels.length > 0) { - ModuleRootManagerImpl.multiCommit(rootModels, ModuleManager.getInstance(rootModels[0].getProject()).getModifiableModel()); + ModifiableModelCommitter.multiCommit(rootModels, ModuleManager.getInstance(rootModels[0].getProject()).getModifiableModel()); } assertEventsCount(1); @@ -128,7 +128,7 @@ public class RootsChangedTest extends ModuleTestCase { rootModelB.inheritSdk(); ModifiableRootModel[] rootModels = new ModifiableRootModel[]{rootModelA, rootModelB}; if (rootModels.length > 0) { - ModuleRootManagerImpl.multiCommit(rootModels, ModuleManager.getInstance(rootModels[0].getProject()).getModifiableModel()); + ModifiableModelCommitter.multiCommit(rootModels, ModuleManager.getInstance(rootModels[0].getProject()).getModifiableModel()); } assertEventsCount(1); @@ -163,7 +163,7 @@ public class RootsChangedTest extends ModuleTestCase { rootModelB.addInvalidLibrary("Q", libraryTable.getTableLevel()); ModifiableRootModel[] rootModels = new ModifiableRootModel[]{rootModelA, rootModelB}; if (rootModels.length > 0) { - ModuleRootManagerImpl.multiCommit(rootModels, ModuleManager.getInstance(rootModels[0].getProject()).getModifiableModel()); + ModifiableModelCommitter.multiCommit(rootModels, ModuleManager.getInstance(rootModels[0].getProject()).getModifiableModel()); } assertEventsCount(1); @@ -223,7 +223,7 @@ public class RootsChangedTest extends ModuleTestCase { ModifiableRootModel[] rootModels = new ModifiableRootModel[]{rootModelA, rootModelB}; if (rootModels.length > 0) { - ModuleRootManagerImpl.multiCommit(rootModels, ModuleManager.getInstance(rootModels[0].getProject()).getModifiableModel()); + ModifiableModelCommitter.multiCommit(rootModels, ModuleManager.getInstance(rootModels[0].getProject()).getModifiableModel()); } assertEventsCount(1); diff --git a/platform/lang-impl/src/com/intellij/ide/impl/PatchProjectUtil.java b/platform/lang-impl/src/com/intellij/ide/impl/PatchProjectUtil.java index 3f48822874d1..aa3f1174dca1 100644 --- a/platform/lang-impl/src/com/intellij/ide/impl/PatchProjectUtil.java +++ b/platform/lang-impl/src/com/intellij/ide/impl/PatchProjectUtil.java @@ -23,9 +23,9 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtil; @@ -95,7 +95,7 @@ public class PatchProjectUtil { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { - ModuleRootManagerImpl.multiCommit(models, modulesModel); + ModifiableModelCommitter.multiCommit(models, modulesModel); } }); } diff --git a/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java b/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java index 77b932b78ed2..4faca390161c 100644 --- a/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java @@ -36,7 +36,7 @@ import com.intellij.openapi.project.impl.ProjectLifecycleListener; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.ex.ProjectRootManagerEx; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.util.*; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; @@ -841,7 +841,7 @@ public class ModuleManagerImpl extends ModuleManager implements ProjectComponent public void commit() { ModifiableRootModel[] rootModels = new ModifiableRootModel[0]; - ModuleRootManagerImpl.multiCommit(rootModels, this); + ModifiableModelCommitter.multiCommit(rootModels, this); } public void commitWithRunnable(Runnable runnable) { diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java new file mode 100644 index 000000000000..1ba173dfe919 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/ModifiableModelCommitter.java @@ -0,0 +1,136 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.roots.impl; + +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.module.ModifiableModuleModel; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.impl.ModuleManagerImpl; +import com.intellij.openapi.roots.ModifiableRootModel; +import com.intellij.openapi.roots.ModuleOrderEntry; +import com.intellij.openapi.roots.ModuleRootManager; +import com.intellij.openapi.roots.RootPolicy; +import com.intellij.util.ArrayUtil; +import com.intellij.util.graph.CachingSemiGraph; +import com.intellij.util.graph.DFSTBuilder; +import com.intellij.util.graph.GraphGenerator; + +import java.util.*; + +public class ModifiableModelCommitter { + private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.module.impl.ModifiableModelCommitter"); + + public static void multiCommit(ModifiableRootModel[] rootModels, + ModifiableModuleModel moduleModel) { + ApplicationManager.getApplication().assertWriteAccessAllowed(); + + final List modelsToCommit = getSortedChangedModels(rootModels, moduleModel); + + final List modelsToDispose = new ArrayList(Arrays.asList(rootModels)); + modelsToDispose.removeAll(modelsToCommit); + + Runnable runnable = new Runnable() { + public void run() { + for (RootModelImpl rootModel : modelsToCommit) { + commitModelWithoutEvents(rootModel); + } + + for (ModifiableRootModel model : modelsToDispose) { + model.dispose(); + } + } + }; + ModuleManagerImpl.commitModelWithRunnable(moduleModel, runnable); + + } + + private static void commitModelWithoutEvents(RootModelImpl rootModel) { + ModuleRootManagerImpl.doCommit(rootModel); + } + + private static List getSortedChangedModels(ModifiableRootModel[] _rootModels, + final ModifiableModuleModel moduleModel) { + List rootModels = new ArrayList(); + for (ModifiableRootModel _rootModel : _rootModels) { + RootModelImpl rootModel = (RootModelImpl)_rootModel; + if (rootModel.isChanged()) { + rootModels.add(rootModel); + } + } + + sortRootModels(rootModels, moduleModel); + return rootModels; + } + + private static void sortRootModels(List rootModels, final ModifiableModuleModel moduleModel) { + DFSTBuilder builder = createDFSTBuilder(rootModels, moduleModel); + + final Comparator comparator = builder.comparator(); + Collections.sort(rootModels, comparator); + } + + private static DFSTBuilder createDFSTBuilder(List rootModels, final ModifiableModuleModel moduleModel) { + final Map nameToModel = new com.intellij.util.containers.HashMap(); + for (final RootModelImpl rootModel : rootModels) { + final String name = rootModel.getModule().getName(); + LOG.assertTrue(!nameToModel.containsKey(name), name); + nameToModel.put(name, rootModel); + } + final Module[] modules = moduleModel.getModules(); + for (final Module module : modules) { + final String name = module.getName(); + if (!nameToModel.containsKey(name)) { + final RootModelImpl rootModel = ((ModuleRootManagerImpl)ModuleRootManager.getInstance(module)).getRootModel(); + nameToModel.put(name, rootModel); + } + } + final Collection allRootModels = nameToModel.values(); + return new DFSTBuilder(new GraphGenerator(new CachingSemiGraph(new GraphGenerator.SemiGraph() { + public Collection getNodes() { + return allRootModels; + } + + public Iterator getIn(RootModelImpl rootModel) { + final List namesList = rootModel.orderEntries().withoutSdk().withoutLibraries().withoutModuleSourceEntries() + .process(new RootPolicy>() { + public ArrayList visitModuleOrderEntry(ModuleOrderEntry moduleOrderEntry, ArrayList strings) { + final Module module = moduleOrderEntry.getModule(); + if (module != null && !module.isDisposed()) { + strings.add(module.getName()); + } else { + final Module moduleToBeRenamed = moduleModel.getModuleToBeRenamed(moduleOrderEntry.getModuleName()); + if (moduleToBeRenamed != null && !moduleToBeRenamed.isDisposed()) { + strings.add(moduleToBeRenamed.getName()); + } + } + return strings; + } + }, new ArrayList()); + + final String[] names = ArrayUtil.toStringArray(namesList); + List result = new ArrayList(); + for (String name : names) { + final RootModelImpl depRootModel = nameToModel.get(name); + if (depRootModel != null) { // it is ok not to find one + result.add(depRootModel); + } + } + return result.iterator(); + } + }))); + } +} diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/actions/ModuleDeleteProvider.java b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/actions/ModuleDeleteProvider.java index 674c22999570..778fa7c4e0ee 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/actions/ModuleDeleteProvider.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/ui/configuration/actions/ModuleDeleteProvider.java @@ -26,13 +26,13 @@ import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleOrderEntry; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.OrderEntry; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.text.StringUtil; import com.intellij.projectImport.ProjectAttachProcessor; @@ -98,7 +98,7 @@ public class ModuleDeleteProvider implements DeleteProvider, TitledHandler { removeModule(module, modifiableModel, otherModuleRootModels.values(), modifiableModuleModel); } final ModifiableRootModel[] modifiableRootModels = otherModuleRootModels.values().toArray(new ModifiableRootModel[otherModuleRootModels.size()]); - ModuleRootManagerImpl.multiCommit(modifiableRootModels, modifiableModuleModel); + ModifiableModelCommitter.multiCommit(modifiableRootModels, modifiableModuleModel); } }; ApplicationManager.getApplication().runWriteAction(action); diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModuleRootManagerImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModuleRootManagerImpl.java index f25f39bc2f14..233b89e0744a 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModuleRootManagerImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/ModuleRootManagerImpl.java @@ -23,7 +23,6 @@ import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleComponent; import com.intellij.openapi.module.ModuleManager; -import com.intellij.openapi.module.impl.ModuleManagerImpl; import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.*; @@ -35,16 +34,13 @@ import com.intellij.openapi.util.JDOMExternalizable; import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager; -import com.intellij.util.ArrayUtil; -import com.intellij.util.containers.HashMap; -import com.intellij.util.graph.CachingSemiGraph; -import com.intellij.util.graph.DFSTBuilder; -import com.intellij.util.graph.GraphGenerator; import gnu.trove.THashMap; import org.jdom.Element; import org.jetbrains.annotations.NotNull; -import java.util.*; +import java.util.ArrayList; +import java.util.Map; +import java.util.Set; @State( @@ -205,57 +201,15 @@ public class ModuleRootManagerImpl extends ModuleRootManager implements ModuleCo final Project project = myModule.getProject(); final ModifiableModuleModel moduleModel = ModuleManager.getInstance(project).getModifiableModel(); - multiCommit(new ModifiableRootModel[]{rootModel}, moduleModel); + ModifiableModelCommitter.multiCommit(new ModifiableRootModel[]{rootModel}, moduleModel); } - private static void commitModelWithoutEvents(RootModelImpl rootModel) { - doCommit(rootModel); - } - - private static void doCommit(RootModelImpl rootModel) { + static void doCommit(RootModelImpl rootModel) { rootModel.docommit(); rootModel.dispose(); } - public static void multiCommit(ModifiableRootModel[] rootModels, - ModifiableModuleModel moduleModel) { - ApplicationManager.getApplication().assertWriteAccessAllowed(); - - final List modelsToCommit = getSortedChangedModels(rootModels, moduleModel); - - final List modelsToDispose = new ArrayList(Arrays.asList(rootModels)); - modelsToDispose.removeAll(modelsToCommit); - - Runnable runnable = new Runnable() { - public void run() { - for (RootModelImpl rootModel : modelsToCommit) { - commitModelWithoutEvents(rootModel); - } - - for (ModifiableRootModel model : modelsToDispose) { - model.dispose(); - } - } - }; - ModuleManagerImpl.commitModelWithRunnable(moduleModel, runnable); - - } - - private static List getSortedChangedModels(ModifiableRootModel[] _rootModels, - final ModifiableModuleModel moduleModel) { - List rootModels = new ArrayList(); - for (ModifiableRootModel _rootModel : _rootModels) { - RootModelImpl rootModel = (RootModelImpl)_rootModel; - if (rootModel.isChanged()) { - rootModels.add(rootModel); - } - } - - sortRootModels(rootModels, moduleModel); - return rootModels; - } - @NotNull public Module[] getDependencies() { return myRootModel.getModuleDependencies(); @@ -403,65 +357,6 @@ public class ModuleRootManagerImpl extends ModuleRootManager implements ModuleCo } - private static void sortRootModels(List rootModels, final ModifiableModuleModel moduleModel) { - DFSTBuilder builder = createDFSTBuilder(rootModels, moduleModel); - - final Comparator comparator = builder.comparator(); - Collections.sort(rootModels, comparator); - } - - private static DFSTBuilder createDFSTBuilder(List rootModels, final ModifiableModuleModel moduleModel) { - final Map nameToModel = new HashMap(); - for (final RootModelImpl rootModel : rootModels) { - final String name = rootModel.getModule().getName(); - LOG.assertTrue(!nameToModel.containsKey(name), name); - nameToModel.put(name, rootModel); - } - final Module[] modules = moduleModel.getModules(); - for (final Module module : modules) { - final String name = module.getName(); - if (!nameToModel.containsKey(name)) { - final RootModelImpl rootModel = ((ModuleRootManagerImpl)ModuleRootManager.getInstance(module)).myRootModel; - nameToModel.put(name, rootModel); - } - } - final Collection allRootModels = nameToModel.values(); - return new DFSTBuilder(new GraphGenerator(new CachingSemiGraph(new GraphGenerator.SemiGraph() { - public Collection getNodes() { - return allRootModels; - } - - public Iterator getIn(RootModelImpl rootModel) { - final List namesList = rootModel.orderEntries().withoutSdk().withoutLibraries().withoutModuleSourceEntries() - .process(new RootPolicy>() { - public ArrayList visitModuleOrderEntry(ModuleOrderEntry moduleOrderEntry, ArrayList strings) { - final Module module = moduleOrderEntry.getModule(); - if (module != null && !module.isDisposed()) { - strings.add(module.getName()); - } else { - final Module moduleToBeRenamed = moduleModel.getModuleToBeRenamed(moduleOrderEntry.getModuleName()); - if (moduleToBeRenamed != null && !moduleToBeRenamed.isDisposed()) { - strings.add(moduleToBeRenamed.getName()); - } - } - return strings; - } - }, new ArrayList()); - - final String[] names = ArrayUtil.toStringArray(namesList); - List result = new ArrayList(); - for (String name : names) { - final RootModelImpl depRootModel = nameToModel.get(name); - if (depRootModel != null) { // it is ok not to find one - result.add(depRootModel); - } - } - return result.iterator(); - } - }))); - } - - public void dropCaches() { myOrderRootsCache.clearCache(); } diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java index a069aaae24d0..21968c70f11a 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/importWizard/EclipseImportBuilder.java @@ -24,6 +24,7 @@ import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.StdModuleTypes; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.Task; @@ -31,7 +32,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.impl.ProjectMacrosUtil; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.roots.impl.storage.ClasspathStorage; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; @@ -291,7 +291,7 @@ public class EclipseImportBuilder extends ProjectImportBuilder implement if (model == null) { ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run(){ - ModuleRootManagerImpl.multiCommit(rootModels, moduleModel); + ModifiableModelCommitter.multiCommit(rootModels, moduleModel); } }); } diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModulesImporter.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModulesImporter.java index ea30bc3ea600..84d9ee550c4f 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModulesImporter.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/importing/GradleModulesImporter.java @@ -5,12 +5,12 @@ import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.StdModuleTypes; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.Task; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; @@ -132,7 +132,7 @@ public class GradleModulesImporter { } finally { ModifiableRootModel[] modelsAsArray = rootModels.toArray(new ModifiableRootModel[rootModels.size()]); - ModuleRootManagerImpl.multiCommit(modelsAsArray, model); + ModifiableModelCommitter.multiCommit(modelsAsArray, model); for (GradleModule module : modules) { publisher.onImportEnd(module); } @@ -403,7 +403,7 @@ public class GradleModulesImporter { ProjectRootManager projectRootManager = ProjectRootManager.getInstance(intellijProject); ModifiableRootModel[] modelsAsArray = modelsToCommit.toArray(new ModifiableRootModel[modelsToCommit.size()]); if (modelsAsArray.length > 0) { - ModuleRootManagerImpl.multiCommit(modelsAsArray, ModuleManager.getInstance(modelsAsArray[0].getProject()).getModifiableModel()); + ModifiableModelCommitter.multiCommit(modelsAsArray, ModuleManager.getInstance(modelsAsArray[0].getProject()).getModifiableModel()); } if (libraryMappings != null) { for (GradleLibrary library : libraryMappings.keySet()) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureUtil.java index a2f84cab39ef..a0b2aa5acae7 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureUtil.java @@ -25,9 +25,9 @@ import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.StdModuleTypes; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; import com.intellij.openapi.roots.libraries.LibraryUtil; @@ -539,7 +539,7 @@ public class MvcModuleStructureUtil { ModuleDeleteProvider.removeModule(toRemove, null, usingModels, moduleModel); ModifiableRootModel[] rootModels = usingModels.toArray(new ModifiableRootModel[usingModels.size()]); - ModuleRootManagerImpl.multiCommit(rootModels, moduleModel); + ModifiableModelCommitter.multiCommit(rootModels, moduleModel); } @NotNull diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenDefaultModifiableModelsProvider.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenDefaultModifiableModelsProvider.java index c3cf47d69432..6ad8c9d6b041 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenDefaultModifiableModelsProvider.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenDefaultModifiableModelsProvider.java @@ -21,12 +21,12 @@ import com.intellij.openapi.application.*; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.ex.ProjectRootManagerEx; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; @@ -117,7 +117,7 @@ public class MavenDefaultModifiableModelsProvider extends MavenBaseModifiableMod Collection rootModels = myRootModels.values(); ModifiableRootModel[] rootModels1 = rootModels.toArray(new ModifiableRootModel[rootModels.size()]); - ModuleRootManagerImpl.multiCommit(rootModels1, myModuleModel); + ModifiableModelCommitter.multiCommit(rootModels1, myModuleModel); for (ModifiableFacetModel each : myFacetModels.values()) { each.commit(); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java index 235e1d1f2f33..b158e037a399 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java @@ -21,9 +21,9 @@ import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.roots.impl.ModifiableModelCommitter; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModifiableRootModel; -import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; import com.intellij.openapi.util.Pair; import com.intellij.util.ArrayUtil; import gnu.trove.THashMap; @@ -71,7 +71,7 @@ public class MavenFoldersImporter { if (!rootModels.isEmpty()) { ModifiableRootModel[] modelsArray = rootModels.toArray(new ModifiableRootModel[rootModels.size()]); if (modelsArray.length > 0) { - ModuleRootManagerImpl.multiCommit(modelsArray, ModuleManager.getInstance(modelsArray[0].getProject()).getModifiableModel()); + ModifiableModelCommitter.multiCommit(modelsArray, ModuleManager.getInstance(modelsArray[0].getProject()).getModifiableModel()); } } }