diff --git a/src/main/java/dev/jbang/devkitman/JdkManager.java b/src/main/java/dev/jbang/devkitman/JdkManager.java
index 85157d7..dc2696e 100644
--- a/src/main/java/dev/jbang/devkitman/JdkManager.java
+++ b/src/main/java/dev/jbang/devkitman/JdkManager.java
@@ -422,6 +422,28 @@ private Jdk getJdkByVersion(
.orElse(null);
}
+ /**
+ * Returns an Jdk object for an available JDK of the given version
+ * or id. Will return null if no JDK of that version or id is
+ * currently available.
+ *
+ * @param versionOrId A version pattern, id or null
+ * @return A Jdk object or null
+ */
+ public Jdk.@Nullable AvailableJdk getAvailableJdk(String versionOrId) {
+ if (versionOrId != null) {
+ if (JavaUtils.isRequestedVersion(versionOrId)) {
+ return getAvailableJdkByVersion(
+ JavaUtils.minRequestedVersion(versionOrId),
+ JavaUtils.isOpenVersion(versionOrId));
+ } else {
+ return getAvailableJdkById(versionOrId);
+ }
+ } else {
+ return getAvailableJdkByVersion(0, true);
+ }
+ }
+
private Jdk.@Nullable AvailableJdk getAvailableJdkByVersion(int version, boolean openVersion) {
return providers(JdkProvider.Predicates.canInstall)
.map(p -> p.getAvailableByVersion(version, openVersion))