diff --git a/plugins/gradle/java/src/service/resolve/GradleProjectSymbol.kt b/plugins/gradle/java/src/service/resolve/GradleProjectSymbol.kt index b04dc6e1fd6e..45c616aff413 100644 --- a/plugins/gradle/java/src/service/resolve/GradleProjectSymbol.kt +++ b/plugins/gradle/java/src/service/resolve/GradleProjectSymbol.kt @@ -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, 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 { diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleExtensionsSettings.java b/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleExtensionsSettings.java index c054ae554803..c6e1762f1dd8 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleExtensionsSettings.java +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/settings/GradleExtensionsSettings.java @@ -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 configurations = new HashMap<>(); @NotNull public final Map buildScriptConfigurations = new HashMap<>(); - @Nullable - public VirtualFile buildScriptFile; @Nullable public GradleExtensionsData getParent() { diff --git a/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/GradleExtensions.java b/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/GradleExtensions.java index dcc59bd5d9c8..b7c377eda61a 100644 --- a/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/GradleExtensions.java +++ b/plugins/gradle/tooling-extension-api/src/org/jetbrains/plugins/gradle/model/GradleExtensions.java @@ -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 getConfigurations(); - - @Nullable File getBuildScriptFile(); } diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/model/DefaultGradleExtensions.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/model/DefaultGradleExtensions.java index 49ed90f850e4..441c07a84c5b 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/model/DefaultGradleExtensions.java +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/model/DefaultGradleExtensions.java @@ -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 tasks; private final List configurations; private String parentProjectPath; - private File buildScriptFile; public DefaultGradleExtensions() { extensions = new ArrayList(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(extensions.getExtensions().size()); for (GradleExtension extension : extensions.getExtensions()) { @@ -114,16 +111,6 @@ public class DefaultGradleExtensions implements GradleExtensions { return configurations == null ? Collections.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; } } diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ProjectExtensionsDataBuilderImpl.groovy b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ProjectExtensionsDataBuilderImpl.groovy index 9a6e61488574..c6cd807dad3f 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ProjectExtensionsDataBuilderImpl.groovy +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/builder/ProjectExtensionsDataBuilderImpl.groovy @@ -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)) diff --git a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/GradleExtensionsSerializationService.java b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/GradleExtensionsSerializationService.java index b13f751bc59e..938938344cdd 100644 --- a/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/GradleExtensionsSerializationService.java +++ b/plugins/gradle/tooling-extension-impl/src/org/jetbrains/plugins/gradle/tooling/serialization/GradleExtensionsSerializationService.java @@ -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));