Make the Adoptopenjdk package type look at the Temurin repo first for latest assets (#522)
* Make the Adoptopenjdk package type look at the Temurin repo first for latest assets
* Address Copilot code review comments
- Use strict equality (===, !==) instead of loose equality (==, !=) for all comparisons
- Properly handle caught errors with instanceof type narrowing before accessing properties
- Only fall back to legacy AdoptOpenJDK for specific version-not-found errors
- Rethrow unexpected errors to avoid masking real issues (network failures, rate limits, etc.)
- Fix error message check to match actual error text ('No matching version found')
- Remove unnecessary undefined check since method return type is never undefined
- Add @internal JSDoc annotation to TemurinDistribution.findPackageForDownload()
- Update tests to properly mock Temurin lookup failures for fallback behavior testing
- Rebuild dist files
* Always fall back to legacy AdoptOpenJDK but log all Temurin failures
- Change error handling to gracefully fall back for all errors, not just version-not-found
- Log version-not-found errors as notices with migration guidance
- Log other Temurin failures as debug messages for troubleshooting
- Improves resilience: users always get a result even if Temurin API has issues
- Maintains visibility: failures are still logged for debugging
* Fixes from review
* Fixes from review
* Fixes from review
* Regenerate dist
This commit is contained in:
Vendored
+44
-2
@@ -77815,17 +77815,54 @@ const path_1 = __importDefault(__nccwpck_require__(71017));
|
||||
const semver_1 = __importDefault(__nccwpck_require__(11383));
|
||||
const base_installer_1 = __nccwpck_require__(59741);
|
||||
const util_1 = __nccwpck_require__(92629);
|
||||
const installer_1 = __nccwpck_require__(18579);
|
||||
var AdoptImplementation;
|
||||
(function (AdoptImplementation) {
|
||||
AdoptImplementation["Hotspot"] = "Hotspot";
|
||||
AdoptImplementation["OpenJ9"] = "OpenJ9";
|
||||
})(AdoptImplementation || (exports.AdoptImplementation = AdoptImplementation = {}));
|
||||
class AdoptDistribution extends base_installer_1.JavaBase {
|
||||
constructor(installerOptions, jvmImpl) {
|
||||
constructor(installerOptions, jvmImpl, temurinDistribution = null) {
|
||||
super(`Adopt-${jvmImpl}`, installerOptions);
|
||||
this.jvmImpl = jvmImpl;
|
||||
if (temurinDistribution !== null &&
|
||||
jvmImpl !== AdoptImplementation.Hotspot) {
|
||||
throw new Error('Only Hotspot JVM is supported by Temurin.');
|
||||
}
|
||||
// Only use the temurin repo for Hotspot JVMs
|
||||
this.temurinDistribution =
|
||||
temurinDistribution !== null && temurinDistribution !== void 0 ? temurinDistribution : (jvmImpl === AdoptImplementation.Hotspot
|
||||
? new installer_1.TemurinDistribution(installerOptions, installer_1.TemurinImplementation.Hotspot)
|
||||
: null);
|
||||
}
|
||||
findPackageForDownload(version) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
if (this.jvmImpl === AdoptImplementation.Hotspot) {
|
||||
core.notice("AdoptOpenJDK has moved to Eclipse Temurin https://github.com/actions/setup-java#supported-distributions please consider changing to the 'temurin' distribution type in your setup-java configuration.");
|
||||
}
|
||||
if (this.jvmImpl === AdoptImplementation.Hotspot &&
|
||||
this.temurinDistribution !== null) {
|
||||
try {
|
||||
return yield this.temurinDistribution.findPackageForDownload(version);
|
||||
}
|
||||
catch (error) {
|
||||
// Log the failure but always fall back to legacy AdoptOpenJDK for resilience
|
||||
const errorMessage = error instanceof Error ? error.message : String(error);
|
||||
if (error instanceof Error && error.name === 'VersionNotFoundError') {
|
||||
core.notice('The JVM you are looking for could not be found in the Temurin repository, this likely indicates ' +
|
||||
'that you are using an out of date version of Java, consider updating and moving to using the Temurin distribution type in setup-java.');
|
||||
}
|
||||
else {
|
||||
// Log other errors for debugging but gracefully fall back
|
||||
core.debug(`Temurin lookup failed: ${errorMessage}. Falling back to AdoptOpenJDK API.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
// failed to find a Temurin version, so fall back to AdoptOpenJDK
|
||||
return this.findPackageForDownloadOldAdoptOpenJdk(version);
|
||||
});
|
||||
}
|
||||
findPackageForDownloadOldAdoptOpenJdk(version) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const availableVersionsRaw = yield this.getAvailableVersions();
|
||||
const availableVersionsWithBinaries = availableVersionsRaw
|
||||
@@ -78223,7 +78260,9 @@ class JavaBase {
|
||||
parts.push(`(showing first ${maxVersionsToShow} of ${availableVersions.length} versions, enable debug mode to see all)`);
|
||||
}
|
||||
}
|
||||
return new Error(parts.join('\n'));
|
||||
const error = new Error(parts.join('\n'));
|
||||
error.name = 'VersionNotFoundError';
|
||||
return error;
|
||||
}
|
||||
setJavaDefault(version, toolPath) {
|
||||
const majorVersion = version.split('.')[0];
|
||||
@@ -80195,6 +80234,9 @@ class TemurinDistribution extends base_installer_1.JavaBase {
|
||||
super(`Temurin-${jvmImpl}`, installerOptions);
|
||||
this.jvmImpl = jvmImpl;
|
||||
}
|
||||
/**
|
||||
* @internal For cross-distribution reuse only. Not intended as a public API.
|
||||
*/
|
||||
findPackageForDownload(version) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const availableVersionsRaw = yield this.getAvailableVersions();
|
||||
|
||||
Reference in New Issue
Block a user