diff --git a/java/java-analysis-api/BUILD.bazel b/java/java-analysis-api/BUILD.bazel index 2329b04bcd1c..444e58db128f 100644 --- a/java/java-analysis-api/BUILD.bazel +++ b/java/java-analysis-api/BUILD.bazel @@ -30,6 +30,8 @@ jvm_library( "@lib//:kotlin-stdlib", "//uast/uast-common:uast", "//uast/uast-common-ide:ide", + "//platform/workspace/jps", + "//platform/workspace/storage", ], exports = [ "//uast/uast-common:uast", diff --git a/java/java-analysis-api/intellij.java.analysis.iml b/java/java-analysis-api/intellij.java.analysis.iml index 062ca60df03a..afa8572ea9e6 100644 --- a/java/java-analysis-api/intellij.java.analysis.iml +++ b/java/java-analysis-api/intellij.java.analysis.iml @@ -33,5 +33,7 @@ + + \ No newline at end of file diff --git a/java/java-analysis-api/src/com/intellij/openapi/roots/JdkUtils.java b/java/java-analysis-api/src/com/intellij/openapi/roots/JdkUtils.java index 260756726492..8665e47dbd60 100644 --- a/java/java-analysis-api/src/com/intellij/openapi/roots/JdkUtils.java +++ b/java/java-analysis-api/src/com/intellij/openapi/roots/JdkUtils.java @@ -1,24 +1,24 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.openapi.roots; +import com.intellij.openapi.projectRoots.ProjectJdkTable; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.platform.workspace.jps.entities.SdkEntity; import com.intellij.psi.PsiElement; import com.intellij.psi.util.PsiUtilCore; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.List; - public final class JdkUtils { public static @Nullable Sdk getJdkForElement(@NotNull PsiElement element) { final VirtualFile virtualFile = PsiUtilCore.getVirtualFile(element); if (virtualFile == null) return null; - final List entries = ProjectRootManager.getInstance(element.getProject()).getFileIndex().getOrderEntriesForFile(virtualFile); - for (OrderEntry orderEntry : entries) { - if (orderEntry instanceof JdkOrderEntry entry) { - Sdk jdk = entry.getJdk(); - if (jdk != null) return jdk; + var jdks = ProjectRootManager.getInstance(element.getProject()).getFileIndex().findContainingSdks(virtualFile); + for (SdkEntity jdk : jdks) { + var sdkBridge = ProjectJdkTable.getInstance(element.getProject()).findJdk(jdk.getName()); + if (sdkBridge != null) { + return sdkBridge; } } return null;