[gradle] use existing ExternalProject model cache IDEA-197590

GitOrigin-RevId: cf578092eed955cc6bf38593934ff8a25622cd12
This commit is contained in:
Nikita Skvortsov
2020-06-05 10:03:29 +03:00
committed by intellij-monorepo-bot
parent 1bacac04bf
commit 7b4a2b6e04
6 changed files with 18 additions and 43 deletions
@@ -8,11 +8,13 @@ import com.intellij.model.presentation.SymbolPresentation
import com.intellij.navigation.NavigatableSymbol
import com.intellij.navigation.NavigationTarget
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.LocalFileSystem
import com.intellij.psi.PsiElement
import com.intellij.psi.util.PsiUtil
import com.intellij.psi.PsiManager
import icons.GradleIcons
import org.jetbrains.annotations.ApiStatus.Internal
import org.jetbrains.plugins.gradle.settings.GradleExtensionsSettings
import org.jetbrains.plugins.gradle.model.ExternalProject
import org.jetbrains.plugins.gradle.service.project.data.ExternalProjectDataCache
import org.jetbrains.plugins.gradle.util.GradleBundle
@Internal
@@ -46,10 +48,20 @@ class GradleProjectSymbol(private val myQualifiedName: List<String>, private val
}
private fun findBuildFile(project: Project): PsiElement? {
val extensionsData = GradleExtensionsSettings.getInstance(project).getExtensionsFor(myRootProjectPath, qualifiedName)
?: return null
val buildScript = extensionsData.buildScriptFile ?: return null
return PsiUtil.findFileSystemItem(project, buildScript)
val rootProject = ExternalProjectDataCache.getInstance(project)
.getRootExternalProject(myRootProjectPath)
?: return null
val externalProject = myQualifiedName
.drop(1)
.fold(rootProject as ExternalProject?) {
extProject, name -> extProject?.childProjects?.get(name)
} ?: return null
val buildFile = externalProject.buildFile ?: return null
val virtualFile = LocalFileSystem.getInstance().findFileByIoFile(buildFile) ?: return null
return PsiManager.getInstance(project).findFile(virtualFile)
}
override fun equals(other: Any?): Boolean {
@@ -14,8 +14,6 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleUtilCore;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.CommonClassNames;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
@@ -33,7 +31,6 @@ import org.jetbrains.plugins.gradle.service.project.data.GradleExtensionsDataSer
import org.jetbrains.plugins.gradle.service.resolve.GradleCommonClassNames;
import org.jetbrains.plugins.gradle.util.GradleConstants;
import java.io.File;
import java.util.*;
/**
@@ -104,10 +101,6 @@ public class GradleExtensionsSettings {
GradleExtensionsData extensionsData = new GradleExtensionsData();
GradleExtensions gradleExtensions = entry.getValue();
extensionsData.parent = gradleExtensions.getParentProjectPath();
File scriptFile = gradleExtensions.getBuildScriptFile();
if (scriptFile != null) {
extensionsData.buildScriptFile = VfsUtil.findFileByIoFile(scriptFile, true);
}
for (org.jetbrains.plugins.gradle.model.GradleExtension extension : gradleExtensions.getExtensions()) {
GradleExtension gradleExtension = new GradleExtension();
@@ -236,8 +229,6 @@ public class GradleExtensionsSettings {
public final Map<String, GradleConfiguration> configurations = new HashMap<>();
@NotNull
public final Map<String, GradleConfiguration> buildScriptConfigurations = new HashMap<>();
@Nullable
public VirtualFile buildScriptFile;
@Nullable
public GradleExtensionsData getParent() {
@@ -4,7 +4,6 @@ package org.jetbrains.plugins.gradle.model;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.io.Serializable;
import java.util.List;
@@ -29,6 +28,4 @@ public interface GradleExtensions extends Serializable {
@NotNull
List<? extends GradleConfiguration> getConfigurations();
@Nullable File getBuildScriptFile();
}
@@ -4,7 +4,6 @@ package org.jetbrains.plugins.gradle.model;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -22,7 +21,6 @@ public class DefaultGradleExtensions implements GradleExtensions {
private final ArrayList<DefaultExternalTask> tasks;
private final List<DefaultGradleConfiguration> configurations;
private String parentProjectPath;
private File buildScriptFile;
public DefaultGradleExtensions() {
extensions = new ArrayList<DefaultGradleExtension>(0);
@@ -34,7 +32,6 @@ public class DefaultGradleExtensions implements GradleExtensions {
public DefaultGradleExtensions(@NotNull GradleExtensions extensions) {
parentProjectPath = extensions.getParentProjectPath();
buildScriptFile = extensions.getBuildScriptFile();
this.extensions = new ArrayList<DefaultGradleExtension>(extensions.getExtensions().size());
for (GradleExtension extension : extensions.getExtensions()) {
@@ -114,16 +111,6 @@ public class DefaultGradleExtensions implements GradleExtensions {
return configurations == null ? Collections.<DefaultGradleConfiguration>emptyList() : configurations;
}
@Nullable
@Override
public File getBuildScriptFile() {
return buildScriptFile;
}
public void setBuildScriptFile(File buildScript) {
buildScriptFile = buildScript;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -138,11 +125,6 @@ public class DefaultGradleExtensions implements GradleExtensions {
if (configurations != null ? !configurations.equals(that.configurations) : that.configurations != null) return false;
if (parentProjectPath != null ? !parentProjectPath.equals(that.parentProjectPath) : that.parentProjectPath != null) return false;
final String buildScriptPath = buildScriptFile != null ? buildScriptFile.getAbsolutePath() : null;
final String otherScriptPath = that.buildScriptFile != null ? that.buildScriptFile.getAbsolutePath() : null;
if (buildScriptPath != null ? buildScriptPath.equals(otherScriptPath) : otherScriptPath != null) return false;
return true;
}
@@ -154,7 +136,6 @@ public class DefaultGradleExtensions implements GradleExtensions {
result = 31 * result + (tasks != null ? tasks.hashCode() : 0);
result = 31 * result + (configurations != null ? configurations.hashCode() : 0);
result = 31 * result + (parentProjectPath != null ? parentProjectPath.hashCode() : 0);
result = 31 * result + (buildScriptFile != null ? buildScriptFile.hashCode() : 0);
return result;
}
}
@@ -29,10 +29,6 @@ class ProjectExtensionsDataBuilderImpl implements ModelBuilderService {
Object buildAll(String modelName, Project project) {
DefaultGradleExtensions result = new DefaultGradleExtensions()
result.parentProjectPath = project.parent?.path
def file = project.getBuildFile()
if (file.exists()) {
result.buildScriptFile = file
}
for (it in project.configurations) {
result.configurations.add(new DefaultGradleConfiguration(it.name, it.description, it.visible))
@@ -64,7 +64,6 @@ public class GradleExtensionsSerializationService implements SerializationServic
writer.writeInt(objectId);
if (isAdded) {
writeString(writer, "parentProjectPath", model.getParentProjectPath());
writeFile(writer, "buildScriptFile" , model.getBuildScriptFile());
writeConfigurations(writer, context, model.getConfigurations());
writeConventions(writer, context, model.getConventions());
writeExtensions(writer, context, model.getExtensions());
@@ -170,7 +169,6 @@ public class GradleExtensionsSerializationService implements SerializationServic
public DefaultGradleExtensions create() {
DefaultGradleExtensions gradleExtensions = new DefaultGradleExtensions();
gradleExtensions.setParentProjectPath(readString(reader, "parentProjectPath"));
gradleExtensions.setBuildScriptFile(readFile(reader, "buildScriptFile"));
gradleExtensions.getConfigurations().addAll(readConfigurations(reader, context));
gradleExtensions.getConventions().addAll(readConventions(reader, context));
gradleExtensions.getExtensions().addAll(readExtensions(reader, context));