From 379ce3dbe11d16a39221a64ac274afc9e9a5d991 Mon Sep 17 00:00:00 2001 From: Tako Schotanus Date: Tue, 1 Sep 2026 21:34:52 +0200 Subject: [PATCH] feat: added `getAvailableJdk()` to the `JdkManager` --- .../java/dev/jbang/devkitman/JdkManager.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) 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))