load project library table

This commit is contained in:
Dmitry Jemerov
2012-05-18 21:04:49 +02:00
parent c7ebf8cac5
commit 9723cf6239
3 changed files with 17 additions and 1 deletions
@@ -18,11 +18,15 @@ package com.intellij.core;
import com.intellij.mock.MockProject;
import com.intellij.openapi.components.ComponentManager;
import com.intellij.openapi.components.PathMacroManager;
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.impl.libraries.LibraryTableBase;
import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.io.fs.FileSystem;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
@@ -56,6 +60,16 @@ public class CoreProjectLoader {
}
final CoreModuleManager moduleManager = (CoreModuleManager)ModuleManager.getInstance(project);
moduleManager.loadState(moduleManagerState);
VirtualFile libraries = dotIdea.findChild("libraries");
if (libraries != null) {
DirectoryStorageData data = new DirectoryStorageData();
data.loadFrom(FileSystem.FILE_SYSTEM.createFile(libraries.getPath()),
PathMacroManager.getInstance(project).createTrackingSubstitutor());
final Element libraryTable = data.getMergedState("libraryTable", Element.class, new ProjectLibraryTable.LibraryStateSplitter(), null);
((LibraryTableBase) ProjectLibraryTable.getInstance(project)).loadState(libraryTable);
}
moduleManager.loadModules();
}
@@ -17,6 +17,7 @@ package com.intellij.core;
import com.intellij.application.options.PathMacrosImpl;
import com.intellij.mock.MockProject;
import com.intellij.openapi.application.PathMacroFilter;
import com.intellij.openapi.application.PathMacros;
import com.intellij.openapi.components.ExtensionAreas;
import com.intellij.openapi.components.PathMacroManager;
@@ -42,6 +43,7 @@ public class ProjectModelEnvironment {
env.registerApplicationComponent(PathMacros.class, pathMacros);
CoreEnvironment.registerApplicationExtensionPoint(OrderRootType.EP_NAME, OrderRootType.class);
CoreEnvironment.registerApplicationExtensionPoint(SdkFinder.EP_NAME, SdkFinder.class);
CoreEnvironment.registerApplicationExtensionPoint(PathMacroFilter.EP_NAME, PathMacroFilter.class);
env.getApplication().registerService(ProjectJdkTable.class, new CoreProjectJdkTable());
env.getApplication().registerService(ApplicationLibraryTable.class, new ApplicationLibraryTable());
env.getApplication().registerService(LibraryTablesRegistrar.class, new LibraryTablesRegistrarImpl());
@@ -157,7 +157,7 @@ public class DirectoryStorageData {
}
@Nullable
public <T> T getMergedState(String componentName, Class<T> stateClass, StateSplitter splitter, T mergeInto) {
public <T> T getMergedState(String componentName, Class<T> stateClass, StateSplitter splitter, @Nullable T mergeInto) {
final List<Element> subElements = new ArrayList<Element>();
processComponent(componentName, new PairConsumer<IFile, Element>() {
public void consume(final IFile iFile, final Element element) {