From 67abff647d11d75aba747a2c9ed7f60c532dbd06 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Sat, 5 Sep 2015 17:01:53 +0200 Subject: [PATCH] =?UTF-8?q?assertion=20message=20=E2=80=94=20ensure=20that?= =?UTF-8?q?=20eclipse=20plugin=20is=20installed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../roots/impl/storage/ClasspathStorage.java | 28 +++++++++---------- .../storage/ClasspathStorageProvider.java | 5 ++-- .../EclipseClasspathStorageProvider.java | 12 ++++---- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorage.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorage.java index ce7dad4a4db4..c4f32d2f5e35 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorage.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorage.java @@ -27,6 +27,7 @@ import com.intellij.openapi.components.impl.stores.StateStorageManager; import com.intellij.openapi.components.impl.stores.StorageManagerListener; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootModel; import com.intellij.openapi.roots.impl.ModuleRootManagerImpl; @@ -35,14 +36,12 @@ import com.intellij.openapi.roots.impl.RootModelImpl; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.WriteExternalException; import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.util.io.FileUtilRt; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.openapi.vfs.newvfs.BulkFileListener; import com.intellij.openapi.vfs.newvfs.events.VFileContentChangeEvent; import com.intellij.openapi.vfs.newvfs.events.VFileEvent; import com.intellij.openapi.vfs.newvfs.events.VFilePropertyChangeEvent; -import com.intellij.util.PathUtil; import com.intellij.util.messages.MessageBusConnection; import org.jdom.Element; import org.jetbrains.annotations.NonNls; @@ -55,22 +54,28 @@ import java.util.List; import java.util.Set; // Boolean - false as not loaded, true as loaded -public class ClasspathStorage extends StateStorageBase { +public final class ClasspathStorage extends StateStorageBase { private static final Logger LOG = Logger.getInstance(ClasspathStorage.class); @NonNls public static final String SPECIAL_STORAGE = "special"; private final ClasspathStorageProvider.ClasspathConverter myConverter; - protected final TrackingPathMacroSubstitutor myPathMacroSubstitutor; + private final TrackingPathMacroSubstitutor myPathMacroSubstitutor; public ClasspathStorage(@NotNull final Module module, @NotNull StateStorageManager storageManager) { - myPathMacroSubstitutor = storageManager.getMacroSubstitutor(); + String storageType = module.getOptionValue(JpsProjectLoader.CLASSPATH_ATTRIBUTE); + if (storageType == null) { + throw new IllegalStateException("Classpath storage requires non-default storage type"); + } - ClasspathStorageProvider provider = getProvider(ClassPathStorageUtil.getStorageType(module)); - assert provider != null; + ClasspathStorageProvider provider = getProvider(storageType); + if (provider == null) { + throw new IllegalStateException("Classpath storage provider not found, please ensure that Eclipse plugin is installed"); + } myConverter = provider.createConverter(module); - assert myConverter != null; + + myPathMacroSubstitutor = storageManager.getMacroSubstitutor(); final List paths = myConverter.getFilePaths(); MessageBusConnection busConnection = module.getMessageBus().connect(); @@ -214,14 +219,9 @@ public class ClasspathStorage extends StateStorageBase { return null; } - @NotNull - public static String getModuleDir(@NotNull Module module) { - return PathUtil.getParentPath(FileUtilRt.toSystemIndependentName(module.getModuleFilePath())); - } - @NotNull public static String getStorageRootFromOptions(@NotNull Module module) { - String moduleRoot = getModuleDir(module); + String moduleRoot = ModuleUtilCore.getModuleDirPath(module); String storageRef = module.getOptionValue(JpsProjectLoader.CLASSPATH_DIR_ATTRIBUTE); if (storageRef == null) { return moduleRoot; diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorageProvider.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorageProvider.java index 0b8e246ef3cf..abdfd6764ede 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorageProvider.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorageProvider.java @@ -24,7 +24,6 @@ import com.intellij.openapi.roots.ModuleRootModel; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.io.IOException; import java.util.List; @@ -48,8 +47,8 @@ public interface ClasspathStorageProvider { void moduleRenamed(@NotNull Module module, @NotNull String oldName, @NotNull String newName); - @Nullable - ClasspathConverter createConverter(Module module); + @NotNull + ClasspathConverter createConverter(@NotNull Module module); String getContentRoot(@NotNull ModuleRootModel model); diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java index 4c2fb7a988ac..07d265c2d3a9 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java @@ -19,6 +19,7 @@ import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.components.PathMacroManager; import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleUtilCore; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.impl.storage.ClasspathStorage; @@ -31,7 +32,6 @@ import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.eclipse.EclipseBundle; import org.jetbrains.idea.eclipse.EclipseXml; import org.jetbrains.idea.eclipse.conversion.DotProjectFileHelper; @@ -99,9 +99,9 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider EclipseModuleManagerImpl.getInstance(module).setDocumentSet(null); } - @Nullable + @NotNull @Override - public ClasspathConverter createConverter(Module module) { + public ClasspathConverter createConverter(@NotNull Module module) { return new EclipseClasspathConverter(module); } @@ -133,7 +133,7 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider fileCache.register(EclipseXml.CLASSPATH_FILE, storageRoot); fileCache.register(EclipseXml.PROJECT_FILE, storageRoot); fileCache.register(EclipseXml.PLUGIN_XML_FILE, storageRoot); - fileCache.register(module.getName() + EclipseXml.IDEA_SETTINGS_POSTFIX, ClasspathStorage.getModuleDir(module)); + fileCache.register(module.getName() + EclipseXml.IDEA_SETTINGS_POSTFIX, ModuleUtilCore.getModuleDirPath(module)); } return fileCache; } @@ -142,7 +142,7 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider public void moduleRenamed(@NotNull Module module, @NotNull String oldName, @NotNull String newName) { try { CachedXmlDocumentSet fileSet = getFileCache(module); - VirtualFile root = LocalFileSystem.getInstance().findFileByPath(ClasspathStorage.getModuleDir(module)); + VirtualFile root = LocalFileSystem.getInstance().findFileByPath(ModuleUtilCore.getModuleDirPath(module)); VirtualFile source = root == null ? null : root.findChild(oldName + EclipseXml.IDEA_SETTINGS_POSTFIX); if (source != null && source.isValid()) { AccessToken token = WriteAction.start(); @@ -156,7 +156,7 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider DotProjectFileHelper.saveDotProjectFile(module, fileSet.getParent(EclipseXml.PROJECT_FILE)); fileSet.unregister(oldName + EclipseXml.IDEA_SETTINGS_POSTFIX); - fileSet.register(newName + EclipseXml.IDEA_SETTINGS_POSTFIX, ClasspathStorage.getModuleDir(module)); + fileSet.register(newName + EclipseXml.IDEA_SETTINGS_POSTFIX, ModuleUtilCore.getModuleDirPath(module)); } catch (IOException e) { EclipseClasspathWriter.LOG.warn(e);