Skip to content

Commit

Permalink
Revert "Fix #785 Allow dynamically updating latest version"
Browse files Browse the repository at this point in the history
  • Loading branch information
johnoliver authored Jul 17, 2024
1 parent d06977e commit 9aa7164
Show file tree
Hide file tree
Showing 27 changed files with 128 additions and 258 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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(
Expand Down Expand Up @@ -288,7 +284,7 @@ class DownloadStatsInterface {
}

private suspend fun getGithubStats(): List<GitHubDownloadStatsDbEntry> {
return versionSupplier.getAllVersions()
return Versions.versions
.mapNotNull { featureVersion ->
dataStore.getLatestGithubStatsForFeatureVersion(featureVersion)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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 {
Expand All @@ -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
Expand Down Expand Up @@ -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)
}
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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<Release> {
return ReleaseFilter(
versionSupplier.getLtsVersions(),
releaseType,
featureVersion,
releaseName,
vendor,
versionRange,
lts,
jvm_impl
)
}
}

private class ReleaseFilter(
private val ltsVersions: Array<Int>,
class ReleaseFilter(
private val releaseType: ReleaseType? = null,
private val featureVersion: Int? = null,
private val releaseName: String? = null,
Expand All @@ -48,7 +19,7 @@ private class ReleaseFilter(
) : Predicate<Release> {
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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!!)

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -420,7 +419,7 @@ constructor(

): List<BinaryAssetView> {
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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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?,
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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?,
Expand All @@ -41,7 +39,7 @@ open class PackageEndpoint @Inject constructor(
project: Project?,
cLib: CLib?
): List<Release> {
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()
}
Expand Down Expand Up @@ -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<Release> {
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()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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])
Expand All @@ -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
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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

Expand All @@ -128,7 +128,7 @@ class AssetsResourceReleaseNamePathTest : FrontendTest() {
@Test
fun `missing release_name 400s`() {
assertThrows<BadRequestException> {
AssetsResource(apiDataStore, ReleaseEndpoint(apiDataStore, releaseFilterFactory), releaseFilterFactory)
AssetsResource(apiDataStore, ReleaseEndpoint(apiDataStore))
.get(
Vendor.adoptopenjdk,
null,
Expand All @@ -146,7 +146,7 @@ class AssetsResourceReleaseNamePathTest : FrontendTest() {
@Test
fun `missing vendor 400s`() {
assertThrows<BadRequestException> {
AssetsResource(apiDataStore, ReleaseEndpoint(apiDataStore, releaseFilterFactory), releaseFilterFactory)
AssetsResource(apiDataStore, ReleaseEndpoint(apiDataStore))
.get(
null,
"foo",
Expand Down
Loading

0 comments on commit 9aa7164

Please sign in to comment.