Skip to content

Commit

Permalink
Using longs to parse identifiers instead of ints to avoid issues when…
Browse files Browse the repository at this point in the history
… parsing timestamp-sized values (#230)
  • Loading branch information
severn-everett committed Apr 5, 2024
1 parent 7640bcf commit 810d265
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
14 changes: 7 additions & 7 deletions src/main/java/org/semver4j/internal/Comparator.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,9 @@ private int preReleaseCompare(@NotNull final Semver other) {

private int compareIdentifiers(@NotNull final String a, @NotNull final String b) {
try {
int aAsInt = Integer.parseInt(a);
int bAsInt = Integer.parseInt(b);
return compareIdentifiers(aAsInt, bAsInt);
long aAsLong = Long.parseLong(a);
long bAsLong = Long.parseLong(b);
return compareIdentifiers(aAsLong, bAsLong);
} catch (NumberFormatException e) {
//ignore
}
Expand All @@ -89,8 +89,8 @@ private int compareIdentifiers(@NotNull final String a, @NotNull final String b)
String[] tokenArr1 = a.split(digitsExtract);
String[] tokenArr2 = b.split(digitsExtract);
if (tokenArr1[0].equals(tokenArr2[0])) {
int digitA = Integer.parseInt(tokenArr1[1]);
int digitB = Integer.parseInt(tokenArr2[1]);
long digitA = Long.parseLong(tokenArr1[1]);
long digitB = Long.parseLong(tokenArr2[1]);
return compareIdentifiers(digitA, digitB);
}
}
Expand All @@ -104,8 +104,8 @@ private int compareIdentifiers(@NotNull final String a, @NotNull final String b)
return 0;
}

private int compareIdentifiers(int a, int b) {
return Integer.compare(a, b);
private int compareIdentifiers(long a, long b) {
return Long.compare(a, b);
}

private boolean isBothContainsDigits(@NotNull final String a, @NotNull final String b) {
Expand Down
4 changes: 3 additions & 1 deletion src/test/java/org/semver4j/SemverTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -487,6 +487,7 @@ static Stream<Arguments> greaterThan() {
arguments("1.0.0-rc11", "1.0.0-rc3", true),
arguments("1.0.0-beta11", "1.0.0-beta3", true),
arguments("1.0.0-rc.3.x-13", "1.0.0-rc.3.x-3", true),
arguments("1.24.1-A-20240111143214", "1.24.1-A-20240111143213", true),

arguments("1.0.0-alpha", "1.0.0-alpha.1", false),
arguments("1.0.0-alpha.1", "1.0.0-alpha.beta", false),
Expand All @@ -500,7 +501,8 @@ static Stream<Arguments> greaterThan() {
arguments("0.0.1", "5.0.0", false),
arguments("1.0.0-alpha.12.ab-c", "1.0.0-alpha.12.ab-c", false),
arguments("1.0.0-rc3", "1.0.0-rc11", false),
arguments("1.0.0-beta11", "1.0.0-rc3", false)
arguments("1.0.0-beta11", "1.0.0-rc3", false),
arguments("1.24.1-A-20240111143213", "1.24.1-A-20240111143214", false)
);
}

Expand Down

0 comments on commit 810d265

Please sign in to comment.