Skip to content

Commit c574e43

Browse files
committed
fix: use compatible tool definition version lookups
1 parent d5c473b commit c574e43

1 file changed

Lines changed: 23 additions & 5 deletions

File tree

fcli-core/fcli-tool/src/main/java/com/fortify/cli/tool/_common/helper/ToolRegistrationHelper.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.ArrayList;
1818
import java.util.Arrays;
1919
import java.util.List;
20+
import java.util.Optional;
2021

2122
import com.fortify.cli.common.exception.FcliSimpleException;
2223
import com.fortify.cli.common.util.FcliDataHelper;
@@ -292,7 +293,7 @@ private File findExistingInstallation(String requestedVersion) {
292293

293294
// If specific version requested, look for matching installation
294295
if (!"any".equals(requestedVersion)) {
295-
var optionalVersionDescriptor = toolDefinition.getOptionalVersionOrDefault(requestedVersion);
296+
var optionalVersionDescriptor = getOptionalVersionOrDefault(toolDefinition, requestedVersion);
296297
if (optionalVersionDescriptor.isPresent()) {
297298
var requestedVersionDescriptor = optionalVersionDescriptor.get();
298299
var installation = ToolInstallationDescriptor.load(toolName, requestedVersionDescriptor);
@@ -388,7 +389,7 @@ private String detectVersionFromBinary(File toolBinary, File installDir) {
388389
private void validateVersionMatch(ToolDefinitionVersionDescriptor versionDescriptor, String requestedVersion) {
389390
if (!definitionsOptional) {
390391
var toolDefinition = getRequiredDefinition();
391-
var optionalRequestedVersion = toolDefinition.getOptionalVersionOrDefault(requestedVersion);
392+
var optionalRequestedVersion = getOptionalVersionOrDefault(toolDefinition, requestedVersion);
392393
if (optionalRequestedVersion.isEmpty()) {
393394
throw new FcliSimpleException(
394395
String.format("Requested version %s not found in tool definitions. Detected version is %s",
@@ -411,7 +412,7 @@ private void validateVersionMatch(ToolDefinitionVersionDescriptor versionDescrip
411412
// No definitions → accept any detected version for requestedVersion
412413
return;
413414
}
414-
var optionalRequestedVersion = toolDefinition.getOptionalVersionOrDefault(requestedVersion);
415+
var optionalRequestedVersion = getOptionalVersionOrDefault(toolDefinition, requestedVersion);
415416
if (optionalRequestedVersion.isEmpty()) {
416417
// Without definitions, we already returned; if we got here, behave like strict
417418
// mode
@@ -444,7 +445,7 @@ private ToolInstallationDescriptor createAndSaveInstallation(File toolBinary, To
444445

445446
private File findMatchingCandidate(List<File> candidates, String requestedVersion) {
446447
var toolDefinition = ToolDefinitionsHelper.getToolDefinitionRootDescriptor(toolName);
447-
var optionalVersionDescriptor = toolDefinition.getOptionalVersionOrDefault(requestedVersion);
448+
var optionalVersionDescriptor = getOptionalVersionOrDefault(toolDefinition, requestedVersion);
448449
if (optionalVersionDescriptor.isEmpty()) {
449450
throw new FcliSimpleException(
450451
String.format("Requested version %s not found in tool definitions", requestedVersion));
@@ -512,7 +513,7 @@ private ToolDefinitionVersionDescriptor resolveVersionDescriptor(String detected
512513
String normalizedVersion = toolDefinition.normalizeVersionFormat(detectedVersion);
513514

514515
// Try to find matching version in tool definitions using normalized version
515-
return toolDefinition.getOptionalVersion(normalizedVersion)
516+
return getOptionalVersion(toolDefinition, normalizedVersion)
516517
.orElseGet(() -> {
517518
// Version not found in definitions, create synthetic descriptor with normalized
518519
// version
@@ -524,6 +525,23 @@ private ToolDefinitionVersionDescriptor resolveVersionDescriptor(String detected
524525
});
525526
}
526527

528+
private Optional<ToolDefinitionVersionDescriptor> getOptionalVersionOrDefault(
529+
ToolDefinitionRootDescriptor toolDefinition, String versionOrAlias) {
530+
try {
531+
return Optional.of(toolDefinition.getVersionOrDefault(versionOrAlias));
532+
} catch (FcliSimpleException e) {
533+
return Optional.empty();
534+
}
535+
}
536+
537+
private Optional<ToolDefinitionVersionDescriptor> getOptionalVersion(
538+
ToolDefinitionRootDescriptor toolDefinition, String versionOrAlias) {
539+
try {
540+
return Optional.of(toolDefinition.getVersion(versionOrAlias));
541+
} catch (FcliSimpleException e) {
542+
return Optional.empty();
543+
}
544+
}
527545
private ToolDefinitionRootDescriptor getRequiredDefinition() {
528546
return ToolDefinitionsHelper.getToolDefinitionRootDescriptor(toolName);
529547
}

0 commit comments

Comments
 (0)