From 228f3df03822b18e465c27f1291c9f5848843034 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 2 May 2026 01:38:17 +0000 Subject: [PATCH 1/2] Initial plan From 331f695a82337fe3a7bb4e3050715535dc78b596 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 2 May 2026 01:53:39 +0000 Subject: [PATCH 2/2] Add available_ea_releases field to ReleaseInfo API response Agent-Logs-Url: https://github.com/adoptium/api.adoptium.net/sessions/edf73632-383a-4571-8aeb-3efc6678ab7b Co-authored-by: karianna <180840+karianna@users.noreply.github.com> --- .../api/v3/dataSources/APIDataStoreImpl.kt | 4 +++- .../net/adoptium/api/ApiDataStoreStub.kt | 3 ++- .../net/adoptium/api/v3/models/ReleaseInfo.kt | 7 +++++- .../v3/dataSources/ReleaseVersionResolver.kt | 23 +++++++++++-------- .../api/ReleaseVersionResolverTest.kt | 11 +++++++++ 5 files changed, 36 insertions(+), 12 deletions(-) diff --git a/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/dataSources/APIDataStoreImpl.kt b/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/dataSources/APIDataStoreImpl.kt index 426919e56..34a6e3aa6 100644 --- a/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/dataSources/APIDataStoreImpl.kt +++ b/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/dataSources/APIDataStoreImpl.kt @@ -240,9 +240,11 @@ open class APIDataStoreImpl : APIDataStore { forceUpdate: Boolean, logEntries: Boolean ): AdoptRepos { - // Scan the currently available versions plus 5 + // Scan the currently available versions plus 5, and also include known EA versions val versions = releaseInfo.available_releases.toList() .plus((releaseInfo.available_releases.last()..releaseInfo.available_releases.last() + 5)) + .plus(releaseInfo.available_ea_releases.toList()) + .distinct() .filter { it <= MAX_VERSION_TO_LOAD } val update = loadDataFromDb( diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/ApiDataStoreStub.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/ApiDataStoreStub.kt index 2545c3bed..bac7e64be 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/ApiDataStoreStub.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/ApiDataStoreStub.kt @@ -61,7 +61,8 @@ open class ApiDataStoreStub : APIDataStore { 11, 12, 13, - 15 + 15, + arrayOf(8, 9, 10, 11, 12, 18) ) } diff --git a/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/ReleaseInfo.kt b/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/ReleaseInfo.kt index ab05a70dd..3a89d66f7 100644 --- a/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/ReleaseInfo.kt +++ b/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/ReleaseInfo.kt @@ -10,6 +10,9 @@ class ReleaseInfo { @Schema(example = "[8,11]", description = "The LTS versions for which adopt have produced a ga release") val available_lts_releases: Array + @Schema(example = "[20,21]", description = "The versions for which adopt have produced an ea release") + val available_ea_releases: Array + @Schema(example = "11", description = "The highest LTS version for which adopt have produced a ga release") val most_recent_lts: Int @@ -28,7 +31,8 @@ class ReleaseInfo { most_recent_lts: Int, most_recent_feature_release: Int, most_recent_feature_version: Int, - tip_version: Int + tip_version: Int, + available_ea_releases: Array = emptyArray() ) { this.available_releases = available_releases this.available_lts_releases = available_lts_releases @@ -36,5 +40,6 @@ class ReleaseInfo { this.most_recent_feature_release = most_recent_feature_release this.most_recent_feature_version = most_recent_feature_version this.tip_version = tip_version + this.available_ea_releases = available_ea_releases } } diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/dataSources/ReleaseVersionResolver.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/dataSources/ReleaseVersionResolver.kt index 913c8dba3..335d7e904 100644 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/dataSources/ReleaseVersionResolver.kt +++ b/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/dataSources/ReleaseVersionResolver.kt @@ -12,35 +12,39 @@ class ReleaseVersionResolver @Inject constructor( ) { fun formReleaseInfo(repo: AdoptRepos): ReleaseInfo { - val gaReleases = repo + val allReleases = repo .allReleases .getReleases() - .filter { it.release_type == ReleaseType.ga } .toList() + val gaReleases = allReleases + .filter { it.release_type == ReleaseType.ga } + val availableReleases = gaReleases .map { it.version_data.major } .distinct() .sorted() - .toList() .toTypedArray() val mostRecentFeatureRelease: Int = availableReleases.lastOrNull() ?: 0 val ltsVersions = versionSupplier.getLtsVersions() val availableLtsReleases: Array = gaReleases - .asSequence() .filter { ltsVersions.contains(it.version_data.major) } .map { it.version_data.major } .distinct() .sorted() - .toList() .toTypedArray() val mostRecentLts = availableLtsReleases.lastOrNull() ?: 0 - val mostRecentFeatureVersion: Int = repo - .allReleases - .getReleases() + val availableEaReleases: Array = allReleases + .filter { it.release_type == ReleaseType.ea } + .map { it.version_data.major } + .distinct() + .sorted() + .toTypedArray() + + val mostRecentFeatureVersion: Int = allReleases .map { it.version_data.major } .distinct() .sorted() @@ -54,7 +58,8 @@ class ReleaseVersionResolver @Inject constructor( mostRecentLts, mostRecentFeatureRelease, mostRecentFeatureVersion, - tip + tip, + availableEaReleases ) } } diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/ReleaseVersionResolverTest.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/ReleaseVersionResolverTest.kt index ba9ddf803..57d5cf6be 100644 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/ReleaseVersionResolverTest.kt +++ b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/ReleaseVersionResolverTest.kt @@ -61,6 +61,17 @@ class ReleaseVersionResolverTest : BaseTest() { } } + @Test + fun availableEaReleasesIsCorrect() { + check { releaseInfo -> + // all versions have ea releases (versions in TEST_RESOURCES), including version 18 which is ea-only + val versions = AdoptReposTestDataGenerator.generate().repos.keys + .toTypedArray() + + releaseInfo.available_ea_releases.contentEquals(versions) + } + } + @Test fun tipVersionIsCorrect() { check { releaseInfo ->