mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-CR-56535 fixed wrong messages for gradle.jvm.is.jre
added jdk validation of gradle jvm GitOrigin-RevId: f5555495fc330aa2098ff37ade3c95fce632f3d0
This commit is contained in:
committed by
intellij-monorepo-bot
parent
7241efd7de
commit
40b87ad449
+2
@@ -172,6 +172,8 @@ 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 (SdkDownloadTracker.getInstance().isDownloading(jdk)) return true;
|
||||
return isValidJdk(jdk.getHomePath());
|
||||
}
|
||||
|
||||
+11
-4
@@ -4,6 +4,7 @@
|
||||
package com.intellij.openapi.externalSystem.service.ui
|
||||
|
||||
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemJdkUtil
|
||||
import com.intellij.openapi.externalSystem.service.execution.InvalidSdkException
|
||||
import com.intellij.openapi.roots.ui.configuration.SdkComboBox
|
||||
import com.intellij.openapi.roots.ui.configuration.SdkListItem
|
||||
|
||||
@@ -11,6 +12,7 @@ fun SdkComboBox.getSelectedJdkReference(): String? {
|
||||
return when (val it = selectedItem) {
|
||||
is SdkListItem.ProjectSdkItem -> ExternalSystemJdkUtil.USE_PROJECT_JDK
|
||||
is SdkListItem.SdkItem -> it.sdk.name
|
||||
is SdkListItem.InvalidSdkItem -> it.sdkName
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
@@ -24,8 +26,13 @@ fun SdkComboBox.setSelectedJdkReference(jdkReference: String?) {
|
||||
}
|
||||
|
||||
private fun SdkComboBox.resolveSdkItem(selectedJdkReference: String): SdkListItem {
|
||||
val selectedJdk = ExternalSystemJdkUtil.resolveJdkName(model.sdksModel.projectSdk, selectedJdkReference)
|
||||
val selectedSdkItem = selectedJdk?.let { model.listModel.findSdkItem(selectedJdk) }
|
||||
if (selectedSdkItem == null) return showInvalidSdkItem(selectedJdkReference)
|
||||
return selectedSdkItem
|
||||
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
|
||||
}
|
||||
catch (ex: InvalidSdkException) {
|
||||
return showInvalidSdkItem(selectedJdkReference)
|
||||
}
|
||||
}
|
||||
+10
-6
@@ -6,6 +6,7 @@ import com.intellij.openapi.projectRoots.*
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel
|
||||
import com.intellij.openapi.ui.ComboBoxPopupState
|
||||
import com.intellij.openapi.util.Condition
|
||||
import java.util.function.Predicate
|
||||
import javax.swing.ComboBoxModel
|
||||
import javax.swing.ListModel
|
||||
|
||||
@@ -36,12 +37,15 @@ class SdkComboBoxModel private constructor(
|
||||
fun createSdkComboBoxModel(
|
||||
project: Project,
|
||||
sdksModel: ProjectSdksModel,
|
||||
sdkTypeFilter: Condition<SdkTypeId>? = null,
|
||||
sdkTypeCreationFilter: Condition<SdkTypeId>? = null,
|
||||
sdkFilter: Condition<Sdk>? = null
|
||||
sdkTypeFilter: Predicate<SdkTypeId>? = null,
|
||||
sdkTypeCreationFilter: Predicate<SdkTypeId>? = null,
|
||||
sdkFilter: Predicate<Sdk>? = null
|
||||
): SdkComboBoxModel {
|
||||
val selectedItem = SdkListItem.NoneSdkItem()
|
||||
val modelBuilder = SdkListModelBuilder(project, sdksModel, sdkTypeFilter, sdkTypeCreationFilter, sdkFilter)
|
||||
val sdkTypeCondition = sdkTypeFilter?.let { f -> Condition<SdkTypeId> { f.test(it) } }
|
||||
val sdkTypeCreationCondition = sdkTypeCreationFilter?.let { f -> Condition<SdkTypeId> { f.test(it) } }
|
||||
val sdkCondition = sdkFilter?.let { f -> Condition<Sdk> { f.test(it) } }
|
||||
val modelBuilder = SdkListModelBuilder(project, sdksModel, sdkTypeCondition, sdkTypeCreationCondition, sdkCondition)
|
||||
if (sdksModel.projectSdk != null) modelBuilder.showProjectSdkItem()
|
||||
val listModel = modelBuilder.buildModel()
|
||||
return SdkComboBoxModel(selectedItem, project, sdksModel, listModel, modelBuilder)
|
||||
@@ -49,9 +53,9 @@ class SdkComboBoxModel private constructor(
|
||||
|
||||
@JvmStatic
|
||||
fun createJdkComboBoxModel(project: Project, sdksModel: ProjectSdksModel): SdkComboBoxModel {
|
||||
val sdkTypeFilter = Condition<SdkTypeId> { it is JavaSdkType }
|
||||
val sdkTypeFilter = Predicate<SdkTypeId> { it is JavaSdkType }
|
||||
val noJavaSdkTypes = { SdkType.getAllTypes().filterNot { it is SimpleJavaSdkType }.isEmpty() }
|
||||
val sdkTypeCreationFilter = Condition<SdkTypeId> { noJavaSdkTypes() || it !is SimpleJavaSdkType }
|
||||
val sdkTypeCreationFilter = Predicate<SdkTypeId> { it !is SimpleJavaSdkType || noJavaSdkTypes() }
|
||||
return createSdkComboBoxModel(project, sdksModel, sdkTypeFilter, sdkTypeCreationFilter, null)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,13 +68,18 @@ public abstract class SdkListItem {
|
||||
}
|
||||
}
|
||||
|
||||
static final class InvalidSdkItem extends SdkListItem {
|
||||
final String mySdkName;
|
||||
public static final class InvalidSdkItem extends SdkListItem {
|
||||
private final String mySdkName;
|
||||
|
||||
InvalidSdkItem(@NotNull String name) {
|
||||
mySdkName = name;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getSdkName() {
|
||||
return mySdkName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
||||
+1
-1
@@ -129,7 +129,7 @@ public abstract class SdkListPresenter extends ColoredListCellRenderer<SdkListIt
|
||||
setIcon(EMPTY_ICON); // to fix vertical size
|
||||
if (value instanceof InvalidSdkItem) {
|
||||
InvalidSdkItem item = (InvalidSdkItem)value;
|
||||
final String str = ProjectBundle.message("jdk.combo.box.invalid.item", item.mySdkName);
|
||||
final String str = ProjectBundle.message("jdk.combo.box.invalid.item", item.getSdkName());
|
||||
append(str, SimpleTextAttributes.ERROR_ATTRIBUTES);
|
||||
}
|
||||
else if (value instanceof ProjectSdkItem) {
|
||||
|
||||
@@ -39,9 +39,9 @@ gradle.home.setting.type.explicit.empty=Gradle location is not specified
|
||||
|
||||
gradle.jvm.undefined=Please, set the Gradle JVM option
|
||||
gradle.jvm.incorrect=Gradle JVM option is incorrect:\nPath:{0}
|
||||
gradle.jvm.is.jre=Invalid Gradle JDK configuration found.
|
||||
gradle.jvm.is.jre=Please, use JDK instead of JRE for Gradle importer.
|
||||
gradle.jvm.is.invalid=Invalid Gradle JDK configuration found.
|
||||
gradle.jvm.is.downloading=Jdk is downloading. Please, wait for it is ready.
|
||||
gradle.jvm.is.downloading=Jdk is being downloaded, please wait.
|
||||
gradle.open.gradle.settings=Open Gradle Settings
|
||||
|
||||
gradle.toolwindow.text.no.linked.project=\nThere is no Gradle project\nYou can {@action Gradle.LinkToProject} one.
|
||||
|
||||
+2
-2
@@ -61,8 +61,8 @@ class GradleExecutionAware : ExternalSystemExecutionAware {
|
||||
|
||||
waitForDownloadingIfNeeded(sdk, taskId, taskNotificationListener, project)
|
||||
|
||||
val sdkHomePath = sdk.homePath ?: jdkConfigurationError("gradle.jvm.is.invalid")
|
||||
if (!JdkUtil.checkForJdk(sdkHomePath)) {
|
||||
if (!ExternalSystemJdkUtil.isValidJdk(sdk)) {
|
||||
val sdkHomePath = sdk.homePath ?: jdkConfigurationError("gradle.jvm.is.invalid")
|
||||
if (JdkUtil.checkForJre(sdkHomePath)) {
|
||||
jdkConfigurationError("gradle.jvm.is.jre")
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
package org.jetbrains.plugins.gradle.service.project.open
|
||||
|
||||
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemJdkUtil
|
||||
import com.intellij.openapi.projectRoots.JavaSdkType
|
||||
import com.intellij.openapi.projectRoots.JdkUtil
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.util.lang.JavaVersion
|
||||
@@ -23,7 +22,7 @@ internal data class GradleJdk(val homePath: String, val version: JavaVersion, va
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun valueOf(sdk: Sdk): GradleJdk? {
|
||||
if (sdk.sdkType !is JavaSdkType) return null
|
||||
if (!ExternalSystemJdkUtil.isValidJdk(sdk)) return null
|
||||
val homePath = sdk.homePath ?: return null
|
||||
val versionString = sdk.versionString ?: return null
|
||||
return valueOf(homePath, versionString, sdk.name)
|
||||
@@ -31,7 +30,7 @@ internal data class GradleJdk(val homePath: String, val version: JavaVersion, va
|
||||
|
||||
@JvmStatic
|
||||
fun valueOf(homePath: String): GradleJdk? {
|
||||
if (!JdkUtil.checkForJdk(homePath)) return null
|
||||
if (!ExternalSystemJdkUtil.isValidJdk(homePath)) return null
|
||||
val javaSdkType = ExternalSystemJdkUtil.getJavaSdkType()
|
||||
val versionString = javaSdkType.getVersionString(homePath) ?: return null
|
||||
val name = JdkUtil.suggestJdkName(versionString) ?: return null
|
||||
|
||||
+13
-3
@@ -10,7 +10,6 @@ import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.externalSystem.model.settings.LocationSettingType;
|
||||
import com.intellij.openapi.externalSystem.service.execution.ExternalSystemJdkUtil;
|
||||
import com.intellij.openapi.roots.ui.configuration.SdkComboBox;
|
||||
import com.intellij.openapi.externalSystem.settings.ExternalProjectSettings;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemUiUtil;
|
||||
import com.intellij.openapi.externalSystem.util.PaintAwarePanel;
|
||||
@@ -18,6 +17,10 @@ import com.intellij.openapi.options.ConfigurationException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.SdkType;
|
||||
import com.intellij.openapi.projectRoots.SdkTypeId;
|
||||
import com.intellij.openapi.projectRoots.SimpleJavaSdkType;
|
||||
import com.intellij.openapi.roots.ui.configuration.SdkComboBox;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
import com.intellij.openapi.roots.ui.util.CompositeAppearance;
|
||||
import com.intellij.openapi.ui.ComboBox;
|
||||
@@ -64,13 +67,16 @@ import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static com.intellij.openapi.externalSystem.service.ui.ExternalSystemJdkComboBoxUtil.getSelectedJdkReference;
|
||||
import static com.intellij.openapi.externalSystem.service.ui.ExternalSystemJdkComboBoxUtil.setSelectedJdkReference;
|
||||
import static com.intellij.openapi.roots.ui.configuration.SdkComboBoxModel.createJdkComboBoxModel;
|
||||
import static com.intellij.openapi.externalSystem.util.ExternalSystemUiUtil.INSETS;
|
||||
import static com.intellij.openapi.roots.ui.configuration.SdkComboBoxModel.createSdkComboBoxModel;
|
||||
|
||||
/**
|
||||
* @author Vladislav.Soroka
|
||||
@@ -717,7 +723,11 @@ public class IdeaGradleProjectSettingsControlBuilder implements GradleProjectSet
|
||||
if (myGradleJdkComboBox != null) {
|
||||
myGradleJdkComboBoxWrapper.remove(myGradleJdkComboBox);
|
||||
}
|
||||
myGradleJdkComboBox = new SdkComboBox(createJdkComboBoxModel(project, sdksModel));
|
||||
Predicate<SdkTypeId> sdkTypeFilter = it -> ExternalSystemJdkUtil.getJavaSdkType().equals(it);
|
||||
Supplier<Boolean> allIsSimpleSdk = () -> Arrays.stream(SdkType.getAllTypes()).allMatch(it -> it instanceof SimpleJavaSdkType);
|
||||
Predicate<SdkTypeId> sdkTypeCreationFilter = it -> !(it instanceof SimpleJavaSdkType) || allIsSimpleSdk.get();
|
||||
Predicate<Sdk> sdkFilter = it -> ExternalSystemJdkUtil.isValidJdk(it);
|
||||
myGradleJdkComboBox = new SdkComboBox(createSdkComboBoxModel(project, sdksModel, sdkTypeFilter, sdkTypeCreationFilter, sdkFilter));
|
||||
myGradleJdkComboBoxWrapper.add(myGradleJdkComboBox, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user