mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
read ProjectRootManager state in CoreProjectLoader
This commit is contained in:
@@ -18,10 +18,8 @@ package com.intellij.core;
|
||||
import com.intellij.openapi.application.ex.PathManagerEx;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.roots.ContentEntry;
|
||||
import com.intellij.openapi.roots.LibraryOrderEntry;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.roots.OrderEntry;
|
||||
import com.intellij.openapi.roots.*;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.intellij.openapi.vfs.StandardFileSystems;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.testFramework.UsefulTestCase;
|
||||
@@ -33,7 +31,7 @@ import java.io.IOException;
|
||||
* @author yole
|
||||
*/
|
||||
public class CoreModuleManagerTest extends UsefulTestCase {
|
||||
public void _testLoadingModules() throws IOException, JDOMException {
|
||||
public void _testLoadingModules() throws IOException, JDOMException, InvalidDataException {
|
||||
CoreEnvironment env = new CoreEnvironment(getTestRootDisposable());
|
||||
ProjectModelEnvironment.register(env);
|
||||
final String projectPath = PathManagerEx.getTestDataPath("/core/loadingTest");
|
||||
@@ -43,6 +41,9 @@ public class CoreModuleManagerTest extends UsefulTestCase {
|
||||
final Module[] modules = moduleManager.getModules();
|
||||
assertEquals(1, modules.length);
|
||||
|
||||
ProjectRootManager projectRootManager = ProjectRootManager.getInstance(env.getProject());
|
||||
assertEquals("1.6", projectRootManager.getProjectSdkName());
|
||||
|
||||
ModuleRootManager rootManager = ModuleRootManager.getInstance(modules[0]);
|
||||
final ContentEntry[] contentEntries = rootManager.getContentEntries();
|
||||
assertEquals(1, contentEntries.length);
|
||||
|
||||
@@ -22,10 +22,13 @@ import com.intellij.openapi.components.impl.stores.DirectoryStorageData;
|
||||
import com.intellij.openapi.components.impl.stores.StorageData;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.impl.DirectoryIndex;
|
||||
import com.intellij.openapi.roots.impl.DirectoryIndexImpl;
|
||||
import com.intellij.openapi.roots.impl.ProjectRootManagerImpl;
|
||||
import com.intellij.openapi.roots.impl.libraries.LibraryTableBase;
|
||||
import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.intellij.openapi.util.JDOMUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.io.fs.FileSystem;
|
||||
@@ -41,7 +44,8 @@ import java.io.IOException;
|
||||
* @author yole
|
||||
*/
|
||||
public class CoreProjectLoader {
|
||||
public static void loadProject(MockProject project, @NotNull VirtualFile virtualFile) throws IOException, JDOMException {
|
||||
public static void loadProject(MockProject project, @NotNull VirtualFile virtualFile)
|
||||
throws IOException, JDOMException, InvalidDataException {
|
||||
if (virtualFile.isDirectory() && virtualFile.findChild(Project.DIRECTORY_STORE_FOLDER) != null) {
|
||||
project.setBaseDir(virtualFile);
|
||||
loadDirectoryProject(project, virtualFile);
|
||||
@@ -52,7 +56,8 @@ public class CoreProjectLoader {
|
||||
}
|
||||
}
|
||||
|
||||
private static void loadDirectoryProject(Project project, VirtualFile projectDir) throws IOException, JDOMException {
|
||||
private static void loadDirectoryProject(Project project, VirtualFile projectDir) throws IOException, JDOMException,
|
||||
InvalidDataException {
|
||||
VirtualFile dotIdea = projectDir.findChild(Project.DIRECTORY_STORE_FOLDER);
|
||||
VirtualFile modulesXml = dotIdea.findChild("modules.xml");
|
||||
StorageData storageData = loadStorageFile(project, modulesXml);
|
||||
@@ -63,6 +68,14 @@ public class CoreProjectLoader {
|
||||
final CoreModuleManager moduleManager = (CoreModuleManager)ModuleManager.getInstance(project);
|
||||
moduleManager.loadState(moduleManagerState);
|
||||
|
||||
VirtualFile miscXml = dotIdea.findChild("misc.xml");
|
||||
storageData = loadStorageFile(project, miscXml);
|
||||
final Element projectRootManagerState = storageData.getState("ProjectRootManager");
|
||||
if (projectRootManagerState == null) {
|
||||
throw new JDOMException("cannot find ProjectRootManager state in misc.xml");
|
||||
}
|
||||
((ProjectRootManagerImpl) ProjectRootManager.getInstance(project)).readExternal(projectRootManagerState);
|
||||
|
||||
VirtualFile libraries = dotIdea.findChild("libraries");
|
||||
if (libraries != null) {
|
||||
DirectoryStorageData data = new DirectoryStorageData();
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.intellij.openapi.fileTypes.FileTypeRegistry;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable;
|
||||
import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.roots.ProjectExtension;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.impl.*;
|
||||
@@ -54,6 +55,7 @@ public class ProjectModelEnvironment {
|
||||
env.registerProjectComponent(ModuleManager.class, new CoreModuleManager(project, env.getParentDisposable()));
|
||||
env.registerProjectComponent(PathMacroManager.class, new ProjectPathMacroManager(pathMacros, project));
|
||||
env.registerProjectExtensionPoint(DirectoryIndexExcludePolicy.EP_NAME, DirectoryIndexExcludePolicy.class);
|
||||
env.registerProjectExtensionPoint(ProjectExtension.EP_NAME, ProjectExtension.class);
|
||||
DirectoryIndex index = new DirectoryIndexImpl(project);
|
||||
env.registerProjectComponent(DirectoryIndex.class, index);
|
||||
env.registerProjectComponent(ProjectRootManager.class, new ProjectRootManagerImpl(project, index));
|
||||
|
||||
Reference in New Issue
Block a user