This is an automated email from the ASF dual-hosted git repository. rzo1 pushed a commit to branch opennlp-2.x in repository https://gitbox.apache.org/repos/asf/opennlp.git
commit 81865595192757538aafb08f706457c33312b70f Author: Richard Zowalla <[email protected]> AuthorDate: Thu Oct 16 08:20:10 2025 +0200 Ignore extra patch version component in version parsing --- .../src/main/java/opennlp/tools/util/Version.java | 15 +++++++++++---- .../src/test/java/opennlp/tools/util/VersionTest.java | 8 ++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/opennlp-tools/src/main/java/opennlp/tools/util/Version.java b/opennlp-tools/src/main/java/opennlp/tools/util/Version.java index 20474a7f..7fd7de0d 100644 --- a/opennlp-tools/src/main/java/opennlp/tools/util/Version.java +++ b/opennlp-tools/src/main/java/opennlp/tools/util/Version.java @@ -161,16 +161,23 @@ public class Version { int versionEnd; if (indexFirstDash == -1) { versionEnd = version.length(); - } - else { + } else { versionEnd = indexFirstDash; } - boolean snapshot = version.endsWith(SNAPSHOT_MARKER); + String revision = version.substring(indexSecondDot + 1, versionEnd); + final int indexPatchVersionDot = revision.indexOf('.'); + if (indexPatchVersionDot != -1) { + // A rare extra patch version is present (e.g., 2.5.6.1), which OpenNLP normally doesn't use. + // Since it’s equivalent to the latest revision, we ignore it here. + revision = revision.substring(0, indexPatchVersionDot); + } + + final boolean snapshot = version.endsWith(SNAPSHOT_MARKER); return new Version(Integer.parseInt(version.substring(0, indexFirstDot)), Integer.parseInt(version.substring(indexFirstDot + 1, indexSecondDot)), - Integer.parseInt(version.substring(indexSecondDot + 1, versionEnd)), snapshot); + Integer.parseInt(revision), snapshot); } /** diff --git a/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java b/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java index 8921a932..3133777f 100644 --- a/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java +++ b/opennlp-tools/src/test/java/opennlp/tools/util/VersionTest.java @@ -44,6 +44,14 @@ public class VersionTest { Version.parse("1.5.2-SNAPSHOT")); } + @Test + void testParseProjectVersionWithRarePatchVersion() { + // A rare extra patch version is present (e.g., 2.5.6.1), which OpenNLP normally doesn't use. + // Since it’s equivalent to the latest revision, it should be equal to 2.5.6 + Assertions.assertEquals(new Version(2, 5, 6, false), + Version.parse("2.5.6.1")); + } + @Test void testParseInvalidVersion() { try {
