mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
CoreProjectLoader — do not use Project.DIRECTORY_STORE_FOLDER
This commit is contained in:
@@ -22,14 +22,13 @@ import com.intellij.openapi.components.impl.stores.DefaultStateSerializer;
|
||||
import com.intellij.openapi.components.impl.stores.DirectoryStorageUtil;
|
||||
import com.intellij.openapi.components.impl.stores.FileStorageCoreUtil;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
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.project.ProjectKt;
|
||||
import org.jdom.Element;
|
||||
import org.jdom.JDOMException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -43,11 +42,11 @@ import java.util.TreeMap;
|
||||
* @author yole
|
||||
*/
|
||||
public class CoreProjectLoader {
|
||||
public static boolean loadProject(MockProject project, @NotNull VirtualFile virtualFile)
|
||||
throws IOException, JDOMException, InvalidDataException {
|
||||
if (virtualFile.isDirectory() && virtualFile.findChild(Project.DIRECTORY_STORE_FOLDER) != null) {
|
||||
public static boolean loadProject(MockProject project, @NotNull VirtualFile virtualFile) throws IOException, JDOMException {
|
||||
VirtualFile ideaDir = ProjectKt.getProjectStoreDirectory(virtualFile);
|
||||
if (ideaDir != null) {
|
||||
project.setBaseDir(virtualFile);
|
||||
loadDirectoryProject(project, virtualFile);
|
||||
loadDirectoryProject(project, ideaDir);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -55,12 +54,7 @@ public class CoreProjectLoader {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void loadDirectoryProject(MockProject project, VirtualFile projectDir) throws IOException, JDOMException,
|
||||
InvalidDataException {
|
||||
VirtualFile dotIdea = projectDir.findChild(Project.DIRECTORY_STORE_FOLDER);
|
||||
if (dotIdea == null)
|
||||
throw new FileNotFoundException("Missing '" + Project.DIRECTORY_STORE_FOLDER + "' in " + projectDir.getPath());
|
||||
|
||||
private static void loadDirectoryProject(MockProject project, @NotNull VirtualFile dotIdea) throws IOException, JDOMException {
|
||||
VirtualFile modulesXml = dotIdea.findChild("modules.xml");
|
||||
if (modulesXml == null)
|
||||
throw new FileNotFoundException("Missing 'modules.xml' in " + dotIdea.getPath());
|
||||
@@ -74,14 +68,14 @@ public class CoreProjectLoader {
|
||||
moduleManager.loadState(moduleManagerState);
|
||||
|
||||
VirtualFile miscXml = dotIdea.findChild("misc.xml");
|
||||
if (miscXml == null)
|
||||
throw new FileNotFoundException("Missing 'misc.xml' in " + dotIdea.getPath());
|
||||
storageData = loadStorageFile(project, miscXml);
|
||||
final Element projectRootManagerState = storageData.get("ProjectRootManager");
|
||||
if (projectRootManagerState == null) {
|
||||
throw new JDOMException("cannot find ProjectRootManager state in misc.xml");
|
||||
if (miscXml != null) {
|
||||
storageData = loadStorageFile(project, miscXml);
|
||||
final Element projectRootManagerState = storageData.get("ProjectRootManager");
|
||||
if (projectRootManagerState == null) {
|
||||
throw new JDOMException("cannot find ProjectRootManager state in misc.xml");
|
||||
}
|
||||
((ProjectRootManagerImpl)ProjectRootManager.getInstance(project)).loadState(projectRootManagerState);
|
||||
}
|
||||
((ProjectRootManagerImpl) ProjectRootManager.getInstance(project)).loadState(projectRootManagerState);
|
||||
|
||||
VirtualFile libraries = dotIdea.findChild("libraries");
|
||||
if (libraries != null) {
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.intellij.openapi.components.impl.stores.IComponentStore
|
||||
import com.intellij.openapi.components.impl.stores.IProjectStore
|
||||
import com.intellij.openapi.components.stateStore
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
|
||||
val Project.isDirectoryBased: Boolean
|
||||
get() {
|
||||
@@ -32,3 +33,6 @@ val Project.stateStore: IProjectStore
|
||||
return picoContainer.getComponentInstance(IComponentStore::class.java) as IProjectStore
|
||||
}
|
||||
|
||||
fun getProjectStoreDirectory(file: VirtualFile): VirtualFile? {
|
||||
return if (file.isDirectory) file.findChild(Project.DIRECTORY_STORE_FOLDER) else null
|
||||
}
|
||||
Reference in New Issue
Block a user