assertion message — ensure that eclipse plugin is installed

This commit is contained in:
Vladimir Krivosheev
2015-09-05 17:01:53 +02:00
parent b4ed036225
commit 67abff647d
3 changed files with 22 additions and 23 deletions
@@ -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<Boolean> {
public final class ClasspathStorage extends StateStorageBase<Boolean> {
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<String> paths = myConverter.getFilePaths();
MessageBusConnection busConnection = module.getMessageBus().connect();
@@ -214,14 +219,9 @@ public class ClasspathStorage extends StateStorageBase<Boolean> {
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;
@@ -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);
@@ -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);