From 5ae593b5afc4ce3508c65211597488bbb6575929 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 20 Oct 2009 17:46:34 +0400 Subject: [PATCH] getModules() should not show modifiable model to clients who asks for manager --- .../module/impl/ModuleManagerImpl.java | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) 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 ec571e08c9b5..f11c779dfe40 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 @@ -74,7 +74,7 @@ public class ModuleManagerImpl extends ModuleManager implements ProjectComponent private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.module.impl.ModuleManagerImpl"); public static final Key DISPOSED_MODULE_NAME = Key.create("DisposedNeverAddedModuleName"); private final Project myProject; - private ModuleModelImpl myModuleModel = new ModuleModelImpl(); + private volatile ModuleModelImpl myModuleModel = new ModuleModelImpl(); @NonNls public static final String COMPONENT_NAME = "ProjectModuleManager"; private static final String MODULE_GROUP_SEPARATOR = "/"; @@ -798,7 +798,6 @@ public class ModuleManagerImpl extends ModuleManager implements ProjectComponent public void commitWithRunnable(Runnable runnable) { commitModel(this, runnable); - myIsWritable = false; clearRenamingStuff(); } @@ -908,12 +907,25 @@ public class ModuleManagerImpl extends ModuleManager implements ProjectComponent Disposer.dispose(module); } - myModuleModel = moduleModel; - if (runnable != null) { runnable.run(); } + final Map modulesToNewNamesMap = moduleModel.myModuleToNewName; + final Set modulesToBeRenamed = modulesToNewNamesMap.keySet(); + modulesToBeRenamed.removeAll(moduleModel.myModulesToDispose); + final List modules = new ArrayList(); + for (final Module aModulesToBeRenamed : modulesToBeRenamed) { + ModuleImpl module = (ModuleImpl)aModulesToBeRenamed; + moduleModel.myPathToModule.remove(module.getModuleFilePath()); + modules.add(module); + module.rename(modulesToNewNamesMap.get(module)); + moduleModel.myPathToModule.put(module.getModuleFilePath(), module); + } + + moduleModel.myIsWritable = false; + myModuleModel = moduleModel; + for (Module module : removedModules) { fireModuleRemoved(module); cleanCachedStuff(); @@ -927,18 +939,7 @@ public class ModuleManagerImpl extends ModuleManager implements ProjectComponent fireModuleAdded(addedModule); cleanCachedStuff(); } - final Map modulesToNewNamesMap = moduleModel.myModuleToNewName; - final Set modulesToBeRenamed = modulesToNewNamesMap.keySet(); - modulesToBeRenamed.removeAll(moduleModel.myModulesToDispose); - final List modules = new ArrayList(); - for (final Module aModulesToBeRenamed : modulesToBeRenamed) { - ModuleImpl module = (ModuleImpl)aModulesToBeRenamed; - moduleModel.myPathToModule.remove(module.getModuleFilePath()); - modules.add(module); - module.rename(modulesToNewNamesMap.get(module)); - moduleModel.myPathToModule.put(module.getModuleFilePath(), module); - cleanCachedStuff(); - } + cleanCachedStuff(); fireModulesRenamed(modules); cleanCachedStuff(); }