diff --git a/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/DownloadStatsInterface.kt b/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/DownloadStatsInterface.kt index 7dba12ad0..d563d92cd 100644 --- a/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/DownloadStatsInterface.kt +++ b/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/DownloadStatsInterface.kt @@ -3,7 +3,6 @@ package net.adoptium.api.v3 import jakarta.enterprise.context.ApplicationScoped import jakarta.inject.Inject import net.adoptium.api.v3.config.APIConfig -import net.adoptium.api.v3.dataSources.VersionSupplier import net.adoptium.api.v3.dataSources.persitence.ApiPersistence import net.adoptium.api.v3.models.DbStatsEntry import net.adoptium.api.v3.models.DockerDownloadStatsDbEntry @@ -14,6 +13,7 @@ import net.adoptium.api.v3.models.JvmImpl import net.adoptium.api.v3.models.MonthlyDownloadDiff import net.adoptium.api.v3.models.StatsSource import net.adoptium.api.v3.models.TotalStats +import net.adoptium.api.v3.models.Versions import org.eclipse.microprofile.openapi.annotations.media.Schema import java.time.ZonedDateTime import java.time.temporal.ChronoUnit @@ -29,16 +29,12 @@ class StatEntry( @ApplicationScoped class DownloadStatsInterface { - @Schema(hidden = true) - private var versionSupplier: VersionSupplier - @Schema(hidden = true) private val dataStore: ApiPersistence @Inject - constructor(dataStore: ApiPersistence, versionSupplier: VersionSupplier) { + constructor(dataStore: ApiPersistence) { this.dataStore = dataStore - this.versionSupplier = versionSupplier } suspend fun getTrackingStats( @@ -288,7 +284,7 @@ class DownloadStatsInterface { } private suspend fun getGithubStats(): List { - return versionSupplier.getAllVersions() + return Versions.versions .mapNotNull { featureVersion -> dataStore.getLatestGithubStatsForFeatureVersion(featureVersion) } 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 a348b9f6f..aa81d5da7 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 @@ -11,6 +11,7 @@ import net.adoptium.api.v3.dataSources.persitence.mongo.UpdatedInfo import net.adoptium.api.v3.models.JvmImpl import net.adoptium.api.v3.models.ReleaseInfo import net.adoptium.api.v3.models.Vendor +import net.adoptium.api.v3.models.Versions import org.slf4j.LoggerFactory import java.time.ZonedDateTime import java.util.concurrent.Executors @@ -20,7 +21,6 @@ import kotlin.concurrent.timerTask @ApplicationScoped open class APIDataStoreImpl : APIDataStore { - private var versionSupplier: VersionSupplier private var dataStore: ApiPersistence private var updatedAt: UpdatedInfo private var binaryRepos: AdoptRepos @@ -33,10 +33,8 @@ open class APIDataStoreImpl : APIDataStore { } @Inject - constructor(dataStore: ApiPersistence, versionSupplier: VersionSupplier) { + constructor(dataStore: ApiPersistence) { this.dataStore = dataStore - this.versionSupplier = versionSupplier; - updatedAt = UpdatedInfo(ZonedDateTime.now().minusYears(10), "111", 0) schedule = null binaryRepos = try { @@ -49,6 +47,14 @@ open class APIDataStoreImpl : APIDataStore { releaseInfo = loadReleaseInfo() } + constructor(binaryRepos: AdoptRepos, dataStore: ApiPersistence) { + this.dataStore = dataStore + updatedAt = UpdatedInfo(ZonedDateTime.now().minusYears(10), "111", 0) + schedule = null + this.binaryRepos = binaryRepos + this.releaseInfo = loadReleaseInfo() + } + override fun schedulePeriodicUpdates() { if (schedule == null) { schedule = Executors @@ -91,8 +97,8 @@ open class APIDataStoreImpl : APIDataStore { val updated = dataStore.getUpdatedAt() if (forceUpdate || updated != updatedAt) { - val data = versionSupplier - .getAllVersions() + val data = Versions + .versions .map { version -> dataStore.readReleaseData(version) } diff --git a/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/dataSources/VersionSupplier.kt b/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/dataSources/VersionSupplier.kt deleted file mode 100644 index 1959d418d..000000000 --- a/adoptium-api-v3-persistence/src/main/kotlin/net/adoptium/api/v3/dataSources/VersionSupplier.kt +++ /dev/null @@ -1,7 +0,0 @@ -package net.adoptium.api.v3.dataSources - -interface VersionSupplier { - fun getTipVersion(): Int? - fun getLtsVersions(): Array - fun getAllVersions(): Array -} diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/FrontEndVersionSupplier.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/FrontEndVersionSupplier.kt deleted file mode 100644 index d6f788147..000000000 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/FrontEndVersionSupplier.kt +++ /dev/null @@ -1,23 +0,0 @@ -package net.adoptium.api.v3; - -import jakarta.enterprise.context.ApplicationScoped -import jakarta.inject.Inject -import net.adoptium.api.v3.dataSources.APIDataStore -import net.adoptium.api.v3.dataSources.VersionSupplier - -@ApplicationScoped -class FrontEndVersionSupplier @Inject constructor( - val apiDataStore: APIDataStore -) : VersionSupplier { - override fun getTipVersion(): Int? { - return apiDataStore.getReleaseInfo().tip_version - } - - override fun getLtsVersions(): Array { - return apiDataStore.getReleaseInfo().available_lts_releases - } - - override fun getAllVersions(): Array { - return apiDataStore.getReleaseInfo().available_releases - } -} diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/filters/ReleaseFilter.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/filters/ReleaseFilter.kt index 0a4f5f210..1363b4e8e 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/filters/ReleaseFilter.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/filters/ReleaseFilter.kt @@ -1,43 +1,14 @@ package net.adoptium.api.v3.filters -import jakarta.enterprise.context.ApplicationScoped -import jakarta.inject.Inject import net.adoptium.api.v3.config.Ecosystem -import net.adoptium.api.v3.dataSources.VersionSupplier import net.adoptium.api.v3.models.JvmImpl import net.adoptium.api.v3.models.Release import net.adoptium.api.v3.models.ReleaseType import net.adoptium.api.v3.models.Vendor +import net.adoptium.api.v3.models.Versions import java.util.function.Predicate -@ApplicationScoped -class ReleaseFilterFactory @Inject constructor( - private val versionSupplier: VersionSupplier -) { - fun createFilter( - releaseType: ReleaseType? = null, - featureVersion: Int? = null, - releaseName: String? = null, - vendor: Vendor? = null, - versionRange: VersionRangeFilter? = null, - lts: Boolean? = null, - jvm_impl: JvmImpl? = null - ): Predicate { - return ReleaseFilter( - versionSupplier.getLtsVersions(), - releaseType, - featureVersion, - releaseName, - vendor, - versionRange, - lts, - jvm_impl - ) - } -} - -private class ReleaseFilter( - private val ltsVersions: Array, +class ReleaseFilter( private val releaseType: ReleaseType? = null, private val featureVersion: Int? = null, private val releaseName: String? = null, @@ -48,7 +19,7 @@ private class ReleaseFilter( ) : Predicate { override fun test(release: Release): Boolean { val ltsFilter = if (lts != null) { - val isLts = ltsVersions.contains(release.version_data.major) + val isLts = Versions.ltsVersions.contains(release.version_data.major) lts == isLts } else { true diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/AssetsResource.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/AssetsResource.kt index 3cb683138..d12a9edbc 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/AssetsResource.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/AssetsResource.kt @@ -22,7 +22,7 @@ import net.adoptium.api.v3.dataSources.APIDataStore import net.adoptium.api.v3.dataSources.SortMethod import net.adoptium.api.v3.dataSources.SortOrder import net.adoptium.api.v3.filters.BinaryFilter -import net.adoptium.api.v3.filters.ReleaseFilterFactory +import net.adoptium.api.v3.filters.ReleaseFilter import net.adoptium.api.v3.models.Architecture import net.adoptium.api.v3.models.BinaryAssetView import net.adoptium.api.v3.models.CLib @@ -52,8 +52,7 @@ class AssetsResource @Inject constructor( private val apiDataStore: APIDataStore, - private val releaseEndpoint: ReleaseEndpoint, - private val releaseFilterFactory: ReleaseFilterFactory + private val releaseEndpoint: ReleaseEndpoint ) { @GET @@ -157,7 +156,7 @@ constructor( val releaseSortMethod = sortMethod ?: SortMethod.DEFAULT val vendorNonNull = vendor ?: Vendor.getDefault() - val releaseFilter = releaseFilterFactory.createFilter(releaseType = release_type, featureVersion = version, vendor = vendorNonNull, jvm_impl = jvm_impl) + val releaseFilter = ReleaseFilter(releaseType = release_type, featureVersion = version, vendor = vendorNonNull, jvm_impl = jvm_impl) val binaryFilter = BinaryFilter(os, arch, image_type, jvm_impl, heap_size, project, before, cLib) val repos = apiDataStore.getAdoptRepos().getFeatureRelease(version!!) @@ -234,7 +233,7 @@ constructor( throw BadRequestException("Must provide a vendor") } - val releaseFilter = releaseFilterFactory.createFilter(vendor = vendor, releaseName = releaseName.trim(), jvm_impl = jvm_impl) + val releaseFilter = ReleaseFilter(vendor = vendor, releaseName = releaseName.trim(), jvm_impl = jvm_impl) val binaryFilter = BinaryFilter(os, arch, image_type, jvm_impl, heap_size, project, null, cLib) val releases = apiDataStore @@ -420,7 +419,7 @@ constructor( ): List { val binaryVendor = vendor ?: Vendor.getDefault() - val releaseFilter = releaseFilterFactory.createFilter(ReleaseType.ga, featureVersion = version, vendor = binaryVendor, jvm_impl = jvm_impl) + val releaseFilter = ReleaseFilter(ReleaseType.ga, featureVersion = version, vendor = binaryVendor, jvm_impl = jvm_impl) val binaryFilter = BinaryFilter(os, arch, image_type, jvm_impl, null, null) val releases = apiDataStore .getAdoptRepos() diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/ReleaseEndpoint.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/ReleaseEndpoint.kt index 5ce11b3e2..92ec6026c 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/ReleaseEndpoint.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/ReleaseEndpoint.kt @@ -7,7 +7,7 @@ import net.adoptium.api.v3.dataSources.APIDataStore import net.adoptium.api.v3.dataSources.SortMethod import net.adoptium.api.v3.dataSources.SortOrder import net.adoptium.api.v3.filters.BinaryFilter -import net.adoptium.api.v3.filters.ReleaseFilterFactory +import net.adoptium.api.v3.filters.ReleaseFilter import net.adoptium.api.v3.filters.VersionRangeFilter import net.adoptium.api.v3.models.Architecture import net.adoptium.api.v3.models.CLib @@ -26,8 +26,7 @@ import net.adoptium.api.v3.parser.maven.InvalidVersionSpecificationException class ReleaseEndpoint @Inject constructor( - private val apiDataStore: APIDataStore, - private val releaseFilterFactory: ReleaseFilterFactory + private val apiDataStore: APIDataStore ) { fun getReleases( sortOrder: SortOrder?, @@ -57,7 +56,7 @@ constructor( throw BadRequestException("Invalid version string", e) } - val releaseFilter = releaseFilterFactory.createFilter(releaseType = release_type, vendor = vendorNonNull, versionRange = range, lts = lts, jvm_impl = jvm_impl) + val releaseFilter = ReleaseFilter(releaseType = release_type, vendor = vendorNonNull, versionRange = range, lts = lts, jvm_impl = jvm_impl) val binaryFilter = BinaryFilter(os = os, arch = arch, imageType = image_type, jvmImpl = jvm_impl, heapSize = heap_size, project = project, cLib = cLib) return apiDataStore diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/packages/PackageEndpoint.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/packages/PackageEndpoint.kt index f96d04ed5..f650e367f 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/packages/PackageEndpoint.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/main/kotlin/net/adoptium/api/v3/routes/packages/PackageEndpoint.kt @@ -1,15 +1,12 @@ package net.adoptium.api.v3.routes.packages -import jakarta.enterprise.context.ApplicationScoped -import jakarta.inject.Inject -import jakarta.ws.rs.core.Response import net.adoptium.api.v3.JsonMapper import net.adoptium.api.v3.dataSources.APIDataStore import net.adoptium.api.v3.dataSources.SortMethod import net.adoptium.api.v3.dataSources.SortOrder import net.adoptium.api.v3.dataSources.models.Releases.Companion.RELEASE_COMPARATOR import net.adoptium.api.v3.filters.BinaryFilter -import net.adoptium.api.v3.filters.ReleaseFilterFactory +import net.adoptium.api.v3.filters.ReleaseFilter import net.adoptium.api.v3.models.APIError import net.adoptium.api.v3.models.Architecture import net.adoptium.api.v3.models.Asset @@ -24,11 +21,12 @@ import net.adoptium.api.v3.models.Release import net.adoptium.api.v3.models.ReleaseType import net.adoptium.api.v3.models.Vendor import java.net.URI +import jakarta.enterprise.context.ApplicationScoped +import jakarta.inject.Inject +import jakarta.ws.rs.core.Response @ApplicationScoped -open class PackageEndpoint @Inject constructor( - private val apiDataStore: APIDataStore, - private val releaseFilterFactory: ReleaseFilterFactory) { +open class PackageEndpoint @Inject constructor(private val apiDataStore: APIDataStore) { open fun getReleases( release_name: String?, @@ -41,7 +39,7 @@ open class PackageEndpoint @Inject constructor( project: Project?, cLib: CLib? ): List { - val releaseFilter = releaseFilterFactory.createFilter(releaseName = release_name, vendor = vendor, jvm_impl = jvm_impl) + val releaseFilter = ReleaseFilter(releaseName = release_name, vendor = vendor, jvm_impl = jvm_impl) val binaryFilter = BinaryFilter(os, arch, image_type, jvm_impl, heap_size, project, null, cLib) return apiDataStore.getAdoptRepos().getFilteredReleases(releaseFilter, binaryFilter, SortOrder.DESC, SortMethod.DEFAULT).toList() } @@ -88,7 +86,7 @@ open class PackageEndpoint @Inject constructor( } open fun getRelease(release_type: ReleaseType?, version: Int?, vendor: Vendor?, os: OperatingSystem?, arch: Architecture?, image_type: ImageType?, jvm_impl: JvmImpl?, heap_size: HeapSize?, project: Project?, cLib: CLib?): List { - val releaseFilter = releaseFilterFactory.createFilter(releaseType = release_type, featureVersion = version, vendor = vendor, jvm_impl = jvm_impl) + val releaseFilter = ReleaseFilter(releaseType = release_type, featureVersion = version, vendor = vendor, jvm_impl = jvm_impl) val binaryFilter = BinaryFilter(os, arch, image_type, jvm_impl, heap_size, project, null, cLib) val releases = apiDataStore.getAdoptRepos().getFilteredReleases(releaseFilter, binaryFilter, SortOrder.DESC, SortMethod.DEFAULT).toList() diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/AssetsResourceFeatureReleasePathSortOrderTest.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/AssetsResourceFeatureReleasePathSortOrderTest.kt index 72ac4eb74..24a56a767 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/AssetsResourceFeatureReleasePathSortOrderTest.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/AssetsResourceFeatureReleasePathSortOrderTest.kt @@ -10,7 +10,6 @@ import net.adoptium.api.v3.dataSources.SortOrder import net.adoptium.api.v3.dataSources.models.AdoptRepos import net.adoptium.api.v3.dataSources.models.FeatureRelease import net.adoptium.api.v3.dataSources.models.Releases -import net.adoptium.api.v3.filters.ReleaseFilterFactory import net.adoptium.api.v3.models.Architecture import net.adoptium.api.v3.models.Binary import net.adoptium.api.v3.models.DateTime @@ -34,7 +33,7 @@ import java.time.ZonedDateTime class AssetsResourceFeatureReleasePathSortOrderTest : FrontendTest() { val apiDataStore = ApiDataStoreStub(createRepo()) - var assetResource: AssetsResource = AssetsResource(apiDataStore, ReleaseEndpoint(apiDataStore, releaseFilterFactory), releaseFilterFactory) + var assetResource: AssetsResource = AssetsResource(apiDataStore, ReleaseEndpoint(apiDataStore)) companion object { fun createRepo(): AdoptRepos { diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/AssetsResourceReleaseNamePathTest.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/AssetsResourceReleaseNamePathTest.kt index 2cc8b29c1..f59a7029f 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/AssetsResourceReleaseNamePathTest.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/AssetsResourceReleaseNamePathTest.kt @@ -2,14 +2,12 @@ package net.adoptium.api import io.quarkus.test.junit.QuarkusTest import io.restassured.RestAssured -import jakarta.inject.Inject -import jakarta.ws.rs.BadRequestException import net.adoptium.api.v3.JsonMapper import net.adoptium.api.v3.dataSources.APIDataStore import net.adoptium.api.v3.dataSources.SortMethod import net.adoptium.api.v3.dataSources.SortOrder import net.adoptium.api.v3.filters.BinaryFilter -import net.adoptium.api.v3.filters.ReleaseFilterFactory +import net.adoptium.api.v3.filters.ReleaseFilter import net.adoptium.api.v3.models.Architecture import net.adoptium.api.v3.models.Release import net.adoptium.api.v3.models.ReleaseType @@ -24,6 +22,8 @@ import org.junit.jupiter.api.TestFactory import org.junit.jupiter.api.assertThrows import org.junit.jupiter.api.extension.ExtendWith import java.util.stream.Stream +import jakarta.inject.Inject +import jakarta.ws.rs.BadRequestException @QuarkusTest @ExtendWith(value = [DbExtension::class]) @@ -40,7 +40,7 @@ class AssetsResourceReleaseNamePathTest : FrontendTest() { apiDataStore .getAdoptRepos() .allReleases - .getReleases(releaseFilterFactory.createFilter(vendor = vendor), SortOrder.DESC, SortMethod.DEFAULT) + .getReleases(ReleaseFilter(vendor = vendor), SortOrder.DESC, SortMethod.DEFAULT) .take(3) .flatMap { release -> ReleaseType @@ -86,7 +86,7 @@ class AssetsResourceReleaseNamePathTest : FrontendTest() { fun `for frontend requests x86 == x32`() { val releaseName = apiDataStore .getAdoptRepos() - .getFilteredReleases(releaseFilterFactory.createFilter(vendor = Vendor.getDefault()), BinaryFilter(arch = Architecture.x32), SortOrder.DESC, SortMethod.DEFAULT) + .getFilteredReleases(ReleaseFilter(vendor = Vendor.getDefault()), BinaryFilter(arch = Architecture.x32), SortOrder.DESC, SortMethod.DEFAULT) .first() .release_name @@ -114,7 +114,7 @@ class AssetsResourceReleaseNamePathTest : FrontendTest() { val releaseName = apiDataStore .getAdoptRepos() .allReleases - .getReleases(releaseFilterFactory.createFilter(vendor = Vendor.getDefault()), SortOrder.DESC, SortMethod.DEFAULT) + .getReleases(ReleaseFilter(vendor = Vendor.getDefault()), SortOrder.DESC, SortMethod.DEFAULT) .first() .release_name @@ -128,7 +128,7 @@ class AssetsResourceReleaseNamePathTest : FrontendTest() { @Test fun `missing release_name 400s`() { assertThrows { - AssetsResource(apiDataStore, ReleaseEndpoint(apiDataStore, releaseFilterFactory), releaseFilterFactory) + AssetsResource(apiDataStore, ReleaseEndpoint(apiDataStore)) .get( Vendor.adoptopenjdk, null, @@ -146,7 +146,7 @@ class AssetsResourceReleaseNamePathTest : FrontendTest() { @Test fun `missing vendor 400s`() { assertThrows { - AssetsResource(apiDataStore, ReleaseEndpoint(apiDataStore, releaseFilterFactory), releaseFilterFactory) + AssetsResource(apiDataStore, ReleaseEndpoint(apiDataStore)) .get( null, "foo", diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/DownloadStatsPathTest.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/DownloadStatsPathTest.kt index 7eb782ae4..947d05586 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/DownloadStatsPathTest.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/DownloadStatsPathTest.kt @@ -21,7 +21,6 @@ import org.junit.jupiter.api.assertThrows import org.junit.jupiter.api.extension.ExtendWith import java.time.format.DateTimeFormatter import jakarta.ws.rs.BadRequestException -import net.adoptium.api.testDoubles.UpdatableVersionSupplierStub import net.adoptium.api.v3.models.ReleaseType @ExtendWith(value = [DbExtension::class]) @@ -48,7 +47,7 @@ class DownloadStatsPathTest : FrontendTest() { createGithubData() ) - val downloadStatsResource = DownloadStatsResource(apiDataStore, DownloadStatsInterface(persistance, UpdatableVersionSupplierStub())) + val downloadStatsResource = DownloadStatsResource(apiDataStore, DownloadStatsInterface(persistance)) downloadStatsResource } } diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/FrontendTest.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/FrontendTest.kt index fa0fd8dcc..a928cb96e 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/FrontendTest.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/FrontendTest.kt @@ -2,19 +2,17 @@ package net.adoptium.api import net.adoptium.api.testDoubles.InMemoryApiPersistence import net.adoptium.api.testDoubles.InMemoryInternalDbStore -import net.adoptium.api.testDoubles.UpdatableVersionSupplierStub import net.adoptium.api.v3.dataSources.APIDataStore import net.adoptium.api.v3.dataSources.SortMethod import net.adoptium.api.v3.dataSources.SortOrder import net.adoptium.api.v3.filters.BinaryFilter -import net.adoptium.api.v3.filters.ReleaseFilterFactory +import net.adoptium.api.v3.filters.ReleaseFilter import net.adoptium.api.v3.models.Binary import net.adoptium.api.v3.models.ImageType import net.adoptium.api.v3.models.Release import net.adoptium.api.v3.models.Vendor import org.jboss.weld.junit5.auto.AddPackages import org.jboss.weld.junit5.auto.EnableAutoWeld -import java.util.function.Predicate @EnableAutoWeld @AddPackages( @@ -26,12 +24,10 @@ import java.util.function.Predicate ) open class FrontendTest { - var releaseFilterFactory: ReleaseFilterFactory = ReleaseFilterFactory(UpdatableVersionSupplierStub()) - protected fun getReleases(): Sequence { return BaseTest.adoptRepos .getFilteredReleases( - releaseFilterFactory.createFilter(featureVersion = 8, vendor = Vendor.getDefault()), + ReleaseFilter(featureVersion = 8, vendor = Vendor.getDefault()), BinaryFilter(), SortOrder.ASC, SortMethod.DEFAULT @@ -40,12 +36,12 @@ open class FrontendTest { protected fun getRandomBinary(): Pair { return getRandomBinary( - releaseFilterFactory.createFilter(featureVersion = 8, vendor = Vendor.getDefault()), + ReleaseFilter(featureVersion = 8, vendor = Vendor.getDefault()), BinaryFilter(imageType = ImageType.jdk) ) } - protected fun getRandomBinary(releaseFilter: Predicate, binaryFilter: BinaryFilter): Pair { + protected fun getRandomBinary(releaseFilter: ReleaseFilter, binaryFilter: BinaryFilter): Pair { val release = BaseTest.adoptRepos .getFilteredReleases( releaseFilter, diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/MonthlyStatsPathTest.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/MonthlyStatsPathTest.kt index 858177dba..4a4f60a51 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/MonthlyStatsPathTest.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/MonthlyStatsPathTest.kt @@ -2,7 +2,6 @@ package net.adoptium.api import kotlinx.coroutines.runBlocking import net.adoptium.api.testDoubles.InMemoryApiPersistence -import net.adoptium.api.testDoubles.UpdatableVersionSupplierStub import net.adoptium.api.v3.DownloadStatsInterface import net.adoptium.api.v3.TimeSource import net.adoptium.api.v3.config.APIConfig @@ -13,10 +12,10 @@ import net.adoptium.api.v3.models.JvmImpl import net.adoptium.api.v3.models.MonthlyDownloadDiff import net.adoptium.api.v3.models.StatsSource import net.adoptium.api.v3.routes.stats.DownloadStatsResource -import org.junit.jupiter.api.Assertions.assertEquals -import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertTrue @ExtendWith(value = [DbExtension::class]) class MonthlyStatsPathTest : FrontendTest() { @@ -28,7 +27,7 @@ class MonthlyStatsPathTest : FrontendTest() { fun initDownloadStatsResource(): DownloadStatsResource { persistence = initApi() - return DownloadStatsResource(ApiDataStoreStub(), DownloadStatsInterface(persistence, UpdatableVersionSupplierStub())) + return DownloadStatsResource(ApiDataStoreStub(), DownloadStatsInterface(persistence)) } fun initApi(): ApiPersistence { diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/packages/PackageEndpointTest.kt b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/packages/PackageEndpointTest.kt index 54afcbac3..c91f5c7b2 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/packages/PackageEndpointTest.kt +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/kotlin/net/adoptium/api/packages/PackageEndpointTest.kt @@ -3,9 +3,8 @@ package net.adoptium.api.packages import io.restassured.RestAssured import io.restassured.response.Response import net.adoptium.api.FrontendTest -import net.adoptium.api.testDoubles.UpdatableVersionSupplierStub import net.adoptium.api.v3.filters.BinaryFilter -import net.adoptium.api.v3.filters.ReleaseFilterFactory +import net.adoptium.api.v3.filters.ReleaseFilter import net.adoptium.api.v3.models.Architecture import net.adoptium.api.v3.models.Binary import net.adoptium.api.v3.models.CLib @@ -80,7 +79,7 @@ abstract class PackageEndpointTest : FrontendTest() { } protected fun getClibBinary() = getRandomBinary( - ReleaseFilterFactory(UpdatableVersionSupplierStub()).createFilter( + ReleaseFilter( featureVersion = 11, releaseType = ReleaseType.ea, vendor = Vendor.getDefault(), diff --git a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/resources/application.properties b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/resources/application.properties index f5f7eff76..3b9c12ebd 100644 --- a/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/resources/application.properties +++ b/adoptium-frontend-parent/adoptium-api-v3-frontend/src/test/resources/application.properties @@ -1,4 +1,3 @@ quarkus.log.category."org.jboss".level=WARN -quarkus.class-loading.removed-resources."net.adoptium.api\:adoptium-api-v3-updater\:classes"=net/adoptium/api/v3/V3UpdaterApp.class -quarkus.arc.exclude-types=net.adoptium.api.v3.dataSources.UpdatableVersionSupplierImpl +quarkus.class-loading.removed-resources."net.adoptium.api\:adoptium-api-v3-updater\:classes"=net/adoptium/api/v3/V3UpdaterApp.class \ No newline at end of file diff --git a/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/Versions.kt b/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/Versions.kt new file mode 100644 index 000000000..39db3b5d4 --- /dev/null +++ b/adoptium-models-parent/adoptium-api-v3-models/src/main/kotlin/net/adoptium/api/v3/models/Versions.kt @@ -0,0 +1,16 @@ +package net.adoptium.api.v3.models + +object Versions { + + private const val DEFAULT_LATEST_JAVA_VERSION = 23 + private const val LATEST_JAVA_VERSION_PROPERTY = "LATEST_JAVA_VERSION" + + private val latestJavaVersion: Int + val versions: Array + val ltsVersions: Array = arrayOf(8, 11, 17, 21) + + init { + latestJavaVersion = Integer.parseInt(System.getProperty(LATEST_JAVA_VERSION_PROPERTY, DEFAULT_LATEST_JAVA_VERSION.toString())) + versions = (8..latestJavaVersion).toList().toTypedArray() + } +} diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/AdoptReposBuilder.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/AdoptReposBuilder.kt index 1f64e338e..7016ad33c 100644 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/AdoptReposBuilder.kt +++ b/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/AdoptReposBuilder.kt @@ -3,7 +3,6 @@ package net.adoptium.api.v3 import ReleaseIncludeFilter import jakarta.enterprise.context.ApplicationScoped import jakarta.inject.Inject -import net.adoptium.api.v3.dataSources.VersionSupplier import net.adoptium.api.v3.dataSources.github.graphql.models.summary.GHReleaseSummary import net.adoptium.api.v3.dataSources.github.graphql.models.summary.GHRepositorySummary import net.adoptium.api.v3.dataSources.models.AdoptRepos @@ -18,10 +17,7 @@ import java.time.temporal.ChronoUnit import kotlin.math.absoluteValue @ApplicationScoped -class AdoptReposBuilder @Inject constructor( - private var adoptRepository: AdoptRepository, - private var versionSupplier: VersionSupplier - ) { +class AdoptReposBuilder @Inject constructor(private var adoptRepository: AdoptRepository) { companion object { @JvmStatic @@ -161,11 +157,10 @@ class AdoptReposBuilder @Inject constructor( } } - suspend fun build(filter: ReleaseIncludeFilter): AdoptRepos { + suspend fun build(versions: Array, filter: ReleaseIncludeFilter): AdoptRepos { excluded.clear() // Fetch repos in parallel - val reposMap = versionSupplier - .getAllVersions() + val reposMap = versions .reversed() .mapNotNull { version -> adoptRepository.getRelease(version, filter) diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/V3Updater.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/V3Updater.kt index a3ea1f1ba..098627c1e 100644 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/V3Updater.kt +++ b/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/V3Updater.kt @@ -15,11 +15,11 @@ import net.adoptium.api.v3.config.APIConfig import net.adoptium.api.v3.dataSources.APIDataStore import net.adoptium.api.v3.dataSources.ReleaseVersionResolver import net.adoptium.api.v3.dataSources.UpdaterJsonMapper -import net.adoptium.api.v3.dataSources.UpdatableVersionSupplier import net.adoptium.api.v3.dataSources.models.AdoptRepos import net.adoptium.api.v3.dataSources.persitence.ApiPersistence import net.adoptium.api.v3.models.Release import net.adoptium.api.v3.models.ReleaseType +import net.adoptium.api.v3.models.Versions import net.adoptium.api.v3.releaseNotes.AdoptReleaseNotes import net.adoptium.api.v3.stats.StatsInterface import org.slf4j.LoggerFactory @@ -45,8 +45,7 @@ class V3Updater @Inject constructor( private val database: ApiPersistence, private val statsInterface: StatsInterface, private val releaseVersionResolver: ReleaseVersionResolver, - private val adoptReleaseNotes: AdoptReleaseNotes, - private val updatableVersionSupplier: UpdatableVersionSupplier + private val adoptReleaseNotes: AdoptReleaseNotes ) : Updater { private val mutex = Mutex() @@ -213,7 +212,6 @@ class V3Updater @Inject constructor( fun run(instantFullUpdate: Boolean) { val executor = Executors.newScheduledThreadPool(2) - val delay = if (instantFullUpdate) 0L else 1L var repo: AdoptRepos = try { @@ -248,8 +246,6 @@ class V3Updater @Inject constructor( return runBlocking { LOGGER.info("Starting Full update {}", releasesOnly) - updatableVersionSupplier.updateVersions() - val filterType: ReleaseFilterType = if (releasesOnly) { ReleaseFilterType.RELEASES_ONLY } else { @@ -258,7 +254,7 @@ class V3Updater @Inject constructor( val filter = ReleaseIncludeFilter(TimeSource.now(), filterType) - val newRepoData = adoptReposBuilder.build(filter) + val newRepoData = adoptReposBuilder.build(Versions.versions, filter) val repo = copyOldReleasesIntoNewRepo(currentRepo, newRepoData, filter) 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 0c1ef8c0a..e849aee71 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 @@ -1,16 +1,30 @@ package net.adoptium.api.v3.dataSources import jakarta.enterprise.context.ApplicationScoped -import jakarta.inject.Inject import net.adoptium.api.v3.dataSources.models.AdoptRepos import net.adoptium.api.v3.models.ReleaseInfo import net.adoptium.api.v3.models.ReleaseType +import net.adoptium.api.v3.models.Versions +import jakarta.inject.Inject @ApplicationScoped class ReleaseVersionResolver @Inject constructor( - private val versionSupplier: VersionSupplier + private val updaterHtmlClient: UpdaterHtmlClient ) { + private val VERSION_FILE_URL = "https://raw.githubusercontent.com/openjdk/jdk/master/make/conf/version-numbers.conf" + + private suspend fun getTipVersion(): Int? { + val versionFile = updaterHtmlClient.get(VERSION_FILE_URL) + + return if (versionFile != null) { + Regex(""".*DEFAULT_VERSION_FEATURE=(?\d+).*""", setOf(RegexOption.MULTILINE, RegexOption.DOT_MATCHES_ALL)) + .matchEntire(versionFile)?.groups?.get("num")?.value?.toInt() + } else { + null + } + } + suspend fun formReleaseInfo(repo: AdoptRepos): ReleaseInfo { val gaReleases = repo .allReleases @@ -26,11 +40,9 @@ class ReleaseVersionResolver @Inject constructor( .toTypedArray() val mostRecentFeatureRelease: Int = availableReleases.lastOrNull() ?: 0 - val ltsVersions = versionSupplier.getLtsVersions(); - val availableLtsReleases: Array = gaReleases .asSequence() - .filter { ltsVersions.contains(it.version_data.major) } + .filter { Versions.ltsVersions.contains(it.version_data.major) } .map { it.version_data.major } .distinct() .sorted() @@ -46,7 +58,7 @@ class ReleaseVersionResolver @Inject constructor( .sorted() .lastOrNull() ?: 0 - val tip = versionSupplier.getTipVersion() ?: mostRecentFeatureVersion + val tip = getTipVersion() ?: mostRecentFeatureVersion return ReleaseInfo( availableReleases, diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/dataSources/UpdatableVersionSupplier.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/dataSources/UpdatableVersionSupplier.kt deleted file mode 100644 index 0f01490ac..000000000 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/dataSources/UpdatableVersionSupplier.kt +++ /dev/null @@ -1,5 +0,0 @@ -package net.adoptium.api.v3.dataSources - -interface UpdatableVersionSupplier : VersionSupplier { - suspend fun updateVersions() -} diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/dataSources/UpdatableVersionSupplierImpl.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/dataSources/UpdatableVersionSupplierImpl.kt deleted file mode 100644 index eb15c6be7..000000000 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/main/kotlin/net/adoptium/api/v3/dataSources/UpdatableVersionSupplierImpl.kt +++ /dev/null @@ -1,66 +0,0 @@ -package net.adoptium.api.v3.dataSources - -import jakarta.enterprise.context.ApplicationScoped -import jakarta.inject.Inject -import kotlinx.coroutines.runBlocking -import org.slf4j.Logger -import org.slf4j.LoggerFactory - -@ApplicationScoped -class UpdatableVersionSupplierImpl @Inject constructor(val updaterHtmlClient: UpdaterHtmlClient) : VersionSupplier, UpdatableVersionSupplier { - companion object { - private val LOGGER: Logger = LoggerFactory.getLogger(UpdatableVersionSupplierImpl::class.java); - } - - private val DEFAULT_LATEST_JAVA_VERSION = 24 - private val LATEST_JAVA_VERSION_PROPERTY = "LATEST_JAVA_VERSION" - - private val VERSION_FILE_URL = "https://raw.githubusercontent.com/openjdk/jdk/master/make/conf/version-numbers.conf" - - private var tipVersion: Int? = null - private var latestJavaVersion: Int - private var versions: Array - private var ltsVersions: Array = arrayOf(8, 11, 17, 21) - - init { - latestJavaVersion = Integer.parseInt(System.getProperty(LATEST_JAVA_VERSION_PROPERTY, DEFAULT_LATEST_JAVA_VERSION.toString())) - versions = (8..latestJavaVersion).toList().toTypedArray() - runBlocking { - updateVersions() - } - } - - override suspend fun updateVersions() { - try { - val versionFile = updaterHtmlClient.get(VERSION_FILE_URL) - - if (versionFile != null) { - tipVersion = Regex(""".*DEFAULT_VERSION_FEATURE=(?\d+).*""", setOf(RegexOption.MULTILINE, RegexOption.DOT_MATCHES_ALL)) - .matchEntire(versionFile)?.groups?.get("num")?.value?.toInt() - } else { - LOGGER.warn("Failed to get tip version") - } - - - if (tipVersion != null && tipVersion!! > latestJavaVersion) { - latestJavaVersion = tipVersion as Int - versions = (8..latestJavaVersion).toList().toTypedArray() - } - - } catch (e: Exception) { - LOGGER.warn("Failed to get tip version", e) - } - } - - override fun getTipVersion(): Int? { - return this.tipVersion - } - - override fun getLtsVersions(): Array { - return ltsVersions - } - - override fun getAllVersions(): Array { - return versions - } -} diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/AdoptReposBuilderTest.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/AdoptReposBuilderTest.kt index 23a5a56a3..b1faa4c3d 100644 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/AdoptReposBuilderTest.kt +++ b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/AdoptReposBuilderTest.kt @@ -1,15 +1,16 @@ package net.adoptium.api +import ReleaseFilterType +import ReleaseIncludeFilter import io.mockk.coEvery import io.mockk.coVerify import io.mockk.spyk import kotlinx.coroutines.runBlocking import net.adoptium.api.testDoubles.AdoptRepositoryStub -import net.adoptium.api.testDoubles.UpdatableVersionSupplierStub import net.adoptium.api.v3.AdoptReposBuilder import net.adoptium.api.v3.AdoptRepository import net.adoptium.api.v3.ReleaseResult -import net.adoptium.api.v3.dataSources.VersionSupplier +import net.adoptium.api.v3.TimeSource import net.adoptium.api.v3.dataSources.models.AdoptRepos import net.adoptium.api.v3.dataSources.models.GitHubId import net.adoptium.api.v3.models.GHReleaseMetadata @@ -22,7 +23,7 @@ class AdoptReposBuilderTest : BaseTest() { companion object { private val stub = AdoptRepositoryStub() - private val adoptReposBuilder: AdoptReposBuilder = AdoptReposBuilder(stub, UpdatableVersionSupplierStub()) + private val adoptReposBuilder: AdoptReposBuilder = AdoptReposBuilder(stub) private var before: AdoptRepos = stub.repo private var updated: AdoptRepos = runBlocking { adoptReposBuilder.incrementalUpdate(emptySet(), before) { null } @@ -34,7 +35,7 @@ class AdoptReposBuilderTest : BaseTest() { runBlocking { val adoptRepository = AdoptRepositoryStub() val adoptRepo = spyk(adoptRepository) - val adoptReposBuilder = AdoptReposBuilder(adoptRepo, UpdatableVersionSupplierStub()) + val adoptReposBuilder = AdoptReposBuilder(adoptRepo) adoptReposBuilder.incrementalUpdate(setOf(before.repos[8]?.releases?.nodeList?.first()?.release_name!!), before) { null } @@ -102,7 +103,7 @@ class AdoptReposBuilderTest : BaseTest() { val repo = stub.repo; val adoptRepository = AdoptRepositoryStub() val adoptRepo = spyk(adoptRepository) - val adoptReposBuilder = AdoptReposBuilder(adoptRepo, UpdatableVersionSupplierStub()) + val adoptReposBuilder = AdoptReposBuilder(adoptRepo) coEvery { adoptRepo.getReleaseById(GitHubId(AdoptRepositoryStub.toAddSemiYoungRelease.id)) } returns ReleaseResult(listOf(AdoptRepositoryStub.toAddSemiYoungRelease)) @@ -118,7 +119,7 @@ class AdoptReposBuilderTest : BaseTest() { runBlocking { val adoptRepository = AdoptRepositoryStub() val adoptRepo = spyk(adoptRepository) - val adoptReposBuilder = AdoptReposBuilder(adoptRepo, UpdatableVersionSupplierStub()) + val adoptReposBuilder = AdoptReposBuilder(adoptRepo) adoptReposBuilder.incrementalUpdate(emptySet(), before) { if (before.repos[11]?.releases?.nodeList?.first()?.id == it.id) { @@ -139,10 +140,10 @@ class AdoptReposBuilderTest : BaseTest() { } @Test - fun `release is not updated when binary count does not change`(adoptRepository: AdoptRepository, versionSupplier: VersionSupplier) { + fun `release is not updated when binary count does not change`(adoptRepository: AdoptRepository) { runBlocking { val adoptRepo = spyk(adoptRepository) - val adoptReposBuilder = AdoptReposBuilder(adoptRepo, versionSupplier) + val adoptReposBuilder = AdoptReposBuilder(adoptRepo) adoptReposBuilder.incrementalUpdate(emptySet(), before) { GHReleaseMetadata( diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/BaseTest.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/BaseTest.kt index aebee413f..76572aa1f 100644 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/BaseTest.kt +++ b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/BaseTest.kt @@ -5,7 +5,6 @@ import io.mockk.junit5.MockKExtension import io.mockk.mockk import net.adoptium.api.testDoubles.InMemoryApiPersistence import net.adoptium.api.testDoubles.InMemoryInternalDbStore -import net.adoptium.api.testDoubles.UpdatableVersionSupplierStub import net.adoptium.api.v3.dataSources.APIDataStoreImpl import net.adoptium.api.v3.dataSources.UpdaterHtmlClient import net.adoptium.api.v3.dataSources.UrlRequest @@ -27,7 +26,7 @@ import org.junit.jupiter.api.extension.ExtendWith @EnableAutoWeld @ExtendWith(MockKExtension::class) -@AddPackages(value = [InMemoryApiPersistence::class, InMemoryInternalDbStore::class, APIDataStoreImpl::class, UpdatableVersionSupplierStub::class]) +@AddPackages(value = [InMemoryApiPersistence::class, InMemoryInternalDbStore::class, APIDataStoreImpl::class]) @EnableAlternatives abstract class BaseTest { diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/DockerStatsInterfaceTest.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/DockerStatsInterfaceTest.kt index 2eb616b07..077f921ed 100644 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/DockerStatsInterfaceTest.kt +++ b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/DockerStatsInterfaceTest.kt @@ -4,7 +4,6 @@ import io.mockk.coEvery import io.mockk.mockk import kotlinx.coroutines.runBlocking import net.adoptium.api.testDoubles.InMemoryApiPersistence -import net.adoptium.api.testDoubles.UpdatableVersionSupplierStub import net.adoptium.api.v3.DownloadStatsInterface import net.adoptium.api.v3.TimeSource import net.adoptium.api.v3.dataSources.DefaultUpdaterHtmlClient @@ -62,7 +61,7 @@ class DockerStatsInterfaceTest : BaseTest() { DockerDownloadStatsDbEntry(baseTime, 100, "a-stats-repo", 8, JvmImpl.hotspot) ) - val downloadStatsInterface = DownloadStatsInterface(apiPersistanceMock, UpdatableVersionSupplierStub()) + val downloadStatsInterface = DownloadStatsInterface(apiPersistanceMock) var stats = downloadStatsInterface.getTrackingStats(10, source = StatsSource.github, featureVersion = 8) assertEquals(70, stats[0].total) diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/MongoTest.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/MongoTest.kt index c823b2c99..6c1f57900 100644 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/MongoTest.kt +++ b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/MongoTest.kt @@ -6,7 +6,6 @@ import de.flapdoodle.embed.mongo.transitions.Mongod import de.flapdoodle.embed.mongo.transitions.RunningMongodProcess import de.flapdoodle.embed.process.runtime.Network import de.flapdoodle.reverse.transitions.Start -import net.adoptium.api.testDoubles.UpdatableVersionSupplierStub import net.adoptium.api.v3.dataSources.APIDataStoreImpl import org.jboss.weld.junit5.auto.AddPackages import org.jboss.weld.junit5.auto.EnableAutoWeld @@ -15,7 +14,7 @@ import org.junit.jupiter.api.BeforeAll import org.slf4j.LoggerFactory @EnableAutoWeld -@AddPackages(value = [APIDataStoreImpl::class, UpdatableVersionSupplierStub::class]) +@AddPackages(value = [APIDataStoreImpl::class]) abstract class MongoTest { companion object { 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..b7f62f1f2 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 @@ -1,16 +1,37 @@ package net.adoptium.api import kotlinx.coroutines.runBlocking -import net.adoptium.api.testDoubles.UpdatableVersionSupplierStub import net.adoptium.api.v3.dataSources.ReleaseVersionResolver +import net.adoptium.api.v3.dataSources.UpdaterHtmlClient +import net.adoptium.api.v3.dataSources.UrlRequest import net.adoptium.api.v3.models.ReleaseInfo +import org.apache.http.HttpResponse import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test class ReleaseVersionResolverTest : BaseTest() { private fun getReleaseVersionResolver(): ReleaseVersionResolver { - return ReleaseVersionResolver(UpdatableVersionSupplierStub()) + return ReleaseVersionResolver( + + object : UpdaterHtmlClient { + override suspend fun get(url: String): String? { + return getTipMetadata() + } + + fun getTipMetadata(): String { + return """ + DEFAULT_VERSION_FEATURE=15 + DEFAULT_VERSION_INTERIM=0 + """.trimIndent() + } + + override suspend fun getFullResponse(request: UrlRequest): HttpResponse? { + return null + } + } + + ) } @Test diff --git a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/testDoubles/UpdatableVersionSupplierStub.kt b/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/testDoubles/UpdatableVersionSupplierStub.kt deleted file mode 100644 index f63238649..000000000 --- a/adoptium-updater-parent/adoptium-api-v3-updater/src/test/kotlin/net/adoptium/api/testDoubles/UpdatableVersionSupplierStub.kt +++ /dev/null @@ -1,27 +0,0 @@ -package net.adoptium.api.testDoubles - -import jakarta.annotation.Priority -import jakarta.enterprise.context.ApplicationScoped -import jakarta.enterprise.inject.Alternative -import net.adoptium.api.v3.dataSources.UpdatableVersionSupplier - -@Priority(1) -@Alternative -@ApplicationScoped -class UpdatableVersionSupplierStub : UpdatableVersionSupplier { - override suspend fun updateVersions() { - // NOP - } - - override fun getTipVersion(): Int? { - return 15 - } - - override fun getLtsVersions(): Array { - return arrayOf(8, 11) - } - - override fun getAllVersions(): Array { - return listOf(8, 10, 11, 12, 18).toList().toTypedArray() - } -}