mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
CPP-18581 fixed ignoring of custom sdk references
added using of ExternalSystemJdkProvider for Sdk creation GitOrigin-RevId: d57f52c94dafac81037a599c66fa64790143f301
This commit is contained in:
committed by
intellij-monorepo-bot
parent
04dca5f126
commit
21e2acbaff
+2
-6
@@ -82,10 +82,7 @@ public class ExternalSystemJdkUtil {
|
||||
String javaHome = EnvironmentUtil.getEnvironmentMap().get("JAVA_HOME");
|
||||
if (StringUtil.isEmptyOrSpaces(javaHome)) throw new UndefinedJavaHomeException();
|
||||
if (!isValidJdk(javaHome)) throw new InvalidJavaHomeException(javaHome);
|
||||
|
||||
SimpleJavaSdkType sdkType = SimpleJavaSdkType.getInstance();
|
||||
String sdkName = sdkType.suggestSdkName(null, javaHome);
|
||||
return sdkType.createJdk(sdkName, javaHome);
|
||||
return ExternalSystemJdkProvider.getInstance().createJdk(null, javaHome);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -172,8 +169,7 @@ public class ExternalSystemJdkUtil {
|
||||
@Contract("null -> false")
|
||||
public static boolean isValidJdk(@Nullable Sdk jdk) {
|
||||
if (jdk == null) return false;
|
||||
SdkType javaSdkType = getJavaSdkType();
|
||||
if (!javaSdkType.equals(jdk.getSdkType())) return false;
|
||||
if (!(jdk.getSdkType() instanceof JavaSdkType)) return false;
|
||||
if (SdkDownloadTracker.getInstance().isDownloading(jdk)) return true;
|
||||
return isValidJdk(jdk.getHomePath());
|
||||
}
|
||||
|
||||
+18
-6
@@ -3,8 +3,10 @@
|
||||
|
||||
package com.intellij.openapi.externalSystem.service.ui
|
||||
|
||||
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemJdkException
|
||||
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemJdkUtil
|
||||
import com.intellij.openapi.externalSystem.service.execution.InvalidSdkException
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil
|
||||
import com.intellij.openapi.roots.ui.configuration.SdkComboBox
|
||||
import com.intellij.openapi.roots.ui.configuration.SdkListItem
|
||||
|
||||
@@ -27,12 +29,22 @@ fun SdkComboBox.setSelectedJdkReference(jdkReference: String?) {
|
||||
|
||||
private fun SdkComboBox.resolveSdkItem(selectedJdkReference: String): SdkListItem {
|
||||
try {
|
||||
val selectedJdk = ExternalSystemJdkUtil.resolveJdkName(model.sdksModel.projectSdk, selectedJdkReference)
|
||||
val selectedSdkItem = selectedJdk?.let { model.listModel.findSdkItem(selectedJdk) }
|
||||
if (selectedSdkItem == null) return showInvalidSdkItem(selectedJdkReference)
|
||||
return selectedSdkItem
|
||||
val selectedJdk = ExternalSystemJdkUtil.resolveJdkName(null, selectedJdkReference)
|
||||
if (selectedJdk == null) return showInvalidSdkItem(selectedJdkReference)
|
||||
return findSdkItem(selectedJdk) ?: addAndGetSdkItem(selectedJdk)
|
||||
}
|
||||
catch (ex: InvalidSdkException) {
|
||||
catch (ex: ExternalSystemJdkException) {
|
||||
return showInvalidSdkItem(selectedJdkReference)
|
||||
}
|
||||
}
|
||||
|
||||
private fun SdkComboBox.addAndGetSdkItem(sdk: Sdk): SdkListItem {
|
||||
SdkConfigurationUtil.addSdk(sdk)
|
||||
model.sdksModel.addSdk(sdk)
|
||||
reloadModel()
|
||||
return findSdkItem(sdk) ?: showInvalidSdkItem(sdk.name)
|
||||
}
|
||||
|
||||
private fun SdkComboBox.findSdkItem(sdk: Sdk): SdkListItem? {
|
||||
return model.listModel.findSdkItem(sdk)
|
||||
}
|
||||
+1
-1
@@ -37,7 +37,7 @@ public abstract class SdkComboBoxBase<T> extends ComboBox<T> {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public SdkListItem showInvalidSdkItem(String name) {
|
||||
public SdkListItem showInvalidSdkItem(@NotNull String name) {
|
||||
return myModel.showInvalidSdkItem(name);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -166,7 +166,7 @@ public final class SdkListModelBuilder {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public SdkListItem showInvalidSdkItem(String name) {
|
||||
public SdkListItem showInvalidSdkItem(@NotNull String name) {
|
||||
InvalidSdkItem invalidItem = new InvalidSdkItem(name);
|
||||
if (Objects.equals(myInvalidItem, invalidItem)) return myInvalidItem;
|
||||
myInvalidItem = invalidItem;
|
||||
|
||||
+1
-5
@@ -20,7 +20,6 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemUtil
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.projectRoots.SimpleJavaSdkType
|
||||
import com.intellij.openapi.roots.ProjectRootManager
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
@@ -126,10 +125,7 @@ internal class GradleOpenProjectProvider : AbstractOpenProjectProvider() {
|
||||
val javaHome = EnvironmentUtil.getEnvironmentMap()["JAVA_HOME"] ?: return null
|
||||
val jdk = GradleJdk.valueOf(javaHome) ?: return null
|
||||
if (!jdk.isSupported(gradleVersion)) return null
|
||||
val simpleJavaSdkType = SimpleJavaSdkType.getInstance()
|
||||
val sdkName = simpleJavaSdkType.suggestSdkName(null, javaHome)
|
||||
simpleJavaSdkType.createJdk(sdkName, javaHome)
|
||||
return ExternalSystemJdkUtil.USE_JAVA_HOME
|
||||
return ExternalSystemJdkUtil.addJdk(javaHome).name
|
||||
}
|
||||
|
||||
private fun SettingsContext.getProjectJdkReference(): String? {
|
||||
|
||||
+7
-3
@@ -609,9 +609,13 @@ public class IdeaGradleProjectSettingsControlBuilder implements GradleProjectSet
|
||||
return true;
|
||||
}
|
||||
|
||||
if (myGradleJdkComboBox != null &&
|
||||
!StringUtil.equals(getSelectedJdkReference(myGradleJdkComboBox), myInitialSettings.getGradleJvm())) {
|
||||
return true;
|
||||
if (myGradleJdkComboBox != null) {
|
||||
if (!StringUtil.equals(getSelectedJdkReference(myGradleJdkComboBox), myInitialSettings.getGradleJvm())) {
|
||||
return true;
|
||||
}
|
||||
if (myGradleJdkComboBox.getModel().getSdksModel().isModified()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (myGradleHomePathField == null) return false;
|
||||
|
||||
Reference in New Issue
Block a user