From f2fe68c3280e812afad9d48e13214b2c74bca46d Mon Sep 17 00:00:00 2001 From: Nikolay Chashnikov Date: Thu, 10 Sep 2009 14:34:49 +0400 Subject: [PATCH] artifacts & conversion fixes --- .../impl/artifacts/ArtifactManagerImpl.java | 7 +++--- .../impl/artifacts/ArtifactModelImpl.java | 7 +++--- .../impl/artifacts/PlainArtifactType.java | 2 +- .../packaging/artifacts/ArtifactType.java | 2 +- .../artifacts/ArtifactConfigurable.java | 2 +- .../artifacts/ArtifactEditorImpl.java | 12 +++++++++ .../impl/ComponentManagerSettingsImpl.java | 5 ---- .../impl/ConversionContextImpl.java | 25 ++++++------------- .../impl/ConversionServiceImpl.java | 5 ++-- .../impl/RunManagerSettingsImpl.java | 16 ++---------- .../impl/ui/ConvertProjectDialog.java | 6 ++++- 11 files changed, 39 insertions(+), 50 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactManagerImpl.java b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactManagerImpl.java index b623908fa6ae..74114342eeab 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactManagerImpl.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactManagerImpl.java @@ -138,16 +138,17 @@ public class ArtifactManagerImpl extends ArtifactManager implements ProjectCompo LOG.info("Unknown artifact type: " + state.getArtifactType()); continue; } - + + final String artifactName = state.getName(); final CompositePackagingElement rootElement; if (element != null) { rootElement = (CompositePackagingElement)deserializeElement(element); } else { - rootElement = type.createRootElement(); + rootElement = type.createRootElement(artifactName); } - final ArtifactImpl artifact = new ArtifactImpl(state.getName(), type, state.isBuildOnMake(), rootElement, state.getOutputPath(), + final ArtifactImpl artifact = new ArtifactImpl(artifactName, type, state.isBuildOnMake(), rootElement, state.getOutputPath(), state.isClearOutputOnRebuild()); final List propertiesList = state.getPropertiesList(); for (ArtifactPropertiesState propertiesState : propertiesList) { diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactModelImpl.java b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactModelImpl.java index e0a7b73a0b17..afc605505c90 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactModelImpl.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactModelImpl.java @@ -1,7 +1,7 @@ package com.intellij.packaging.impl.artifacts; -import com.intellij.packaging.impl.artifacts.ArtifactUtil; import com.intellij.packaging.artifacts.*; +import com.intellij.packaging.elements.CompositePackagingElement; import com.intellij.util.EventDispatcher; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -51,8 +51,9 @@ public class ArtifactModelImpl extends ArtifactModelBase implements ModifiableAr public ModifiableArtifact addArtifact(@NotNull final String name, @NotNull ArtifactType artifactType) { final String outputPath = ArtifactUtil.getDefaultArtifactOutputPath(name, myArtifactManager.getProject()); - final ArtifactImpl artifact = new ArtifactImpl(generateUniqueName(name), artifactType, false, artifactType.createRootElement(), - outputPath, true); + final String artifactName = generateUniqueName(name); + final CompositePackagingElement rootElement = artifactType.createRootElement(artifactName); + final ArtifactImpl artifact = new ArtifactImpl(artifactName, artifactType, false, rootElement, outputPath, true); myOriginalArtifacts.add(artifact); myArtifact2ModifiableCopy.put(artifact, artifact); myModifiable2Original.put(artifact, artifact); diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/PlainArtifactType.java b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/PlainArtifactType.java index 750df8c0bc2b..12ff08626175 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/PlainArtifactType.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/PlainArtifactType.java @@ -45,7 +45,7 @@ public class PlainArtifactType extends ArtifactType { } @NotNull - public CompositePackagingElement createRootElement() { + public CompositePackagingElement createRootElement(@NotNull String artifactName) { return new ArtifactRootElementImpl(); } } diff --git a/java/compiler/openapi/src/com/intellij/packaging/artifacts/ArtifactType.java b/java/compiler/openapi/src/com/intellij/packaging/artifacts/ArtifactType.java index 483ada4fff40..5bd67e7d6acd 100644 --- a/java/compiler/openapi/src/com/intellij/packaging/artifacts/ArtifactType.java +++ b/java/compiler/openapi/src/com/intellij/packaging/artifacts/ArtifactType.java @@ -63,7 +63,7 @@ public abstract class ArtifactType { } @NotNull - public abstract CompositePackagingElement createRootElement(); + public abstract CompositePackagingElement createRootElement(@NotNull String artifactName); public void checkRootElement(@NotNull CompositePackagingElement rootElement, @NotNull Artifact artifact, @NotNull ArtifactValidationManager manager) { } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactConfigurable.java index 73da7a350d97..c01793edcad6 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactConfigurable.java @@ -104,7 +104,7 @@ public class ArtifactConfigurable extends NamedConfigurable { final ArtifactType selected = (ArtifactType)artifactTypeBox.getSelectedItem(); if (!Comparing.equal(selected, getArtifact().getArtifactType())) { final CompositePackagingElement element = myEditor.getRootElement(); - final CompositePackagingElement newRootElement = selected.createRootElement(); + final CompositePackagingElement newRootElement = selected.createRootElement(getArtifact().getName()); myArtifactsStructureContext.getModifiableArtifactModel().getOrCreateModifiableArtifact(myOriginalArtifact).setArtifactType(selected); if (!newRootElement.getType().equals(element.getType())) { ArtifactUtil.copyChildren(element, newRootElement, myArtifactsStructureContext.getProject()); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java index dbd3525a93eb..ddfd2ad7879c 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java @@ -23,6 +23,7 @@ import com.intellij.packaging.artifacts.ModifiableArtifact; import com.intellij.packaging.elements.CompositePackagingElement; import com.intellij.packaging.elements.PackagingElementType; import com.intellij.packaging.impl.artifacts.ArtifactUtil; +import com.intellij.packaging.impl.elements.ArchivePackagingElement; import com.intellij.packaging.ui.ManifestFileConfiguration; import com.intellij.ui.PopupHandler; import com.intellij.ui.ScrollPaneFactory; @@ -276,6 +277,17 @@ public class ArtifactEditorImpl implements ArtifactEditorEx { final String oldDefaultPath = ArtifactUtil.getDefaultArtifactOutputPath(oldArtifactName, myProject); if (Comparing.equal(oldDefaultPath, getConfiguredOutputPath())) { setOutputPath(ArtifactUtil.getDefaultArtifactOutputPath(newArtifactName, myProject)); + final CompositePackagingElement root = getRootElement(); + if (root instanceof ArchivePackagingElement) { + final String name = ((ArchivePackagingElement)root).getArchiveFileName(); + final String fileName = FileUtil.getNameWithoutExtension(name); + final String extension = FileUtil.getExtension(name); + if (fileName.equals(oldArtifactName) && extension.length() > 0) { + myLayoutTreeComponent.ensureRootIsWritable(); + ((ArchivePackagingElement)getRootElement()).setArchiveFileName(newArtifactName + "." + extension); + myLayoutTreeComponent.updateTreeNodesPresentation(); + } + } } } diff --git a/platform/lang-impl/src/com/intellij/conversion/impl/ComponentManagerSettingsImpl.java b/platform/lang-impl/src/com/intellij/conversion/impl/ComponentManagerSettingsImpl.java index 45a8bfbb9bbf..5174ba7e16ad 100644 --- a/platform/lang-impl/src/com/intellij/conversion/impl/ComponentManagerSettingsImpl.java +++ b/platform/lang-impl/src/com/intellij/conversion/impl/ComponentManagerSettingsImpl.java @@ -8,7 +8,6 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import java.io.File; -import java.io.IOException; /** * @author nik @@ -36,10 +35,6 @@ public class ComponentManagerSettingsImpl implements ComponentManagerSettings { return mySettingsFile.findComponent(componentName); } - public void save() throws IOException { - mySettingsFile.save(); - } - public File getFile() { return mySettingsFile.getFile(); } diff --git a/platform/lang-impl/src/com/intellij/conversion/impl/ConversionContextImpl.java b/platform/lang-impl/src/com/intellij/conversion/impl/ConversionContextImpl.java index 4a1b16b209bb..67508d817301 100644 --- a/platform/lang-impl/src/com/intellij/conversion/impl/ConversionContextImpl.java +++ b/platform/lang-impl/src/com/intellij/conversion/impl/ConversionContextImpl.java @@ -6,10 +6,10 @@ import com.intellij.conversion.*; import com.intellij.ide.highlighter.ProjectFileType; import com.intellij.ide.highlighter.WorkspaceFileType; import com.intellij.ide.impl.convert.JDomConvertingUtil; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.components.ExpandMacroToPathMap; import com.intellij.openapi.components.StorageScheme; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.impl.ModuleManagerImpl; import com.intellij.openapi.roots.impl.libraries.LibraryImpl; import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar; @@ -18,7 +18,6 @@ import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VfsUtil; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.util.PathUtil; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -67,10 +66,6 @@ public class ConversionContextImpl implements ConversionContext { } myModuleFiles = findModuleFiles(JDomConvertingUtil.loadDocument(modulesFile).getRootElement()); - if (ApplicationManager.getApplication().isUnitTestMode()) { - System.out.println("myStorageScheme = " + myStorageScheme); - System.out.println("myModuleFiles = " + Arrays.toString(myModuleFiles)); - } } @NotNull @@ -276,18 +271,12 @@ public class ConversionContextImpl implements ConversionContext { return myWorkspaceFile; } - public void saveFiles() throws IOException { - if (myWorkspaceSettings != null) { - myWorkspaceSettings.save(); - } - if (myProjectSettings != null) { - myProjectSettings.save(); - } - for (ModuleSettingsImpl settings : myModuleSettingsMap.values()) { - settings.save(); - } - if (myRunManagerSettings != null) { - myRunManagerSettings.save(); + public void saveFiles(Collection files) throws IOException { + for (File file : files) { + final SettingsXmlFile xmlFile = mySettingsFiles.get(file); + if (xmlFile != null) { + xmlFile.save(); + } } } diff --git a/platform/lang-impl/src/com/intellij/conversion/impl/ConversionServiceImpl.java b/platform/lang-impl/src/com/intellij/conversion/impl/ConversionServiceImpl.java index ea1c645fd86b..aefbd35aff2a 100644 --- a/platform/lang-impl/src/com/intellij/conversion/impl/ConversionServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/conversion/impl/ConversionServiceImpl.java @@ -6,7 +6,6 @@ import com.intellij.conversion.ConversionService; import com.intellij.conversion.ConverterProvider; import com.intellij.conversion.impl.ui.ConvertProjectDialog; import com.intellij.ide.IdeBundle; -import com.intellij.conversion.impl.ProjectConversionUtil; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.components.impl.stores.IProjectStore; import com.intellij.openapi.diagnostic.Logger; @@ -81,7 +80,7 @@ public class ConversionServiceImpl extends ConversionService { runner.process(); runner.postProcess(); } - context.saveFiles(); + context.saveFiles(affectedFiles); listener.successfullyConverted(backupDir); saveConversionResult(context); return true; @@ -248,7 +247,7 @@ public class ConversionServiceImpl extends ConversionService { runner.convertModule(moduleFile); } } - context.saveFiles(); + context.saveFiles(Collections.singletonList(moduleFile)); Messages.showInfoMessage(project, IdeBundle.message("message.your.module.was.succesfully.converted.br.old.version.was.saved.to.0", backupFile.getAbsolutePath()), IdeBundle.message("dialog.title.convert.module")); return true; diff --git a/platform/lang-impl/src/com/intellij/conversion/impl/RunManagerSettingsImpl.java b/platform/lang-impl/src/com/intellij/conversion/impl/RunManagerSettingsImpl.java index 921a8471f946..03b89fb3130d 100644 --- a/platform/lang-impl/src/com/intellij/conversion/impl/RunManagerSettingsImpl.java +++ b/platform/lang-impl/src/com/intellij/conversion/impl/RunManagerSettingsImpl.java @@ -1,15 +1,14 @@ package com.intellij.conversion.impl; -import com.intellij.conversion.RunManagerSettings; import com.intellij.conversion.CannotConvertException; +import com.intellij.conversion.RunManagerSettings; import com.intellij.ide.impl.convert.JDomConvertingUtil; import org.jdom.Element; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; -import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -75,15 +74,4 @@ public class RunManagerSettingsImpl implements RunManagerSettings { return files; } - public void save() throws IOException { - if (myWorkspaceFile != null) { - myWorkspaceFile.save(); - } - if (myProjectFile != null) { - myProjectFile.save(); - } - for (SettingsXmlFile file : mySharedConfigurationFiles) { - file.save(); - } - } } diff --git a/platform/lang-impl/src/com/intellij/conversion/impl/ui/ConvertProjectDialog.java b/platform/lang-impl/src/com/intellij/conversion/impl/ui/ConvertProjectDialog.java index cb64f8a0f28b..1a940c5b683a 100644 --- a/platform/lang-impl/src/com/intellij/conversion/impl/ui/ConvertProjectDialog.java +++ b/platform/lang-impl/src/com/intellij/conversion/impl/ui/ConvertProjectDialog.java @@ -8,6 +8,7 @@ import com.intellij.ide.IdeBundle; import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.util.containers.HashSet; import com.intellij.CommonBundle; import org.jetbrains.annotations.NonNls; @@ -25,6 +26,7 @@ import java.util.Set; * @author nik */ public class ConvertProjectDialog extends DialogWrapper { + private static final Logger LOG = Logger.getInstance("#com.intellij.conversion.impl.ui.ConvertProjectDialog"); private JPanel myMainPanel; private JTextPane myTextPane; private boolean myConverted; @@ -106,14 +108,16 @@ public class ConvertProjectDialog extends DialogWrapper { runner.postProcess(); } } - myContext.saveFiles(); + myContext.saveFiles(myAffectedFiles); myConverted = true; super.doOKAction(); } catch (CannotConvertException e) { + LOG.info(e); showErrorMessage(IdeBundle.message("error.cannot.convert.project", e.getMessage())); } catch (IOException e) { + LOG.info(e); showErrorMessage(IdeBundle.message("error.cannot.convert.project", e.getMessage())); } }