Skip to content
This repository was archived by the owner on Feb 4, 2023. It is now read-only.

Commit cb07a77

Browse files
committed
[refactoring] updated comparison function for checking java requirements // refs #47
added a lot of tests for comparison
1 parent d8c6b09 commit cb07a77

2 files changed

Lines changed: 229 additions & 89 deletions

File tree

src/universalJavaApplicationStub

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -414,33 +414,58 @@ function is_valid_requirement_pattern() {
414414
}
415415

416416

417+
# function 'pad_version_to_semver()'
418+
#
419+
# adds '.0' minor/bugfix version parts to a short version number (e.g. 9, 10)
420+
# to make it semver compatible
421+
#
422+
# @param1 a Java version number in short form (9, 10, etc.)
423+
# @return a right-padded semver version number (e.g. 9.0.0, 10.0.0)
424+
################################################################################
425+
function pad_short_version_to_semver() {
426+
local java_ver=$1
427+
if [[ ${java_ver} =~ ^[0-9]+$ ]] ; then
428+
java_ver="${java_ver}.0.0"
429+
elif [[ ${java_ver} =~ ^[0-9]+\.0$ ]] ; then
430+
java_ver="${java_ver}.0"
431+
fi
432+
echo ${java_ver}
433+
}
434+
435+
417436
# function 'does_java_version_satisfy_requirement()'
418437
#
419438
# this function checks whether a given java version number
420439
# satisfies the given requirement
421440
#
422-
# @param1 the java major version (6, 7, 8, 9, etc.)
423-
# @param2 the java requirement (1.6, 1.7+, etc.)
424-
# @return an exit code: 0 (satiesfies), 1 (does not), 2 (error)
441+
# the function returns with an error (exit 2) if the requirement string
442+
# is not supported
443+
#
444+
# @param1 the java version in plain form as 'java -version' returns it
445+
# @param2 the java requirement (1.6, 1.7+, 9, 9.1*, 9.2.3, etc.)
446+
# @return an exit code: 0 (satiesfies), 1 (does not), 2 (invalid requirement)
425447
################################################################################
426448
function does_java_version_satisfy_requirement() {
427-
local java_ver=$1
449+
# update short versions (9, 9.1, 10) to semver form (9.0.0, 9.1.0, 10.0.0)
450+
local java_ver=$(pad_short_version_to_semver $1)
428451
local java_req=$2
429452

430-
# matches requirements with * modifier
453+
if ! is_valid_requirement_pattern ${java_req} ; then
454+
return 2
455+
456+
# requirement ends with * modifier
431457
# e.g. 1.8*, 9*, 9.1*, 9.2.4*, 10*, 10.1*, 10.1.35*
432-
if [[ ${java_req} =~ ^[0-9]+(\.[0-9]+)*\*$ ]] ; then
433-
# remove last char (*) from requirement string for comparison
434-
java_req_num=${java_req::${#java_req}-1}
435-
if [ ${java_ver} == ${java_req_num} ] ; then
458+
elif [[ ${java_req} == *\* ]] ; then
459+
# use the * modifier from the requirement string as wildcard for a 'starts with' comparison
460+
if [[ ${java_ver} == ${java_req} ]] ; then
436461
return 0
437462
else
438463
return 1
439464
fi
440465

441-
# matches requirements with + modifier
466+
# requirement ends with * modifier
442467
# e.g. 1.8+, 9+, 9.1+, 9.2.4+, 10+, 10.1+, 10.1.35+
443-
elif [[ ${java_req} =~ ^[0-9]+(\.[0-9]+)*\+$ ]] ; then
468+
elif [[ ${java_req} == *+ ]] ; then
444469
local java_req_num=$(get_comparable_java_version ${java_req})
445470
local java_ver_num=$(get_comparable_java_version ${java_ver})
446471
if [ ${java_ver_num} -ge ${java_req_num} ] ; then
@@ -451,17 +476,17 @@ function does_java_version_satisfy_requirement() {
451476

452477
# matches standard requirements without modifier
453478
# e.g. 1.8, 9, 9.1, 9.2.4, 10, 10.1, 10.1.35
454-
elif [[ ${java_req} =~ ^[0-9]+(\.[0-9]+)*$ ]] ; then
479+
else
480+
# java version equals requirement string (1.8.0_45 == 1.8.0.45)
455481
if [ ${java_ver} == ${java_req} ] ; then
456482
return 0
483+
# java version starts with requirement string (1.8.0_45 == 1.8)
484+
elif [[ ${java_ver} == ${java_req}* ]] ; then
485+
return 0
457486
else
458487
return 1
459488
fi
460489

461-
# not matching any of the above patterns
462-
# results in an error
463-
else
464-
return 2
465490
fi
466491
}
467492

0 commit comments

Comments
 (0)