Skip to content

Commit

Permalink
Merge pull request #6590 from mbien/jdk-downloader-current-version-fi…
Browse files Browse the repository at this point in the history
…x_delivery

JDK Downloader: fix current GA/EA values
  • Loading branch information
neilcsmith-net committed Oct 23, 2023
2 parents 5e712c8 + e75a765 commit 9eb9def
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 35 deletions.
70 changes: 38 additions & 32 deletions java/java.disco/src/org/netbeans/modules/java/disco/Client.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@
import io.foojay.api.discoclient.pkg.Pkg;
import io.foojay.api.discoclient.pkg.Scope;
import io.foojay.api.discoclient.util.PkgInfo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.Future;
import java.util.stream.Collectors;

import static java.util.Arrays.asList;
import java.util.stream.Stream;

public class Client {

Expand All @@ -54,6 +54,8 @@ public class Client {
private List<MajorVersion> majorVersions;
private List<Distribution> distributions;

private Client() {}

public static Client getInstance() {
return INSTANCE;
}
Expand All @@ -65,35 +67,51 @@ private synchronized DiscoClient getDisco() {
return client;
}

private Client() {
public synchronized List<MajorVersion> getAllMajorVersions() {
if (majorVersions == null) {
majorVersions = Collections.unmodifiableList(new ArrayList<>(getDisco().getAllMajorVersions(true)));
}
return majorVersions;
}

public synchronized List<Distribution> getDistributions() {
if (distributions == null) {
distributions = Collections.unmodifiableList(
getDisco().getDistributions().stream()
.filter(distribution -> distribution.getScopes().contains(Scope.BUILD_OF_OPEN_JDK))
.filter(distribution -> distribution.getScopes().contains(Scope.PUBLIC))
.collect(Collectors.toList())
);
}
return distributions;
}

/**
* Returns all major versions which are still maintained (excludes EA releases).
*/
public synchronized final List<MajorVersion> getAllMaintainedMajorVersions() {
if (majorVersions == null) {
majorVersions = getDisco().getAllMajorVersions(
Optional.of(true), // maintained
Optional.of(false), // EA
Optional.of(true), // GA
Optional.of(false)); // build
}
return majorVersions;
public Stream<MajorVersion> getAllMaintainedMajorVersions() {
return getAllMajorVersions().stream()
.filter(v -> v.isEarlyAccessOnly() != null && !v.isEarlyAccessOnly())
.filter(MajorVersion::isMaintained);
}

public synchronized MajorVersion getLatestLts(boolean includeEA) {
return getDisco().getLatestLts(includeEA);
public MajorVersion getLatestGAVersion() {
return getAllMaintainedMajorVersions()
.findFirst()
.orElse(new MajorVersion(21));
}

public synchronized MajorVersion getLatestSts(boolean includeEA) {
return getDisco().getLatestSts(includeEA);
public MajorVersion getLatestEAVersion() {
return getAllMajorVersions().stream()
.filter(v -> v.isEarlyAccessOnly() != null && v.isEarlyAccessOnly())
.findFirst()
.orElse(new MajorVersion(21));
}

public synchronized List<Pkg> getPkgs(final Distribution distribution, final VersionNumber versionNumber, final Latest latest, final OperatingSystem operatingSystem,
final Architecture architecture, final ArchiveType archiveType, final PackageType packageType,
final boolean ea, final boolean javafxBundled) {
return getDisco().getPkgs(asList(distribution),
return getDisco().getPkgs(List.of(distribution),
versionNumber,
latest,
operatingSystem,
Expand All @@ -104,26 +122,14 @@ public synchronized List<Pkg> getPkgs(final Distribution distribution, final Ver
packageType,
javafxBundled,
/*directlyDownloadable*/ true,
ea ? asList(ReleaseStatus.GA, ReleaseStatus.EA) : asList(ReleaseStatus.GA),
ea ? List.of(ReleaseStatus.GA, ReleaseStatus.EA) : List.of(ReleaseStatus.GA),
TermOfSupport.NONE,
asList(Scope.PUBLIC),
List.of(Scope.PUBLIC),
null
);
}

public synchronized List<Distribution> getDistributions() {
if (distributions == null) {
distributions = Collections.unmodifiableList(getDisco().getDistributions()
.stream()
.filter(distribution -> distribution.getScopes().contains(Scope.BUILD_OF_OPEN_JDK))
.filter(distribution -> distribution.getScopes().contains(Scope.PUBLIC))
.collect(Collectors.toList())
);
}
return distributions;
}

public synchronized Optional<Distribution> getDistribution(String text) {
public Optional<Distribution> getDistribution(String text) {
return getDistributions().stream()
.filter(d -> d.getSynonyms().contains(text))
.findFirst();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,11 +128,11 @@ public Result(List<Integer> versionNumbers, Map<Integer, TermOfSupport> versionN
//loading stuff when ui shown
submit(() -> {
int minVersion = 6;
int maxVersion = discoClient.getLatestSts(true).getAsInt();
int current = discoClient.getLatestSts(false).getAsInt();
int maxVersion = discoClient.getLatestEAVersion().getAsInt();
int current = discoClient.getLatestGAVersion().getAsInt();

// limit to LTS + current
Map<Integer, TermOfSupport> maintainedVersions = discoClient.getAllMaintainedMajorVersions().stream()
Map<Integer, TermOfSupport> maintainedVersions = discoClient.getAllMaintainedMajorVersions()
.filter(v -> v.getAsInt() >= minVersion && v.getAsInt() <= current) // defensive filter, the API returned an EA JDK as released
.filter(v -> v.getAsInt() == current || v.getTermOfSupport() == TermOfSupport.LTS)
.collect(Collectors.toMap(MajorVersion::getAsInt, MajorVersion::getTermOfSupport));
Expand Down

0 comments on commit 9eb9def

Please sign in to comment.