// which is above the requested version).
//
// 2. In case every platform is below the requested, choose the one
// with the highest version number.
JavaPlatform bestMatch = null;
for (JavaPlatform platform: platforms) {
Specification platformSpecification = platform.getSpecification();
if (platformSpecification == null) {
continue;
}
if (!specName.equalsIgnoreCase(platformSpecification.getName())) {
continue;
}
SpecificationVersion thisVersion = platformSpecification.getVersion();
if (thisVersion == null) {
continue;
}
if (bestMatch == null) {
bestMatch = platform;
}
else {
SpecificationVersion bestVersion = bestMatch.getSpecification().getVersion();
// required version is greater than the one we currently have
if (version.compareTo(bestVersion) > 0) {
// Replace if this platform has a greater version number
if (bestVersion.compareTo(thisVersion) < 0) {
bestMatch = platform;
}
}
else {
// Replace if this platform is still above the requirement
// but is below the one we currently have.
if (version.compareTo(thisVersion) < 0
&& thisVersion.compareTo(bestVersion) < 0) {
bestMatch = platform;
}
}
}
}
if (bestMatch == null) {
return JavaPlatform.getDefault();
}
SpecificationVersion bestMatchVersion = bestMatch.getSpecification().getVersion();
String higherOrLower = version.compareTo(bestMatchVersion) < 0
? "higher"
: "lower";