mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +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
|
@Override
|
||||||
public String getBinPath(@NotNull Sdk sdk) {
|
public String getBinPath(@NotNull Sdk sdk) {
|
||||||
return getConvertedHomePath(sdk) + "bin";
|
return getConvertedHomePath(sdk) + "bin";
|
||||||
@@ -341,9 +349,17 @@ public final class JavaSdkImpl extends JavaSdk {
|
|||||||
return version != null ? JavaSdkVersion.fromJavaVersion(version) : null;
|
return version != null ? JavaSdkVersion.fromJavaVersion(version) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private JavaVersion getJavaVersion(Sdk sdk) {
|
@Nullable
|
||||||
|
private JavaVersion getJavaVersion(@NotNull Sdk sdk) {
|
||||||
String versionString = sdk.getVersionString();
|
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
|
@Override
|
||||||
|
|||||||
@@ -35,10 +35,22 @@ public interface SdkTypeId {
|
|||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
default Comparator<Sdk> versionComparator() {
|
default Comparator<Sdk> versionComparator() {
|
||||||
|
Comparator<String> versionStringComparator = versionStringComparator();
|
||||||
return (sdk1, sdk2) -> {
|
return (sdk1, sdk2) -> {
|
||||||
assert sdk1.getSdkType() == this : sdk1;
|
assert sdk1.getSdkType() == this : sdk1;
|
||||||
assert sdk2.getSdkType() == this : sdk2;
|
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) {
|
public boolean isLocalSdk(@NotNull Sdk sdk) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public Comparator<Sdk> versionComparator() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user