From 4ca96f6b41eab8cebb8d1b7a3a21c68fb3521ec8 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 31 Jan 2013 12:40:36 +0400 Subject: [PATCH 1/3] IDEA-94941 New Project By Template: for JavaEEWebModule incorrect artifact is created [nik] --- .../templates/TemplateModuleBuilder.java | 33 +++++++++++++++---- .../pointers/FacetPointersManagerImpl.java | 1 + 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java b/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java index 525aa27e1a77..c6ff355b7c17 100644 --- a/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java +++ b/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java @@ -35,6 +35,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ex.ProjectManagerEx; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; +import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.NullableComputable; @@ -43,6 +44,8 @@ import com.intellij.openapi.util.io.StreamUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.newvfs.RefreshQueue; +import com.intellij.packaging.artifacts.Artifact; +import com.intellij.packaging.artifacts.ArtifactManager; import com.intellij.platform.templates.github.ZipUtil; import com.intellij.util.NullableFunction; import com.intellij.util.containers.ContainerUtil; @@ -99,17 +102,33 @@ public class TemplateModuleBuilder extends ModuleBuilder { public void run() { try { setupModule(module); - ModifiableModuleModel modifiableModuleModel = ModuleManager.getInstance(project).getModifiableModel(); - modifiableModuleModel.renameModule(module, module.getProject().getName()); - modifiableModuleModel.commit(); - fixModuleName(module); } catch (ConfigurationException e) { LOG.error(e); } - catch (ModuleWithNameAlreadyExists exists) { - // do nothing - } + } + }); + + StartupManager.getInstance(project).registerPostStartupActivity(new Runnable() { + @Override + public void run() { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + try { + Artifact[] artifacts = ArtifactManager.getInstance(project).getArtifacts(); + + ModifiableModuleModel modifiableModuleModel = ModuleManager.getInstance(project).getModifiableModel(); + modifiableModuleModel.renameModule(module, module.getProject().getName()); + modifiableModuleModel.commit(); + artifacts = ArtifactManager.getInstance(project).getArtifacts(); + fixModuleName(module); + } + catch (ModuleWithNameAlreadyExists exists) { + // do nothing + } + } + }); } }); return module; diff --git a/platform/lang-impl/src/com/intellij/facet/impl/pointers/FacetPointersManagerImpl.java b/platform/lang-impl/src/com/intellij/facet/impl/pointers/FacetPointersManagerImpl.java index 6adb9767a845..6237cc55fd18 100644 --- a/platform/lang-impl/src/com/intellij/facet/impl/pointers/FacetPointersManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/facet/impl/pointers/FacetPointersManagerImpl.java @@ -204,6 +204,7 @@ public class FacetPointersManagerImpl extends FacetPointersManager implements Pr final MessageBusConnection connection = module.getMessageBus().connect(); myModule2Connection.put(module, connection); connection.subscribe(FacetManager.FACETS_TOPIC, myFacetListener); + refreshPointers(module); } public void moduleRemoved(Project project, final Module module) { From ee69ba2e7a119f8f028916fd8b8affb92c0dc5c5 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 31 Jan 2013 12:43:54 +0400 Subject: [PATCH 2/3] cleanup --- .../intellij/platform/templates/TemplateModuleBuilder.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java b/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java index c6ff355b7c17..52acb6471a16 100644 --- a/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java +++ b/java/idea-ui/src/com/intellij/platform/templates/TemplateModuleBuilder.java @@ -44,8 +44,6 @@ import com.intellij.openapi.util.io.StreamUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.newvfs.RefreshQueue; -import com.intellij.packaging.artifacts.Artifact; -import com.intellij.packaging.artifacts.ArtifactManager; import com.intellij.platform.templates.github.ZipUtil; import com.intellij.util.NullableFunction; import com.intellij.util.containers.ContainerUtil; @@ -116,12 +114,9 @@ public class TemplateModuleBuilder extends ModuleBuilder { @Override public void run() { try { - Artifact[] artifacts = ArtifactManager.getInstance(project).getArtifacts(); - ModifiableModuleModel modifiableModuleModel = ModuleManager.getInstance(project).getModifiableModel(); modifiableModuleModel.renameModule(module, module.getProject().getName()); modifiableModuleModel.commit(); - artifacts = ArtifactManager.getInstance(project).getArtifacts(); fixModuleName(module); } catch (ModuleWithNameAlreadyExists exists) { From ad698630cf4839480b7f2cd8968f37404e90996b Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 31 Jan 2013 12:59:11 +0400 Subject: [PATCH 3/3] fixed updating reference to facets when just added module is renamed --- .../facet/impl/pointers/FacetPointersManagerImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/facet/impl/pointers/FacetPointersManagerImpl.java b/platform/lang-impl/src/com/intellij/facet/impl/pointers/FacetPointersManagerImpl.java index 6237cc55fd18..235c3e652a9b 100644 --- a/platform/lang-impl/src/com/intellij/facet/impl/pointers/FacetPointersManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/facet/impl/pointers/FacetPointersManagerImpl.java @@ -92,6 +92,11 @@ public class FacetPointersManagerImpl extends FacetPointersManager implements Pr public void initComponent() { final FacetManagerListener facetListener = new FacetManagerAdapter() { + @Override + public void facetAdded(@NotNull Facet facet) { + refreshPointers(facet.getModule()); + } + @Override public void beforeFacetRenamed(@NotNull Facet facet) { final FacetPointerImpl pointer = myPointers.get(constructId(facet));