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))