mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 02:59:33 +07:00
SdkTypeId - add version string comparator to the API, fix inheritors
GitOrigin-RevId: 4cc18ea990aad56632db714701826f2eaa3d8d05
This commit is contained in:
committed by
intellij-monorepo-bot
parent
1a28c4fcf0
commit
b0b06a9e32
@@ -148,6 +148,14 @@ public final class JavaSdkImpl extends JavaSdk {
|
||||
};
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Comparator<String> versionStringComparator() {
|
||||
return (sdk1, sdk2) -> {
|
||||
return Comparing.compare(getJavaVersion(sdk1), getJavaVersion(sdk2));
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBinPath(@NotNull Sdk sdk) {
|
||||
return getConvertedHomePath(sdk) + "bin";
|
||||
@@ -341,9 +349,17 @@ public final class JavaSdkImpl extends JavaSdk {
|
||||
return version != null ? JavaSdkVersion.fromJavaVersion(version) : null;
|
||||
}
|
||||
|
||||
private JavaVersion getJavaVersion(Sdk sdk) {
|
||||
@Nullable
|
||||
private JavaVersion getJavaVersion(@NotNull Sdk sdk) {
|
||||
String versionString = sdk.getVersionString();
|
||||
return versionString != null ? myCachedVersionStringToJdkVersion.computeIfAbsent(versionString, JavaVersion::tryParse) : null;
|
||||
return getJavaVersion(versionString);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private JavaVersion getJavaVersion(@Nullable String versionString) {
|
||||
return versionString != null
|
||||
? myCachedVersionStringToJdkVersion.computeIfAbsent(versionString, JavaVersion::tryParse)
|
||||
: null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -35,10 +35,22 @@ public interface SdkTypeId {
|
||||
*/
|
||||
@NotNull
|
||||
default Comparator<Sdk> versionComparator() {
|
||||
Comparator<String> versionStringComparator = versionStringComparator();
|
||||
return (sdk1, sdk2) -> {
|
||||
assert sdk1.getSdkType() == this : sdk1;
|
||||
assert sdk2.getSdkType() == this : sdk2;
|
||||
return StringUtil.compareVersionNumbers(sdk1.getVersionString(), sdk2.getVersionString());
|
||||
return versionStringComparator.compare(sdk1.getVersionString(), sdk2.getVersionString());
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A comparator to compare versions of SDKs of that SdkType, e.g. versions from
|
||||
* {@link Sdk#getVersionString()} or {@link SdkType#getVersionString}
|
||||
* <br />
|
||||
* The implementation has to be synchronized with {@link #versionComparator()}
|
||||
*/
|
||||
@NotNull
|
||||
default Comparator<String> versionStringComparator() {
|
||||
return (v1, v2) -> StringUtil.compareVersionNumbers(v1, v2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,11 +99,5 @@ public class PythonMockSdk {
|
||||
public boolean isLocalSdk(@NotNull Sdk sdk) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Comparator<Sdk> versionComparator() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user